- •Оглавление
- •Требования к выполнению работ
- •Лабораторная работа №1. “Вычисление функций с использованием их разложения в степенной ряд”
- •Краткие теоретические сведения
- •Структура программы
- •Константы и переменные
- •Операции
- •Ввод и вывод в стандартном Си
- •Составные операторы
- •Операторы выбора
- •Выражения
- •Ввод и вывод
- •Операторы циклов Цикл с предусловием
- •Цикл с постусловием
- •Цикл с параметром
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа № 2 “Работа с одномерными массивами”
- •Краткие теоретические сведения
- •Определение массива
- •Инициализация массива
- •Указатели и массивы
- •Формирование динамических массивов с использованием операций new и delete
- •Варианты заданий
- •Методические указания
- •Лабораторная работа № 3 “Строки”
- •Краткие теоретические сведения
- •Работа со строками
- •Потоковый ввод-вывод
- •Открытие и закрытие потока
- •Постановка задачи
- •Варианты
- •Лабораторная работа №4 “Функции и массивы”
- •Краткие теоретические сведения
- •Функции
- •Массивы и строки как параметры функций
- •Постановка задачи
- •Варианты
- •Краткие теоретические сведения
- •Перегрузка функции
- •Функции с переменным количеством параметров
- •Постановка задачи
- •Варианты
- •Лабораторная работа №6 “Работа со структурами”
- •Краткие теоретические сведения
- •Блоковый ввод-вывод
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа № 7 “Информационные динамические структуры”
- •Краткие теоретические сведения
- •Постановка задачи
- •Порядок выполнения работы
- •Варианты заданий
- •Содержание отчета
- •Постановка задачи.
- •Библиографический список
Структура программы
Программа на языке C/C++ имеет следующую структуру:
#директивы препроцессора
.........
#директивы препроцессора
функция а ( )
операторы
функция в ( )
операторы
void main ( ) //функция, с которой начинается выполнение программы
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Директивы препроцессора ‑ управляют преобразованием текста программы до ее компиляции. Задача препроцессора ‑ преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с символа #. Например:
#define ‑ указывает правила замены в тексте.
#define ZERO 0.0 ‑ Означает, что каждое использование в программе имени ZERO будет заменяться на 0.0. Это один из способов создания констант. Современные компиляторы для описания констант используют ключевое слово const. Рекомендуется использовать его.
#include< имя заголовочного файла>
Данная директива ‑ предназначена для включения в текст программы текста из каталога «Заголовочных файлов», поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция C/C++ имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.
После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы. Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main ( ). Каждая функция, в том числе и main должна иметь набор параметров, он может быть пустым, тогда в скобках указывается (void).
За заголовком функции размещается тело функции. Тело функции ‑ это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.
Определения - вводят объекты (объект ‑ это именованная область памяти, частный случай объекта - переменная), необходимые для представления в программе обрабатываемых данных. Примером являются:
int y = 10; //именованная константа
float x; //переменная
Описания ‑ уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.
Операторы ‑ определяют действия программы на каждом шаге ее исполнения.
Константы и переменные
Константа ‑ это значение, которое не может быть изменено. Синтаксис языка определяет 5 типов констант:
символы;
константы перечисляемого типа;
вещественные числа;
целые числа;
нулевой указатель (NULL).
Переменные можно изменять. При задании значения переменной в соответствующую ей область памяти помещается код этого значения. Доступ к значению возможен через имя переменной, а доступ к участку памяти - по его адресу. Каждая переменная перед использованием в программе должна быть определена, т. е. ей должна быть выделена память. Размер участка памяти, выделяемой для переменной и интерпретация содержимого зависят от типа, указанного в определении переменной. Простейшая форма определения переменных:
тип список_имен_переменных;
Основные типы данных
тип данных |
название |
размер, бит |
диапазон значений |
unsigned char |
беззнаковый целый длиной не менее 8 бит |
8 |
0.. 255 |
char |
целый длиной не менее 8 бит |
8 |
-128.. 127 |
enum |
перечисляемый |
16 |
-32768.. 32767 |
unsigned int |
беззнаковый целый |
16 |
0.. 65535 |
short int (short) |
короткий целый |
16 |
-32768.. 32767 |
unsigned short |
беззнаковый короткий целый |
16 |
0.. 65535 |
int |
целый |
16 |
-32768.. 32767 |
unsigned long |
беззнаковый длинный целый |
32 |
0.. 4294967295 |
long |
длинный целый |
32 |
-214748348.. 2147483647 |
float |
вещественный одинарной точности |
32 |
3.4Е-38.. 3.4Е+38 |
double |
вещественный двойной точности |
64 |
1.7Е-308.. 1.7Е+308 |
long double |
вещественный максимальной точности |
80 |
3.4Е-4932.. 1.1Е+4932 |
В соответствии с синтаксисом языка переменные автоматической памяти после определения по умолчанию имеют неопределенные значения. Переменным можно присваивать начальные значения, явно указывая их в определениях:
тип имя_переменной = начальное_значение;
Этот прием называется инициализацией. Примеры:
float pi = 3.14, cc=1.3456;
unsigned int year = 1999;
