- •1. Основные этапы разработки программных продуктов
- •1.1 Постановка задачи
- •Словесная формулировка
- •Формульная постановка задачи
- •1.2 Создание программного продукта
- •1.2.1.Формирование математической модели
- •Формирование исходных данных
- •Составление расчётных зависимостей
- •Правила формирования математической модели.
- •1.2.2.Алгоритмизация задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •1.2.3. Реализация программного продукта
- •1.2.4. Работа с результатами
- •1.2.5.Анализ результатов решения
- •1.2.6.Принятие решения
- •1.2.7.Составление технической документации
- •1.3.Полная обработки задачи пользователя
- •1.4.Обеспечение эффективности разработки программных продуктов
- •2.5 Идентификаторы
- •2.6 Описание операций
- •2.6.1 Унарные операции
- •2.6.2 Бинарные операции
- •2.6.3 Пунктуаторы
- •Программирование простых ветвлений
- •4.1.5. Программирование задачи
- •Правила составления и использования
- •4.1.5.2. Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Условная операция
- •Технология программирования арифметических циклов
- •Циклы с аналитическим заданием аргумента
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма
- •Оператор цикла с предусловием
- •Правила записи и выполнения
- •Оператор цикла с постусловием
- •Правила записи и выполнения
- •Оператор пошагового цикла for
- •Правила записи и выполнения
- •Программа по алгоритму цикла с предусловием
- •Программа по алгоритму цикла с постусловием
- •Программа по алгоритму цикла с параметром
- •Циклы с табличным заданием аргумента
- •Описание массивов
- •Описатель имя[размер];
- •Обозначение элементов массива
- •Имя[индекс]
- •Описатель имя[разм_1] …[разм_i]… [разм_n];
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Алгоритмизация структурой цикла с предусловием
- •Алгоритмизация структурой цикла с постусловием
- •Алгоритмизация структурой цикла с параметром
- •Программирование задачи
- •Описание массивов
- •Обозначение элементов массива
- •Составление программ решения задачи
- •Улучшение качества программных продуктов
- •Организация ввода-вывода Использование укороченных спецификаторов
- •Ввод переменных
- •Вывод переменных
- •Организация ввода в диалоге
- •Варианты ввода массивов
- •Оформление выводимых величин
- •Управление выполнением программ Использование составных присваиваний
- •Выбор устройства вывода
- •Повторение расчётов
- •Приостановка вывода
- •Очистка экрана
- •Позиционирование курсора
- •Пример улучшения качества
- •Программирование с использованием подпрограмм
- •Имя (фактические параметры)
- •Подпрограмма с одним результатом
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Составление алгоритма решения
- •Программирование задачи
- •Составление алгоритма решения
- •Программирование задачи
- •Подпрограмма с результатом – массивом
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Обработка текстовой информации в Си Символьные строки
- •Определение значения символьной строки
- •Массивы строк
- •Ввод строки
- •Выделение памяти
- •Функции ввода символьной строки
- •Функция ввода символьной строки gets( )
- •Функция ввода символьной строки scanf( )
- •Преобразование символьных строк
- •Функция atoi( )
- •Функция atol( )
- •Функции atof( ) и atold( )
- •Методика ввода числовых данных с использованием функции gets( )
- •Вывод строки
- •Вывод строки функциями printf( ) и fprintf( )
- •Вывод строки функциями puts( ) и fputs( )
- •Перевод чисел в формат символьной строки
- •Обработка символьных строк
- •Определение длины строки
- •Объединение строк
- •Копирование строк
- •Сравнение строк
- •Функции по работе с датой и временем.
- •Структуры.
- •Работа с дисками.
- •Ввод-вывод потока.
- •Открытие потока.
- •Объектно−ориентированное программирование
- •Классы ObjectWindows
- •Приложение коды клавиш
- •Краткий справочник по Си
- •Оператор вывода на принтер
- •Структура оператора
- •Структура оператора
- •Структура оператора
- •Библиографический список
-
Правила записи и выполнения
-
Метка m задаётся пользователем.
-
Оператор, помеченный меткой m, в соответствии с требованиями алгоритма, может располагаться как выше, так и ниже оператора if.
-
При выполнении проверяемого условия (результат - ИСТИНА) управление передаётся оператору goto, который в свою очередь передаёт управление оператору, помеченному меткой m
-
Если результат проверки есть ЛОЖЬ, управление передаётся оператору, записанному непосредственно под if.
Схема выполнения:
if(B) goto m;
Ветвь_НЕТ;
m: . . .
if( .9>=c) goto m4;
y2=15;
n=2;
m4: z=10.;
Полный оператор условного перехода
Структура оператора:
if(P) ветвь_ДА
[ else
ветвь_НЕТ]
if, else- ключевые слова (если, иначе);
P- выражение, подлежащее проверке;
()- ограничители Р;
ветвь_ДА - последовательность операторов, соответствующих выполнению проверяемого условия;
ветвь_НЕТ - простой (составной) оператор, соответствующий невыполнению проверяемого условия;
[]- признак необязательности содержимого
Оператор выполняется следующим образом:
-
вычисляется выражение Р:
-
если Р истинно, выполняются операторы ветви «ДА» и управление ^5дередаётся оператору, записанному под ветвью «НЕТ»;
-
если Р ложно, выполняются операторы ветви «НЕТ», а затем оператор, расположенный под этой ветвью,
Так, фрагмент программы
if(a<d) предписывает проверку логического условия а<=<1 y1=s; и, при выполнении его, вычисление у!=5, а затем n=1; z=к. Если же проверяемое условие не выполняется y1=1 .7; (а>d), будет вычислен у1=1.7, а затем z=k.
z=k;
Правила записи и использования
1. Отсутствие указанных в квадратных скобках элементов приводит к получению укороченного (неполного) оператора условного перехода.
2. В ветви «ДА» количество простых операторов может быть любым. одна ко желательно их оформление в виде одного составного.
3. В ветви «НЕТ» должен быть только один простой (составной) оператор
4. В каждой из ветвей возможно использование других операторов if для проверки дополнительных условий. В этом случае говорят о вложенных операторах if. При записи вложенных if рекомендуется для наглядности сдвигать их вправо от основного.
Множественное ветвление
Для организации ветвления типа «выбор» с любым числом ветвей в зависимости от значения проверяемого целочисленного операнда (выражения), в Си существует специальная конструкция из двух операторов - переключатель (switch) и разрыв (bгеаk). Структура конструкции:
switch (выражение) {
саsе n1:
оператор 1; [bгеаk;]
. . .
саsе ni:
оператор i; [bгеаk;]
. . .
саsе nN:
оператор N; [bгеаk;]
[defaul:
оператор N+1;] }
где switch - (переключатель) ключевое слово, название основного оператора;
выражение - любое с целочисленным результатом;
( ) - ограничители выражения;
саsе - (вариант) ключевое слово;
n1...ni…nN - целая (символьная) константа (метка), обозначающая требуемый вариант;.
: - признак метки;
оператор i; - совокупность (начиная с нуля) простых оператореов,
соответствующих каждому варианту выбора;
default - (по умолчанию) ключевое слово;
{} - оганичители тела оператора switch;
[] - признак необязательности содержимого;
bгеаk; - вспомогательный оператор (разорвать, выйти).
Оператор работает следующим образом
-
вычисляется значение выражения переключения. Результат – целая (символьная) константа;
-
результат последовательно сравнивается с каждой из меток ni в диапазоне от n1 до nМ;
-
если совпадение с одной из меток ni произошло, выполняется соответствующий оператор (i) и оператор bгеаk;, если он имеется, передаёт управление оператору программы, расположенному под закрывающей фигурной скобкой. (При отсутствии bгеаk после оператора i сохраняется естественный выполнения ниже записанных операторов, начиная с (i+1)
-
если метки ni, аналогичной результату вычисления выражения не обнаружено и элемент по умолчанию (default: оператор N+1;) присутствует, управление передается оператору N+1, а затем оператору, расположенному под закрывающей фигурной скобкой. (При отсутствии элемента по умолчанию управление напрямую передается оператору под фигурной скобкой)
Так, фрагменты программ
int i; int i;
. . . . . .
switch(i) switch(i)
{ {
саsе 1: х=1; саsе 1: х=1;
bгеаk; bгеаk;
саsе 2: у=7; саsе 2: у=7;
bгеаk; bгеаk;
саsе 6: z=15; саsе 6: z=15;
bгеаk; bгеаk;
default: }
t=0; s=3;
}
s=3;
предписывают вычисление х, если i = 1, вычисление, у, если i = 2, вычисление z при i = 6, а затем передачу управления на вычисление переменной 5. Если же
i 1, 2, 6, то в левом фрагменте будут вычислены t и z, а в правом фрагменте - только s.
Правила составления и использования
-
Метки ni задаются пользователем произвольно (желательно по нарастанию) и не могут повторяться.
-
В одном операторе switch может быть не более 257 вариантов выбора.
-
Отсутствие операторов bгeak позволяет получить чистую структуру оператора switch. В этом варианте после выбора нужной ветви будут последовательно выполнены все ниже расположенные варианты, включая default, если он имеетется.
-
Элемент по умолчанию может быть не последним в теле оператора switch. При этом, если оператор bгeak в его ветви отсутствует, то будут последовательно выполнены все ниже расположенные варианты.
-
Использование чистого оператора switch при отсутствии некоторых операторов ветвей позволяет выполнять передачу управления на одну ветвь по нескольким разным меткам, записанным выше.
-
Метками оператора goto помечать ключевые слова саsе и default запрещается, т.к. они сами выполняют функцию меток.