- •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
- •Приложение коды клавиш
- •Краткий справочник по Си
- •Оператор вывода на принтер
- •Структура оператора
- •Структура оператора
- •Структура оператора
- •Библиографический список
-
Оператор пошагового цикла for
Предназначен для реализации в программе полного варианта цикла с параметром – формирование начального и последующих значений параметра цикла, проверка каждого из них на соответствие диапазону изменения с реализацией тела цикла, если условие выполняется, и выходу из цикла в случае его невыполнения.
Структура оператора
for( [нач_выр] ; [усл_выр] ; [выр_прир] )
{
тело
цикла
}
где for – ключевое слово (для);
нач_выр – выражение, задающее начальное значение параметра цикла;
усл_выр – выражение, определяющее проверку условия повторения цикла;
выр_прир – выражение, формирующее текущее значение параметра цикла через предыдущее;
; – разделители выражений;
( ) – ограничители выражений;
[ ] – признак необязательности содержимого;
тело цикла – совокупность операторов, выполнение которых требуется повторять;
{ } – ограничители тела цикла.
Оператор, при наличии всех составляющих, выполняется следующим образом:
-
определяется начальное значение параметра цикла (нач_выр);
-
проверяется его соответствие диапазону счета (усл_выр);
-
если выражение усл_выр истинно (результат не равен нулю):
-
выполняется тело цикла;
-
формируется новое текущее значение параметра (выр_прир);
-
повторяется его проверка в усл_выр;
-
если усл_выр ложно (результат равен нулю):
-
выполнение оператора цикла прекращается;
-
управление передается следующему после тела цикла оператору (осуществляется завершение цикла).
Схема выполнения оператора
for( нач_выр ; усл_выр ; выр_прир )
ЛОЖЬ ИСТИНА
{
тело
цикла
}
Правила записи и выполнения
-
В качестве начального выражения (нач_выр) используются одно простое (последовательное) или несколько (разделенных запятыми) присваиваний, например xi = xn (a=b=c=1.) или xi = xn, y=0., z=2.5, a=b=c=1.
-
Если начальное выражение отсутствует, начальное значение параметра цикла будет определяться содержимым соответствующей переменной (xi). Например, сформированным до входа в цикл:
xi = xn; /* формирование начального значения */
for( ; xi <= xk; xi = xi + dx )
{
. . .
yi = sin( xi );
. . .
}
-
В качестве усл_выр могут использоваться любые выражения Си. Арифметические, например ( sin( b ) + 0.5 ), ( 2*c - d / f ), (a) или простые (составные) логические выражения, например ( а != b ), ( sin( x ) < b ), ( x <= a && x >= b ).
-
Если условное выражение отсутствует, его значение считается истинным – создается бесконечный цикл.
-
Внимание ! Выход из такого цикла невозможен – требуется перезагрузка операционной системы.
Один из вариантов предотвращения подобной ситуации заключается в формировании в теле цикла отрицания условного выражения в виде оператора if со структурой, например if(усл_выр) break;
Реальное использование иллюстрируется фрагментами:
-
for( xi = xn ; ; xi = xi + dx )
{
. . .
if( !( xi <= xk ) )
break;
yi = sin( xi );
. . .
}
for( xi = xn ; ; xi = xi + dx )
{
. . .
if( xi > xk )
break;
yi = sin( xi );
. . .
}
-
В качестве выражения приращения (выр_прир) используются одно или несколько (разделенных запятыми) присваиваний вида xi = ( xi - 1 ), например xi = xi + dx или xi = xi + dx , b=b+2.
-
Если выр_прир отсутствует, текущее значение параметра цикла будет определяться содержимым соответствующей переменной (xi). Если оно не меняется – создается бесконечный цикл.
-
Внимание ! Выход из такого цикла невозможен – требуется перезагрузка операционной системы.
Один из вариантов предотвращения подобной ситуации – формирование закона изменения параметра в теле цикла, например:
for( xi = xn ; xi <= xk ; ) /* заголовок цикла */
{
. . .
yi = sin( xi );
. . .
xi = xi + dx; /* закон изменения параметра*/
}
-
В принципе, нач_выр и выр_прир могут формироваться вне заголовка цикла. Первое – до него, второе – в теле цикла, например:
xi = xn; /* формирование начального значения параметра */
for( ; xi <= xk ; ) /* заголовок цикла */
{
. . .
yi = sin( xi );
. . .
xi = xi + dx; /* закон изменения параметра*/
}
В этом случае оператор for выполняет функции оператора while.
-
Тело цикла оформляется одним оператором (составным или простым).
-
В теле цикла возможно использование специальных операторов break, goto, continue, обеспечивающих искусственный (принудительный) выход из цикла. Оператор break прекращает выполнение цикла и передает управление оператору, записанному непосредственно под телом цикла. Оператор goto m организует выход из цикла с передачей управления оператору, помеченному его меткой. Оператор continue прерывает выполнение тела цикла и возвращает управление заголовку цикла, например:
-
for( ai=an ;
ai > b ;
ai= ai + da )
{
. . .
if( c < ai )
break;
. . .
}
d = 15.;
for( ai=an ;
ai > b ;
ai= ai + da )
{
. . .
if( c < ai )
goto k;
. . .
}
d = 15.;
. . .
k: d=12.;
for( ai=an ;
ai > b ;
ai= ai + da )
{
. . .
if( c < ai )
continue;
. . .
}
d = 15.;
Первый фрагмент предписывает искусственный выход из цикла при выполнении в теле цикла условия c < ai с передачей управления оператору d = 15. Второй – нарушает естественный порядок вычисления тела цикла при c < ai с передачей управления оператору d=12., помеченному меткой k. Третий прерывает выполнение тела цикла по тому же условию, но управление возвращается заголовку цикла.
-
В теле цикла возможно использование других (вложенных) операторов цикла.
Вывод: оператор for позволяет программировать арифметические циклы с параметром, например, представленные схемами рис. 5.6 (блоки 4, 5, 6, 7); рис. 5.7в (блоки 4, 5, 6). При этом задание начального значения параметра, его проверка на соответствие диапазону счета и изменение осуществляются в заголовке цикла (блок 4).
Рассмотренные операторы цикла позволяют реализовать составленные ранее схемы алгоритмов.
-
Внимание ! Используемые в алгоритме переменные Зi и Зi-1 математически представляют текущие и предыдущее значения одной и той же переменной. Поэтому в программе они должны идентифицироваться как одна именованная ячейка (переменная).
Идентификация переменных с учётом сказанного имеет вид табл. 5.2.
Таблица 5.2
Обозначения в алгоритме |
Зн |
Зк |
З |
пн |
Зi |
Зi-1 |
Налi |
N |
Обозначения в программе |
zn |
zk |
dz |
pn |
zi |
zi |
nali |
n |
Составим возможные варианты программ решения задачи с каждым из рассмотренных операторов цикла.