- •Введение
- •Глава 1. Основы.
- •Int main()
- •1.2. Методика создания программ в Microsoft Visual Studio.
- •Void main(){
- •1.3. Ввод-вывод.
- •1.4. Переменные и константы.
- •Int I; // объявление целочисленной переменной
- •42 // Десятичная константа
- •0X42 // шестнадцатеричная константа, начинается с 0х
- •042 // Восьмеричная константа, начинается с 0
- •1.5. Арифметические операции.
- •Void main()
- •1.6. Встроенные функции. Математические функции. Состав math.H.
- •Void main()
- •Int rand(void); // функция используется без аргумента
- •Глава 2. Операторы и выражения.
- •2.1. Логические выражения и операторы
- •2.1.1. Оператор if else
- •If (условие)
- •If (условие)
- •2.1.2. Конструкция if else if
- •Int number;
- •Int number;
- •2.1.3. Условный оператор.
- •2.1.4. Оператор switch.
- •Int dvalue;
- •2.2. Операторы цикла.
- •2.2.1. Оператор for
- •Void main()
- •Int I; // создаем переменную цикла
- •Void main()
- •Int I; // переменную цикла можно определить и вне цикла
- •2.2.2. Изменение шага цикла
- •Void main()
- •2.2.3. Цикл while.
- •2.2.4. Цикл do while
- •Void main()
- •2.3. Операторы break и continue
- •Void main()
- •Void main()
- •2.4. Типичные ошибки при использовании операторов цикла
- •Глава 3. Производные типы данных.
- •3.1. Ссылки и указатели.
- •Int test; // объявили целочисленную переменную
- •Int & s_test; // ошибка! ссылка не связана с переменной
- •Int *p1; // объявлен указатель на целое с именем p1
- •3.2. Массивы и строки.
- •Int z[10]; //массив из 10 целых чисел
- •Int ar[3]; // объявлен целочисленный массив из 3 элементов
- •Int varr[4]; // объявление массива
- •3.2.2. Многомерные массивы.
- •Int z[3][4]; //массив из 12 целых чисел
- •3.2.3. Строки
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •If(strstr(st,st2)) //если подстрока встречается, выводим
- •3.1.5. Динамическое определение одномерных массивов.
- •3.1.6. Динамические двумерные массивы.
- •3.1.7. Указатели, массивы и арифметика указателей.
- •Int tacs[3];
- •Void main()
- •3.2. Структуры
- •Int age; // элементы структуры
- •Int hours;
- •Int mins;
- •Void main()
- •Int hours;
- •Int mins;
- •Void main()
- •4. Функции, определяемые пользователем
- •4.1. Объявление и определение функции
- •Int max(int , int ); // в прототипе достаточно указать только тип и
- •Void main() {
- •Int MyRand(){
- •Int func(){ return 1;} // правильное выражение
- •Int func2(){return 0.146;} // неправильно, 0.146 преобразуется к int с
- •Void swap(int p, int q)
- •Int bigger(int a,int b)
- •4.2. Передача параметров функций
- •5. Заголовочные файлы.
- •6. Работа с файлами
- •6.1 Простой файловый ввод/вывод
- •6.2 Тонкости работы с файлами
- •7.1. Определение классов.
- •Void main()
- •7.2. Как объявлять функции класса?
- •7.3. Конструкторы и деструкторы классов.
- •8. Графика OpenGl.
- •Void callback Draw()
- •Void main()
- •8.1. Создание анимации с помощью библиотеки xgl
- •Приложения Управление выводом
- •Управление шириной вывода
Int MyRand(){
return rand()%6+1; // функция rand возвращает целое от 0 до RAND_MAX
}
Таким образом, общая форма записи функции имеет вид:
имяТипа имяФункции (списокАргументов)
{
операторы;
return значение; // тип возвращаемого значения определяется типом
// функции (имяТипа)
}
Возращаемое значение может быть константой, переменной или выражением более общего типа. Следует только учитывать, что возвращаемое значение должно приводиться к тому типу, которое имеет тип функции. Например,
Int func(){ return 1;} // правильное выражение
double func1(){ return 1;} // правильно, 1 преобразуется к типу double
Int func2(){return 0.146;} // неправильно, 0.146 преобразуется к int с
// потерей точности
Синтаксис языка накладывает ограничения на типы возвращаемых значений. В С++ массив не может быть возвращаемым значением! Все остальные типы годятся для применения. Интересно, что хотя функция в С++ не может возвратить массив непосредственно, но может возвратить массив, как часть структуры.
Если функция выполняет какие-то действия, но не возвращает значения, то ее следует описать как void:
// функция меняет местами значения p и q
Void swap(int p, int q)
{
int t = p;
p = q;
q = t;
}
В функции может использоваться несколько операторов возврата. Выполнение функции прекращается при достижении первого встреченного оператора return. Пример:
Int bigger(int a,int b)
{
if (a>b)
return a; // если a>b, функция заканчивает выполняться здесь
else
return b; // иначе выполнение функции заканчивается здесь
}
О пользе прототипов
Прототип описывает интерфейс функции и облегчает компиляцию программы. Почему? Во-первых, прототип сообщает компилятору о количестве аргументов функции и их типе. Если в вызывающей функции нарушено соответствие между ними, то компилятор выдаст сообщение об ошибке. Во-вторых, прототип содержит указание на тип возвращаемого значения функции, и под него отводится конкретный размер памяти. Без прототипа эти действия были бы затруднены, особенно когда функция размещена в отдельном файле. То же самое относится к случаю, когда функция содержится в какой-либо внешней библиотеке1. Еще одним аргументом «за» прототипирование функций является стиль программирования, принятый в С++. Он требует, чтобы функция main() всегда была первой и определяла структуру всей программы.
4.2. Передача параметров функций
Передача информации в функцию из вызывающей программы может происходить различными способами. Либо при помощи глобальных переменных, либо через параметры. Глобальные переменные видны во всех функциях, за исключением ?????
Глобальные переменные должны быть объявлены перед заголовком функции main. Значения глобальных переменных доступны (????) внутри вызываемых функций. Передача информации в функцию с помощью параметров имеет свои особенности. Как и в большинстве современных языков программирования, передача в функцию переменных из вызывающей функции может происходить по значению и по ссылке. В первом случае в вызываемой функции создаются соответствующие копии переменных, указанных в качестве фактических параметров, а во втором – в функцию передаются адреса фактических параметров.
Упражнения.
1. Реализуйте программу вычисления случайных чисел, пример которой приведен в 4.1. Выведите значение RAND_MAX. Для использования функции rand( ) необходимо подключить заголовочный файл stdlib.h.