
- •1. Среда программирования. Трансляция, компоновка и отладка программ
- •2. Виды и характеристики языков программирования
- •3. Виды программных ошибок.
- •4. Описание языка Си (используемые символы, константы, идентификаторы, ключевые слова, комментарии). Используемые символы
- •Константы
- •Ключевые слова
- •Использование комментариев в тексте программы
- •5. Идентификаторы и ключевые слова языка Си. Идентификаторы и ключевые слова
- •6. Структура программы на языке Си.
- •7. Категории типов данных (символьные, целые, с плавающей точкой).
- •Целый тип данных
- •Данные плавающего типа
- •8. Символьные и целые типы данных. Данные целого типа (integer)
- •Данные символьного типа (char)
- •9. Вещественные типы данных (с плавающей точкой). Данные вещественного типа (float, double)
- •10. Преобразование типов (явное и неявное).
- •11. Использование модификаторов при декларации типов данных.
- •12. Кодовая таблица ascii. Системы счисления. Классификация и преобразование символов. Классификация и преобразование символов
- •13. Константы. Целые константы. Константы с плавающей точкой. Символьные константы. Строки. Null.
- •1 Целые Константы
- •2 Константы с Плавающей Точкой
- •3 Символьные Константы
- •4 Строки
- •14. Условный оператор if.
- •15. Тернарная условная операция ?:.
- •16. Оператор выбора альтернатив switch.
- •17. Составление циклических алгоритмов. Операторы цикла с предусловием и с постусловием. Оператор while
- •Оператор do while
- •18. Оператор цикла с предусловием и коррекцией for. Оператор for
- •19. Операторы перехода (break, continue, return, goto). Оператор break
- •Оператор continue
- •Оператор return
- •Оператор goto
- •20. Унарные операции.
- •21. Аддитивные и мультипликативные операции.
- •22. Операции сдвига.
- •23. Поразрядные операции.
- •24. Операции отношения.
- •25. Логические операции.
- •26. Операция присваивания.
- •27. Сокращенная запись операции присваивания.
- •28. Стандартная библиотека языка Си. Математические функции.
- •29. Стандартная библиотека языка Си. Функции работы со строками.
- •Int strcmp(const char *s1, const char *s2);
- •Integer atoi(const char *nptr);
- •30. Стандартная библиотека языка Си. Ввод данных.
- •31. Стандартная библиотека языка Си. Вывод данных.
- •32. Управляющая строка функций ввода/вывода.
- •33. Препроцессор. Директивы #include, #define.
- •Директивы препроцессора и указания компилятору
- •34. Графический режим. Функции черчения и заполнения.
- •35. Графический режим. Функции вывода текста, функции управления цветом. (outtext, outtextxy, setbkcolor, setcolor, settextjustify, settextstyle, textheight, textwidth)
- •Цвет фона и вычерчивания
- •36. Одномерные массивы. Инициализация одномерных массивов. Ввод и инициализация массива символов.
- •37. Многомерные массивы. Инициализация многомерных массивов.
- •38. Структуры
- •Пример 5
- •39. Объединения.
- •Пример 2
- •40. Перечисления.
- •41. Работа с файлами. Типы открытия файлов (текстовый и бинарный). Дескриптор файла ("указатель на файл"). Режимы работы с файлами.
- •42. Работа с файлами. Открытие файла в различных режимах и закрытие файла.
- •Int feof(file *stream);
- •Int fclose(file *stream);
- •Коды, устанавливающие режимы доступа к открываемым файлам
- •Void rewind(file *stream);
- •Int fsetpos(file *stream, const fpos_t *pos);
- •45. Указатели. Указатели и адреса объектов. Указатели и массивы. Указатели.
- •Указатели и адреса объектов
- •Указатели и массивы
- •46. Операции с указателями: присваивание адреса, определение значения по адресу, присваивание указателей
- •1. Присваивание адреса.
- •3. Сравнение указателей.
- •48. Работа с динамической памятью. Динамические массивы.
- •49. Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.
- •3. Вызов функции
- •50. Функции. Типы передачи параметров функции (по значению, по адресу).
- •Передача переменных
- •Передача векторных параметров
- •51. Функции. Переменные в качестве параметров функций.
- •52. Функции. Массивы в качестве параметров функций.
- •53. Указатели на функции.
- •1. Среда программирования. Трансляция, компоновка и отладка программ
- •2. Виды и характеристики языков программирования
49. Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.
При программировании на языке C++ функция – это основное понятие, без которого невозможно обойтись. Каждая программа обязательно должна включать функцию с именем main (главная функция). Именно эта функция обеспечивает точку входа в откомпилированную программу.
В отличие от других языков программирования высокого уровня в языке С нет деления на процедуры, подпрограммы и функции, здесь вся программа строится только из функций.
Программа на языке С++ - это совокупность функций, каждая из которых должна быть определена или описана до ее использования в конкретном модуле.
Функция - это совокупность объявлений и операторов, обычно предназначенная для решения определенной задачи. Каждая функция должна иметь имя, которое используется для ее объявления, определения и вызова.
Структура функции
С использованием функций в языке СИ связаны три понятия :
определение функции (описание действий, выполняемых функцией),
описание функции (задание формы обращения к функции),
вызов функции.
1. Определение функции – это ее полная реализация.
Определение задает:
1) заголовок функции, в котором определены
тип возвращаемого значения,
имя функции,
типы и число формальных параметров
2) тело функции, содержащее объявления переменных и операторы, определяющие действие функции.
Определение может располагаться в любом месте программы. Если определение некоторой функции располагается ниже точки ее вызова или в другом файле, то для данной функции выше точки ее вызова обязательно должен быть помещен прототип.
-
Пример1:
int min(int a, int b)
{
if (a<b) return a;
else return b;
}
Очень важным оператором тела функции является оператор возврата в точку вызова:
return выражение;
или
return;
Выражение в операторе return определяет возвращаемое функцией значение. В теле функции может быть несколько операторов return. Тип возвращаемого значения определяется типом функции. Если функция не возвращает значения, т.е. имеет тип void, то выражение в операторе return опускается. В этом случае не обязателен и сам оператор return в теле функции.
В языке СИ нет требования, чтобы определение функции обязательно предшествовало ее вызову. Определения используемых функций могут следовать за определением функции main, перед ним, или находится в другом файле.
Однако для того, чтобы компилятор мог осуществить проверку соответствия типов передаваемых фактических параметров типам формальных параметров до вызова функции нужно поместить объявление (прототип) функции.
При обращении к функции формальные параметры заменяются фактическими. В С++ должно быть полное соответствие параметров по типам. Эта проверка осуществляется на этапе компиляции. В связи с этим необходимо, чтобы в модуле до первого обращения к функции было помещено либо ее определение, либо ее описание.
2. Объявление (прототип) функции имя функции, тип возвращаемого значения, типы и число формальных параметров. Прототип является предварительным объявлением данных функции:
- имени функции;
- количества и типов параметров;
- типа результата.
Описание (прототип) функции может полностью совпадать с заголовком функции. Основное отличие – наличие точки с запятой в конце описания. В описании могут отсутствовать имена формальных параметров.
Для функции, определенной в примере1, прототип может иметь вид
int min(int a,int b);
или
min(int,int);
Если функция не принимает параметры или ничего не возвращает, то используется ключевое слово void:
void print(void);
При наличии описания вызываемые функции не обязательно должны размещаться в одном файле с вызывающей функцией. В программах на языке СИ широко используются, так называемые, библиотечные функции, т.е. функции предварительно разработанные и записанные в библиотеки. Прототипы библиотечных функций находятся в специальных заголовочных файлах, поставляемых вместе с библиотеками в составе систем программирования, и включаются в программу с помощью директивы #include. При включении библиотечных функций мы используем следующую директиву: #include <имя_файла>. Например, #include <stdio.h>. Имя_файла определяет текстовый (заголовочный) файл, содержащий описание функций. Сами же функции оттранслированы и оформлены в виде объектных модулей и находятся в библиотеке компилятора.
Собственные библиотеки включаются препроцессорной командой #include "имя_файла". Имя заголовочного файла записывается в кавычках в отличие от библиотечных функций, имя которых записывается в угловых скобках. Прототипы функций нужны только на этапе компиляции и не переносятся в объектный модуль. Прототипы тех функций, которые не вызываются в модуле, вообще не используются компилятором.
int min(int a, int b); // описание функции
void main()
{
…
c=min(2,6); // вызов функции
…
}
// определение функции
int min(int a, int b) // заголовок функции
{ // тело функции
if (a<b) return a; // ...
else return b;
}