- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.д.).
- •Символ отображает хранимые данные в виде, пригодном для обработки. Носитель данных не определен. В схемах алгоритмов он предназначен для обозначения ввода-вывода данных в случае использования запоминающего устройства, управляемого процесса.
- •Тема 1. Основные этапы решения задач на ЭВМ
- •Постановка задачи разработки программного обеспечения
- •Анализ формальной постановки задачи
- •Выбор или разработка математической модели и метода решения
- •Разработка алгоритма
- •Базовые структуры алгоритма
- •Тема 2. Жизненный цикл программы. Критерии качества программы.
- •Техническое задание и спецификация программы
- •Разработка проекта программной системы
- •Программирование (кодирование) или программная реализация алгоритмов
- •Тестирование и отладка
- •Эксплуатация и сопровождение
- •Критерии качества программного обеспечения
- •Тема 3. Схемы алгоритмов, данных, программ
- •Символы данных
- •Символы процесса
- •Символы линий
- •Специальные символы
- •Правила применения символов в схемах
- •Правила выполнения соединений
- •Специальные условные обозначения
- •Тема 4. Язык программирования высокого уровня Си
- •Общие сведения о языке Си
- •Алфавит языка Си
- •Грамматика для описания языка, синтаксические диаграммы
- •Структура программы на языке Си
- •Имена объектов в программе
- •Выражения, операции и приоритеты
- •Тема 5. Стандартные типы данных
- •Тема 6. Составные типы данных
- •Данные регулярного типа (массивы)
- •Строки
- •Данные комбинированного типа (структуры)
- •Перечисления
- •Объединения
- •Указатели
- •Тема 7. Представление основных управляющих структур программирования
- •Оператор присваивания
- •Составной оператор
- •Оператор перехода Goto
- •Условный оператор If
- •Оператор выбора switch
- •Операторы цикла while, do – while, for
- •Операторы прерывания циклов
- •Форматированный ввод данных
- •Форматированный вывод данных
- •Преобразование типов
- •Инициализация данных
- •Тема 8. Функции
- •Определение функций в языке Си
- •Вызов функций в языке Си
- •Рекурсивные функции
- •Тема 9. Файлы
- •Тема 10. Приемы программирования. Примеры алгоритмов
- •Алгоритмы сортировки
- •Алгоритмы поиска
- •Динамические структуры данных
- •Линейные списки
- •Стек, очередь, дек
- •Деревья
- •Приложение 1. Стандартные библиотеки языка Си
- •Приложение 2. Примеры реализации алгоритмов
- •Не рекурсивный алгоритм решения задачи Ханойская башня.
- •Рекурсивный алгоритм решения задачи Ханойская башня.
- •Приложение 3. Лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораторная работа №12
- •Список литературы
Пример 23. Величины i,l,d будут явно преобразовываться к указанным в круглых скобках типам.
int i=2; long l=2; double d; float f;
d=(double)i * (double)l; f=(float)d;
Инициализация данных
При объявлении переменной ей можно присвоить начальное значение, присоединяя инициатор к описателю. Инициатор начинается со знака "=" и имеет следующие формы.
Формат 1 = <инициатор>; Формат 2 = { <список инициаторов> };
Формат 1 используется при инициализации переменных основных типов и указателей, а формат 2 - при инициализации составных объектов.
Пример 24. Инициализация переменных.
char tol = 'N'; |
//Переменная tol инициализируется символом 'N'. |
|
const long megabute = (1024 * 1024); |
/*Немодифицируемая переменная megabute |
|
|
инициализируется константным |
|
|
выражением, после чего она не может |
|
|
быть изменена.*/ |
|
static int b[2][2] = {1,2,3,4}; |
/*Инициализируется двухмерный массив b |
|
целых |
величин, элементам массива присваиваются |
|
|
значения из списка.*/ |
|
static int b[2][2] = {{1,2},{3,4}}; |
/*Предыдущая инициализация может |
|
|
быть выполнена следующим образом.*/ |
|
static int b[3[] = {{1,2},{3,4}}; |
/*При инициализации массива можно |
|
|
опустить одну или несколько |
|
|
размерностей.*/ |
|
static int b[2][2] = {{1,2},{3}}; |
/*Если при инициализации указано |
|
|
меньше значений для строк, то |
ставшиеся элементы инициализируются 0,
т.е. элементы первой строки получат
значения 1 и 2, а второй 3 и 0.*/
При инициализации составных объектов, нужно внимательно следить за использованием скобок и списков инициализаторов.
Пример 25. Инициализируется массив структур comp из двух строк и трех столбцов, где каждая структура состоит из двух элементов real и imag.
105
struct complex
{
double real; double imag;
} comp [2][3] = {{{1,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
struct complex comp2 [2][3] = {{1,1},{2,3},{4,5}, {6,7},{8,9},{10,11}};
В этом примере компилятор интерпретирует рассматриваемые фигурные скобки следующим образом:
∙первая левая фигурная скобка − начало составного инициатора для массива comp2;
∙вторая левая фигурная скобка - начало инициализации первой строки массива comp2[0]. Значения 1,1 присваиваются двум элементам первой структуры;
∙первая правая скобка (после 1) указывает компилятору, что список инициаторов для строки массива окончен, и элементы оставшихся структур в строке comp[0] автоматически инициализируются нулем;
∙аналогично список {2,3} инициализирует первую структуру в строке comp[1], а оставшиеся структуры массива обращаются в нули;
∙на следующий список инициализаторов {4,5} компилятор будет сообщать о возможной ошибке так как строка 3 в массиве comp2
отсутствует.
При инициализации объединения задается значение первого элемента объединения в соответствии с его типом.
Пример 26. Инициализируется переменная pers.name.
union tab
{
unsigned char name[10]; int tab1;
} pers = {'A','H','T','O','H'};
Так как это массив, для его инициализации требуется список значений в фигурных скобках. Первые пять элементов массива инициализируются значениями из списка, остальные нулями.
Инициализацию массива символов можно выполнить путем использования строкового литерала.
106