- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
Тема 5. Программа на языке высокого уровня
5.1. Структура программы и функции
Будем использовать термин базовый язык (kernel language) для обозначения подмножества С++, которое эквивалентно ANSI C, с незначительными расширениями. Он будет включать в себя не объектно-ориентированные расширения языка
Программа на С++ состоит из нескольких файлов двух типов: файлов заголовков (с расширением .h) и файлов кодов (с расширением .cpp).
Файлы заголовков содержат общие составные части программы, например, директивы препроцессора для подключения библиотек языка, объявления типов, определяемых пользователем, определения именных констант, прототипы функций (заголовки функций без тела).
Файлы кодов содержат следующие составные части: определения функций (тексты функций), директивы препроцессора для подключения файлов заголовков, объявления глобальных переменных. Проект программы составляется из файлов кодов, и на этапе компиляции автоматически подключаются соответствующие файлы заголовков. В одном из файлов кодов находится главная функция main(), с которой начинается выполнение программы.
Составные части программы строятся с использованием базовых элементов языка – лексем, к которым относятся ключевые слова, идентификаторы, константы, символы операций и пунктуации.
Комментарии – это тексты, предназначенные для аннотирования программы. Существуют два способа обозначения комментария:
в языке С++: с символов // и до конца строки,
в языке С: с символов /* и до символов */.
Директива препроцессора – это строка, начинающаяся с символа # и заканчивающаяся символом конца строки. Препроцессор выполняет директивы перед фазой компиляции.
Директива #include включает файл в текущий файл.
Пример:
#include <iostream> //подключает библиотеку
#include “lab1_f.h” //подключает файл заголовков
Директива #define определяет макрос.
Синтаксис простых макросов #define (без параметров):
#define идентификатор_макроса последовательность_лексем
Идентификатор макроса в тексте программы заменяется на последовательность лексем.
Пример: #define max_kart 100 //заменяет max_kart на 100
Синтаксис макросов с параметрами:
#define идентификатор_макроса(формальные параметры)
последедовательность_лексем
Синтаксис оператора вызова макроса:
идентификатор_макроса(фактические параметры);.
При вызове макроса происходят две замены. Сначала идентификатор макроса в исходном тексте программы заменяется на последовательность лексем, а затем формальные параметры в теле макроса заменяются значениями фактических параметров оператора вызова макроса.
Директива #undef отменяет определение макроса. Пример:
#undef max_kart //разрывает связь между max_kart и 100.
Директивы условной компиляции вызывают обработку частей программы препроцессором в зависимости от условий. К ним относятся: #if, #ifdef, #ifndef, #else, #elif, #endif.
Синтаксис:
#if (expr1) //Если expr1 истинно, то обрабатывается
{op1;...} //{op1;...} и управление на #endif
[#elif (expr2) //Если expr1 ложно, то управление на
{op2;...}] //#elif и если expr2 истинно, то обрабатывается
//{op2;...} и управление на #endif и т.д.
[#else {opN;...}] //Если все expr ложны, то обрабатывается
#endif //{opN;...}
Символы [] означают необязательную конструкцию.
Директива #ifdef обрабатывает часть программы, если идентификатор, указанный в условии, определен ранее в программе, а директива #ifndef обрабатывает часть программы, если соответствующий идентификатор не определен. В учебной программе директива #ifndef будет использована для блокировки повторного включения файлов заголовков в файлы кодов.
Объявление переменной - это тип данных и имя переменной.
В С++ имеются стандартные (базовые) типы данных:
целые - int, unsignet int, long, unsignet long;
вещественные – float, double, long double;
символьные – char.
Примеры переменных базовых типов:
int kol; //объявление переменной типа int, резервир. 2 байта
float y=0; //объявление и инициализация, резервир. 4 байта
Указатель – это переменная, содержащая адрес другой переменной. Пример объявления и инициализации указателя:
int tabn; int* p; //объявл. переменной и указателя на тип int
p=&tabn; //иниц. указателя адресом tabn, &-опер. взятия адреса
Ссылка – это переменная, которая является альтернативным именем другой переменной. Пример объявления и инициализации:
int tabn; int& r; //объявление переменной и ссылки r
r=tabn; //инициализация ссылки адресом переменной tabn
Массив – это совокупность данных одинакового типа. Пример объявления:
int det[10]; //объявление массива из 10 элементов типа int
float cena [10][20]; //объявление двумерного массива
int kol[]={1,2,3,4,5}; //объявление и инициализация массива
Именные константы – это переменные, не изменяющие своего значения. Пример объявления:
const int max_kart=100;
Структура – это совокупность данных разного типа .
. Пример объявления:
struct tip_karta //объявление типа - структура tip_karta
{
char tabn[10]; //3 поля структуры
char fio[30];
float oklad;
}; //символ (;) – обязателен, память не резервируется
tip_karta zap; //объявл. переменной типа структура tip_karta