- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.д.).
- •Символ отображает хранимые данные в виде, пригодном для обработки. Носитель данных не определен. В схемах алгоритмов он предназначен для обозначения ввода-вывода данных в случае использования запоминающего устройства, управляемого процесса.
- •Тема 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
- •Список литературы
последовательность их вычисления определяется приоритетом операций. По приоритету операции разделяются на четыре уровня (табл.6):
|
Таблица 6. |
|
Операции и их приоритеты |
Операция |
Приоритет |
(), [], -> |
Первый (наивысший) |
!, \^, ++, --, -, (TYPE) * & SIZEOF |
Второй |
*, /, % |
Третий |
+, - |
Четвертый |
<<, >> |
Пятый |
<, >, <=, >= |
Шестой (низший) |
Операции с более высоким приоритетом выполняются в первую очередь, далее выполняются операции с более низким приоритетом. Если же подряд следует несколько операций с равным приоритетом, то последовательность вычислений определяется ассоциативностью, которая у всех операций в Си одинакова – слева направо, кроме операций, имеющих приоритет 2 − они выполняются справа налево. Приведем примеры выражений на языке Си:
∙(a || b) && !c;
∙sin(x*y / 3) / (x+cos(y % 2));
∙((x>2.03) || (x<1.1)) && (y>0).
Тема 5. Стандартные типы данных
Данные – это объекты, которые обрабатываются в программе. В языке Си есть два вида данных: константы и переменные.
Константа – данное, которое не может меняться в процессе работы программы. Тип и значение константы однозначно определяются её изображением в программе. Константы в программе записываются: в виде целых или вещественных чисел; в виде символьных констант; в виде строковых констант; в виде стандартных имен констант; в виде определённых в программе имён констант.
Переменная – данное, которое может меняться в процессе выполнения программы, например путём присваивания ей значения выражения. В тексте программы переменные обозначаются с помощью имён.
64
Впрограмме на языке Си для каждого данного должен быть определён его тип. Тип данного определяет возможные значения данного и допустимые операции, которые можно применять к этим значениям.
Вязыке Си различают понятия "тип данных" и "модификатор типа". Тип данных - это, например, целый, а модификатор - со знаком или без знака. Целое со знаком будет иметь как положительные, так и отрицательные значения, а целое без знака - только положительные значения. В языке Си можно выделить пять базовых типов, которые задаются следующими ключевыми словами:
∙char - символьный;
∙int - целый;
∙float - вещественный;
∙double - вещественный двойной точности;
∙void - не имеющий значения.
Дадим им краткую характеристику:
1.Переменная типа char имеет размер 1 байт, ее значениями являются различные символы из кодовой таблицы, например: 'ф', ':', 'j' (при записи в программе они заключаются в одинарные кавычки).
2.Размер переменной типа int в стандарте языка Си не определен. В большинстве систем программирования размер переменной типа int соответствует размеру целого машинного слова. Например, в компиляторах для 16-разрядных процессоров переменная типа int имеет размер 2 байта. В этом случае знаковые значения этой переменной могут лежать в диапазоне от -32768 до 32767.
3.Ключевое слово float позволяет определить переменные вещественного типа. Их значения имеют дробную часть, отделяемую точкой, например: -5.6, 31.28 и т.п. Вещественные числа могут быть записаны также в форме с плавающей точкой, например: -1.09e+4. Число перед символом "е" называется мантиссой, а после "е" - порядком. Переменная типа float занимает в памяти 32 бита. Она может принимать значения в диапазоне от 3.4е-38 до 3.4e+38.
65
4.Ключевое слово double позволяет определить вещественную переменную двойной точности. Она занимает в памяти в два раза больше места, чем переменная типа float (т.е. ее размер 64 бита). Переменная типа double может принимать значения в диапазоне от 1.7e-308 до 1.7e+308.
5.Ключевое слово void (не имеющий значения) используется для нейтрализации значения объекта, например, для объявления функции, не возвращающей никаких значений.
Объект некоторого базового типа может быть модифицирован. С этой целью используются специальные ключевые слова, называемые модификаторами. В стандарте ANSI языка Си имеются следующие модификаторы типа:
∙
∙
∙
∙
unsigned signed short long
Модификаторы записываются перед спецификаторами типа, например: unsigned char. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:
long а; long int а;
являются идентичными и определяют объект а как длинный целый. Табл. 7 иллюстрирует возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int, float и double), а также показывает размер и диапазон значений объекта (для 16-разрядных компиляторов).
|
|
|
|
Таблица 7. |
|
|
|
|
Типы данных языка Си |
Тип |
Размер в |
Диапазон значений |
Знаковый |
|
|
байтах |
|
|
(может ли хранить |
char |
(битах) |
|
|
отрицательные числа) |
1 (8) |
от -128 |
до 127 |
Да |
|
unsigned char |
1 (8) |
От 0 до 255 |
Нет |
|
signed char |
1 (8) |
от -128 |
до 127 |
Да |
int |
2 (16) |
от -32768 |
до 32767 |
Да |
unsigned int |
2 (16) |
от 0 до 65535 |
Нет |
66
signed int |
2 (16) |
от -32768 |
до 32767 |
Да |
|
short int |
2 (16) |
от -32768 |
до 32767 |
Да |
|
unsigned short int |
2 (16) |
от 0 до 65535 |
Нет |
||
signed short int |
2 (16) |
от -32768 |
до 32767 |
Да |
|
long int |
4 (32) |
от -2147483648 |
до 2147483647 |
Да |
|
unsigned long int |
4 (32) |
от 0 до 4294967295 |
Нет |
||
signed long int |
4 (32) |
от -2147483648 |
до 2147483647 |
Да |
|
float |
4 (32) |
от 3.4е-38 |
до 3.4е+38 |
Нет |
|
double |
8 (64) |
от 1.7-308 |
до 1.7+308 |
Нет |
|
long double |
10 (80) |
от 3.4Е-4932 |
до 3.4Е+4932 |
Нет |
Константы вещественного типа записываются в двух формах: в виде вещественных дробных чисел без десятичного порядка; в виде вещественных чисел с десятичным порядком. Вещественные дробные константы без десятичного порядка представляются синтаксической диаграммой (рис.25).
+ |
. |
|
Цифра1 |
Цифра2 |
|
– |
|
|
Рис. 25. СД представления вещественного числа без десятичного порядка
Где «Цифра1» – цифра (0,1,…, 9) целой части числа; «Цифра2» – цифра дробной части числа.
Пример 12. Вещественные константы без десятичного порядка на языке Паскаль: –2.45, +33.668, 0.04, 0.0453.
Вещественное число с десятичным порядком представляется диаграммой (рис.26):
+ |
. |
|
|
Цифра1 |
Цифра2 |
E |
|
– |
|
|
|
+ |
|
|
|
Цифра3
–
Рис. 26. СД представления вещественного числа с десятичным порядком
67