- •ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ С И С++
- •СОДЕРЖАНИЕ
- •ВВЕДЕНИЕ
- •1. ЛЕКСИКА ЯЗЫКА C
- •1.1. РАЗДЕЛИТЕЛИ
- •1.2. КОММЕНТАРИИ
- •2. ДАННЫЕ И ОПЕРАЦИИ
- •2.1. БАЗОВЫЕ ТИПЫ ДАННЫХ
- •Наименование
- •Диапазон
- •2.2. КОНСТАНТЫ
- •Целые константы
- •Константы с плавающей точкой
- •Символьные константы
- •2.3. ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ И ТИПИЗИРОВАННЫХ КОНСТАНТ
- •2.4. ОДНОМЕРНЫЙ МАССИВ
- •2.5. СТРОКИ, СТРОКОВЫЕ КОНСТАНТЫ
- •2.6. УКАЗАТЕЛИ
- •2.7. ПЕРЕИМЕНОВАНИЯ ТИПОВ
- •2.8. СТРУКТУРЫ
- •2.9. МАССИВЫ СТРУКТУР
- •2.10. МНОГОМЕРНЫЕ МАССИВЫ
- •2.11. ОБЪЕДИНЕНИЕ
- •2.12. ПЕРЕЧИСЛЕНИЕ
- •2.13. БИТОВОЕ ПОЛЕ ( ЗАПИСЬ )
- •3. ОПЕРАЦИИ И ВЫРАЖЕНИЯ
- •3.1. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
- •3.2. ОПЕРАЦИИ СРАВНЕНИЯ
- •3.3. ЛОГИЧЕСКИЕ ОПЕРАЦИИ
- •3.4. ПОБИТОВЫЕ (ПОРАЗРЯДНЫЕ) ОПЕРАЦИИ
- •3.5. ОПЕРАЦИИ ПРИСВАИВАНИЯ
- •3.6. АДРЕСНЫЕ ОПЕРАЦИИ
- •3.7. ДОСТУП К ПОЛЯМ СТРУКТУР, ОБЪЕДИНЕНИЙ И ЗАПИСЕЙ
- •3.8. ДРУГИЕ ОПЕРАЦИИ
- •3.9. ПОРЯДОК ВЫПОЛНЕНИЯ ОПЕРАЦИЙ В ВЫРАЖЕНИИ
- •4. ОПЕРАТОРЫ
- •4.1. ОПЕРАТОР-ВЫРАЖЕНИЕ
- •4.2. ПУСТОЙ ОПЕРАТОР
- •4.3. СОСТАВНОЙ ОПЕРАТОР
- •4.4. УСЛОВНЫЕ ОПЕРАТОРЫ
- •4.5. ОПЕРАТОРЫ ЦИКЛА
- •while( выражение) оператор;
- •do оператор while ( выражение );
- •for( выражение1; выражение2; выражение3 ) оператор;
- •4.6. ОПЕРАТОРЫ ПЕРЕХОДА
- •break;
- •switch
- •continue;
- •goto метка;
- •5. ФУНКЦИИ. КЛАССЫ ПАМЯТИ
- •5.1. ФУНКЦИИ
- •5.2. КЛАССЫ ПАМЯТИ
- •класс памяти
- •ключевое слово
- •существование
- •видимость
- •5.3. ВОЗВРАЩЕНИЕ ЗНАЧЕНИЙ
- •5.4. АРГУМЕНТЫ ФУНКЦИИ
- •6. ФУНКЦИИ ВВОДА С КЛАВИАТУРЫ И ВЫВОДА НА ДИСПЛЕЙ
- •6.1. ФОРМАТИРОВАННЫЙ ВЫВОД
- •6.2. ФОРМАТИРОВАННЫЙ ВВОД
- •6.3. ВВОД СТРОКИ
- •6.4. ВЫВОД СТРОКИ
- •6.5. ВВОД СИМВОЛА
- •6.6. ВЫВОД СИМВОЛА
- •7. ПРЕПРОЦЕССОР
- •7.1. ВКЛЮЧЕНИЕ ФАЙЛОВ
- •7.2. ВЫПОЛНЕНИЕ ПОДСТАНОВОК
- •7.3. УСЛОВНАЯ КОМПИЛЯЦИЯ
- •8. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ, СПИСКИ
- •8.1. ВЫДЕЛЕНИЕ И ОСВОБОЖДЕНИЕ ДИНАМИЧЕСКОЙ ПАМЯТИ
- •8.2. СПИСКИ
- •Рис.1. Структура однонаправленного линейного списка
- •9. ФАЙЛЫ
- •9.1. ОТКРЫТИЕ И ЗАКРЫТИЕ ФАЙЛОВ
- •9.2. ЧТЕНИЕ И ЗАПИСЬ В ФАЙЛ
- •9.3. ПРОИЗВОЛЬНЫЙ ДОСТУП К ФАЙЛУ
- •10. ЛАБОРАТОРНЫЕ РАБОТЫ
- •10.1. МАССИВЫ И СИМВОЛЬНЫЕ СТРОКИ
- •Цель работы
- •Пример выполнения работы
- •Варианты заданий
- •10.2. ФУНКЦИИ
- •Цель работы
- •Пример выполнения работы
- •Варианты заданий
- •10.3. СТРУКТУРЫ И МАССИВЫ СТРУКТУР
- •Цель работы
- •Пример выполнения работы
- •Варианты заданий
- •10.4. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ, СПИСКИ
- •Цель работы
- •Пример выполнения работы
- •Варианты заданий
- •10.5. РАБОТА С ФАЙЛАМИ
- •Цель работы
- •Пример выполнения работы
- •Варианты заданий
- •11. ВВЕДЕНИЕ В C++
- •12. КЛАССЫ
- •12.1. ОБЩИЕ ПОЛОЖЕНИЯ
- •12.2. КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ
- •12.3. СОЗДАНИЕ И ВЫЗОВ ОБЪЕКТОВ
- •12.4. ДРУЖЕСТВЕННЫЕ ФУНКЦИИ
- •12.5. ПЕPЕГPУЖЕННЫЕ ОПЕPАЦИИ И ФУНКЦИИ
- •12.6. ПАРАМЕТРИЗИРОВАННЫЕ КЛАССЫ
- •12.7. ПРЕОБРАЗОВАНИЕ ТИПОВ
- •12.8. СТАТИЧЕСКИЕ КОМПОНЕНТЫ КЛАССА
- •13. ПРОИЗВОДНЫЕ КЛАССЫ, НАСЛЕДОВАНИЕ
- •13.1. ИЕРАРХИЯ КЛАССОВ
- •13.2. ДОСТУП К НАСЛЕДУЕМЫМ КОМПОНЕНТАМ
- •Доступ в базовом классе
- •Модификатор доступа
- •14. ВИРТУАЛЬНЫЕ ФУНКЦИИ
- •14.1. ОБЩИЕ ПОЛОЖЕНИЯ
- •14.2. ВИРТУАЛЬНЫЕ ДЕСТРУКТОРЫ
- •14.3. АБСТРАКТНЫЕ КЛАССЫ
- •15.1. ВЫВОД ДАННЫХ
- •15.2. ВВОД ДАННЫХ
- •15.3. ВВОД-ВЫВОД ДАННЫХ, ОПРЕДЕЛЕННЫХ ПОЛЬЗОВАТЕЛЕМ
- •15.4. РАБОТА С ДИСКОВЫМИ ФАЙЛАМИ
- •15.5. ОБРАБОТКА ИСКЛЮЧЕНИЙ
- •ЛИТЕРАТУРА
– 26 –
puts( имя_строки );
Функция выводит на экран символы, содержащиеся в переменной имя_строки.
char string[25]; gets( string ); puts( string );
6.5. ВВОД СИМВОЛА
Безаргументная функция getchar() возвращает код символа нажатой клавиши. Однако следует помнить, что данная функция использует функцию DOS буферизованного ввода, т.е. символы начнут передаваться в программу только после нажатия клавиши «Enter».
char symb; symb=getchar();
Функция getch() осуществляет ввод символа с позначной активацией (т.е. сразу после нажатия клавиши), и без эхо-печати.
6.6. ВЫВОД СИМВОЛА
рutсhar ( имя );
Вывод на экран вводимых с клавиатуры символов осуществляется следующим образом:
putchar( getch() );
7. ПРЕПРОЦЕССОР
Препроцессор анализирует строки в программе, которые начинаются с символа # и называются директивами. Препроцессор работает до компиляции. Директивы можно разделить на три группы.
7.1. ВКЛЮЧЕНИЕ ФАЙЛОВ
#include <имя_файла.h> #include "имя_файла.h"
С помощью include к программе подключаются заголовочные файлы, которые далее рассматриваются как часть программы. Как правило, с помощью системных заголовочных файлов подключаются библиотеки языка – stdio.h, math.h и т.п. Пользователь может сам написать свой заголовочный файл и занести туда описание своих переменных и функций, которые он использует в различных программах. Все системные заголовочные файлы сосредоточены в системном каталоге include. Первая форма подключения файлов рассчитана именно на этот каталог, вторая предполагает, что файл может храниться в произвольном каталоге. Упомянем некоторые распространенные системные файлы.
Файл string.h обеспечивает работу с символьными строками. При этом наличие символьного нуля в данных обязательно. Если такового нет, то для обработки символьных массивов можно воспользоваться файлом mem.h. В файле ctype.h есть функции для проверки символа simb на букву – isalpha(simb), на знак пунктуации – ispunct(simb) и др. Файл stdlib.h содержит функции преобразования строки в число – atof() и числа типа int в строку. Кроме того, в файле есть полезная функция сортировки qsort(arg1,arg2,arg3,arg4), где arg1 – указатель на сортируемый массив, arg2 – чис-
© 1998 Калачев Д.П., Лутай В.Н.
– 27 –
ло элементов массива, arg3 – размер элементов, arg4 – указатель на функцию сравнения сортировки.
Математические функции сосредоточены в файле math.h. В частности, здесь определены тригонометрические функции, функция-генератор случайных чисел и др.
Для работы с функциями ДОС и специальными функциями предназначены заголовочные файлы dos.h, bios.h, dir.h В частности, функции peek и poke из dos.h предназначены для работы с видеопамятью. В этом же файле определена функция получения системного времени. Используя dir.h можно создать или сменить каталог; bios.h обеспечивает взаимодействие с портами связи, клавиатурой и принтером.
7.2. ВЫПОЛНЕНИЕ ПОДСТАНОВОК
#define имя_подстановки
Пример: константа 20 во всей программе заменит N.
#define N 20 void main() { char string [N];
. . .
}
#define then
Эта подстановка позволяет использовать в программе конструкцию вида if(x>y) then, так как компилятор будет воспринимать then как пробел.
#define boolean int #define TRUE 1 #define FALSE 0
Объединив эти подстановки в файл boolean.h и подключив его к своей программе, можно писать объявления и выражения boolean symb, if(symb==FALSE) и т.п.
Кроме подстановок-констант возможны подстановки, содержащие аргументы и по действию аналогичные функциям.
#define Square(x) ((x)*(x))
. . .
int x=4; int z; z=Square(x);
. . .
7.3. УСЛОВНАЯ КОМПИЛЯЦИЯ
Здесь используются директивы #if, #ifdef, #undef, #else, #endif, которые позволяют изменять текст программы.
Пример:
#if SYS=="IBM" #include <graphics.h> #endif
Если перед этими предложениями была директива #define SYS "IBM", то файл graphics.h будет подключен к программе.
Например, если первой директивой препроцессора была #define M, то записав:
© 1998 Калачев Д.П., Лутай В.Н.