
- •Часть 1
- •18 Сентября 2012 г., протокол № 1
- •Предисловие
- •§ 1. Основные понятия программы
- •1.2. Директива препроцессора #include
- •Структура программы
- •Комментарии
- •Ключевые слова, идентификаторы, переменные
- •§ 2. Ввод, вывод
- •§ 3. Выражения
- •3.1. Константы
- •Непосредственно записать в выражении;
- •3.2. Операции и их приоритет
- •3.3. Операции отношения и логические операции
- •3.4. Операция присваивания
- •§ 4. Программирование ветвлений
- •4.1. Оператор if
- •4.2. Тернарная операция
- •4.3. Оператор выбора switch
- •Г л а в а 2 циклы
- •§ 1. Оператор while
- •§ 2. Оператор break
- •§ 3. Оператор do … while
- •§ 4. Оператор for
- •Г л а в а 3 Введение в массивы
- •§ 1. Основные понятия
- •§ 2. Способы определения массивов
- •§ 3. Вывод массива. Функции printf и cprintf
- •§ 4. Типы задач при работе с массивами
- •Упражнения и тесты
- •Г л а в а 4 модульное программирование. Функции
- •§1. Функции без результатов. Параметры-значения
- •1.1. Примеры. Правила оформления и вызова функций
- •Формальные и фактические параметры
- •Передача параметров по значению
- •§ 2. Функции типа void с результатами
- •2.1. Вычислeниe бeсконeчных сумм
- •2.2. Что такое ссылочный тип
- •2.3. Параметры ссылочного типа
- •§ 3. Функции, отличные от void. Оператор return
- •§ 4. Область действия имён. Локальные и глобальные имена
- •§ 5. Встраиваемые (inline) функции
- •§ 6. Параметры по умолчанию
- •§ 7. Перегрузка функций
- •7. Сравнение функций типа void и отличных от типа void.
- •Г л а в а 5 введение в объектно-оРиентированное программирование
- •§ 1. Первое знакомство с ооп
- •§ 2. Класс. Поля и методы класса
- •§ 3. Создание объектов. Конструктор
- •Упражнения и тесты
- •Оглавление
- •3.1. Константы …………………………………………….………..….........…8
- •Упражнения и тесты …….………………..………………………….…………....19
- •Методы программирования:
- •Лекции, примеры, тесты
- •Пособие для студентов механико-математического факультета
- •В двух частях
- •Часть 1
§ 1. Основные понятия программы
Пример первой программы
Ввести два числа. Если оба положительны, то вычислить их произведение и вывести слово “multiplication:”. Если только одно из них (любое) положительное, а второе неположительное или если оба неположительные, вычислить сумму и вывести слово “sum:”.
В текстовом редакторе набираем
#include <iostream.h>
#include <conio.h>
int main()
{ int a, b, r ; /* Объявление трёх переменных */
/* Вводим два числа с подсказкой. Выводим текст … */
cout<<"The first number ";
cin>>a; /* … и вводим значение переменной а */
cout<<"The second number "; cin>>b;
/* После ввода выводим текст “Result of ”. */
cout<<" Result of ";
if (a>0 && b>0) { r=a*b; cout<<" multiplication: "; }
else { r=a+b; cout<<" sum: "; }
/*После текста “Result of multiplication:” или “Result of sum:” выводим произведение или сумму.*/
cout<<r ; getch(); return 0;
}
1.2. Директива препроцессора #include
В первых двух строках программы записана одна из директив препроцессора (команд препроцессора, директив компиляции или инструкций компилятору). Директива #include предлагает компилятору включить другой исходный файл с указанным именем. В нашем примере подключаются заголовочные файлы стандартной библиотеки ввода, вывода. Другими словами, если мы используем стандартную функцию (или объект стандартного класса), то необходимо узнать (например, из Help или другого источника), в каком файле находится так называемый прототип (заголовок) функции и записать соответствующую директиву. Например, если бы в программе использовали стандартную математическую функцию (например, cos, abs и т. п.), то необходимо было бы записать #include <math.h>.
Некоторые правила использования директивы include:
имя файла заключается в угловые скобки (символы ‘<’ и ‘>’);
в одной директиве можно указать только один файл. Если подключаем несколько файлов, то записываем соответствующее количество директив;
в одной строке можно записать только одну директиву;
каждая из них должна начинаться с символа #;
в конце директивы в отличие от операторов символ “точка с запятой” не пишется;
расширение файла .h можно не указывать. Но для совместимости с системой C++Builder желательно имя файла записывать с расширением.
Другие возможности include и директивы компиляции будут рассмотрены во второй части книги.
Директива include частично похожа на ключевое слово uses языка Turbo Pascal, с помощью которого определяются используемые в программе модули (например, uses crt).
Структура программы
Любая программа на языке C++ состоит из функций, одна из которых — основная (главная) с именем main — является обязательной. С неё всегда начинается выполнение программы. В простейшем случае, как показано в нашем примере, в программе может быть только одна эта функция. На начальном этапе будем всегда использовать приведенный в третьей строке примера вид заголовка основной функции. Текст любой функции, в том числе и main, заключается в фигурные скобки.
Для обеспечения наглядности программы в строке, в которой записана одна из фигурных скобок, не рекомендуется чтолибо писать. Нежелательно размещать операторы так, как это сделано в первой программе, то есть по несколько операторов в одной строке. Для сокращения объёма текста лекций эти рекомендации в данном пособии будут нарушаться.
Прямое назначение функции getch() — ввод символа. В конце программы с её помощью можно выполнить задержку экрана, чтобы можно было проанализировать выведенный на экран результат, пока не нажмём любую клавишу. Эта функция использует заголовочный файл conio.h, указанный в директиве #include.
Если, как в нашем примере, в заголовке основной функции записано ключевое слово int, то программа должна заканчиваться обязательным оператором return 0, который сообщает системе об успешном выполнении программы. Подробно об этом операторе смотри в главе, посвящённой функциям.