В Камаев - Технологии программирования
- Название:Технологии программирования
- Автор:
- Жанр:
- Издательство:Издательство «Высшая школа»
- Год:2006
- Город:Москва
- ISBN:5-06-004870-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
В Камаев - Технологии программирования краткое содержание
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».
Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
if L2 then Switch:= 2;
if L3 then Switch:= 3;
…
case Switch of
1:begin
{Действие при L1=True}
…
end;
2:begin
{Действие при L2=True}
…
end;
3:begin
{Действие при L3=True}
…
end;
else
begin
{Вывод сообщения об ошибочном кодировании модуля}
…
end;
end; {End of Case}
Рассмотрим запись вариантов кодирования структуры АЛЬТЕРНАТИВА на языке программирования С.
Конструкция для одной альтернативы:
if (L)
{
/* Действие при L ≠ 0*/
…
}
Конструкция для двух альтернатив:
if (L)
{
/* Действие при L ≠ 0*/
…
}
else
{
/*Действие при L = 0*/
…
}
Первый вариант конструкции для нескольких альтернатив (ВЫБОРА)
if (L1)
{
/* Действие при L1 ≠ 0* /
…
}
else if (L2)
{
/* Действие при L2 ≠ 0*/
…
}
else if(L3)
{
/* Действие при L3 ≠ 0*/
…
}
…
}
Второй вариант конструкции для нескольких альтернатив (ВЫБОРА):
Selector = 0;
L1 =…;
L2 =…;
L3 =…;
…
if (L1) Selector = 1;
else if (L2) Selector = 2;
else if (L3) Selector = 3;
…
switch (Selector)
case 1:
/*Действие при L1 ≠ 0*/
…
break;
case 2:
/*Действие при L2 ≠ 0*/
…
break;
case 3:
/* Действие при L3 ≠ 0*/
…
break;
default:
/*Вывод сообщения об ошибочном кодировании модуля*/
exit (-1);
} /*Конец switch*/
Правая конструкция соответствует очень сложной логике условий. В простейших случаях допускается упрощенная кодировка (первый пример на Pascal, второй на Q:
if a > b then x:=y+3 else x:=у+6; {Язык Pascal}
if (a > b) x=y+3; else x=у+6; /*Язык С*/
ВЫБОР из двух и более АЛЬТЕРНАТИВ нельзя кодировать при помощи вложения других структур простейших АЛЬТЕРНАТИВ из-за большой вероятности ошибок.
Порядок детализации структур АЛЬТЕРНАТИВА:
1) в зависимости от количества альтернативных действий записываются все операторы структуры;
2) определяются сами альтернативные действия как СЛЕДОВАНИЯ;
3) записываются логические условия альтернативных действий;
4) проверяется информационная согласованность логических условий и действий;
5) на нескольких текстовых примерах осуществляется проверка. ПОВТОРЕНИЯ в программировании называются циклами.
Обычно стандартом проекта предусмотрен ряд конструкций циклов. Неуниверсальный ЦИКЛ-ДО имеет две конструкции и используется для задания заданного числа повторений. Рассмотрим их запись на языке программирования Pascal.
Конструкция по возрастанию:
for i:=3 to 5 do begin
{тело цикла i=3,4,5}
…
end;
Конструкция по убыванию:
for i:=5 downto 3 do begin
{тело цикла i=5,4,3}
…
end;
Рассмотрим запись вариантов кодирования структуры неуниверсальный ЦИКЛ-ДО на языке программирования С.
Конструкция по возрастанию:
for (i=3; i<=5; i++)
{
/*тело цикла i=3,4,5*/
…
}
Конструкция по убыванию:
for (i=5; i>=3; i-)
{
/*тело цикла i=5,4,3*/
…
}
Здесь i — переменная цикла. Обычно эти циклы не требуют после кодирования дополнительного тестирования.
Универсальные циклы имеют конструкции ЦИКЛ-ДО и ЦИКЛ-ПОКА. Их запись на языке Pascal приведена ниже:
Универсальный ЦИКЛ-ПОКА:
{Подготовка}
while L do
begin
{Тело цикла}
…
end;
Универсальный цикл ЦИКЛ-ДО:
{Подготовка}
repeat
{Тело цикла}
…
until L;
Ниже приведена запись тех же структур на языке С:
Универсальный ЦИКЛ-ПОКА:
/* Подготовка*/
while (L)
{
/*Тело цикла*/
…
}
Универсальный ЦИКЛ-ДО:
/* Подготовка*/
do
{
/* Тело цикла */
…
}
while (!(L))
Здесь L логическое выражение. Его значение True является условием продолжения выполнения ЦИКЛ-ПОКА или условием окончания выполнения ЦИКЛ-ДО. Подготовка и тело цикла являются СЛЕДОВАНИЯМИ. Тело цикла выполняется столько раз, сколько и весь цикл. Признаком ЦИКЛ-ПОКА является возможность не выполнения тела цикла ни разу. При равноценности из двух конструкций ЦИКЛ-ДО и ЦИКЛ-ПОКА выбирают ту, запись которой короче.
Вообще ЦИКЛ-ДО можно закодировать структурой ЦИКЛ-ПОКА, если в подготовке записать некоторые действия из тела цикла. Из ЦИКЛА-ДО получается ЦИКЛ-ПОКА при его охвате структурой АЛЬТЕРНАТИВА.
Порядок декомпозиции циклов:
1) набирается "пустой" текст оператора цикла;
2) записывается логическое условие продолжения ЦИКЛ-ПОКА или завершения ЦИКЛ-ДО (при этом выявляется переменная цикла);
3) декомпозируется то действие тела цикла, которое изменяет логическое условие до невыполнения условия ЦИКЛ-ПОКА или до выполнения условия ЦИКЛ-ДО;
4) детализируется СЛЕДОВАНИЕ "Подготовка цикла";
5) детализируется оставшееся действие тела цикла как СЛЕДОВАНИЕ;
6) проводится проверка информационной согласованности всех элементов цикла;
7) проводится проверка правильности работы цикла с помощью безмашинного расчета трассы выполнения тестов с трехкратным (или более), однократным выполнением цикла и вообще без выполнения.
В текстах программ может использоваться еще одна вычислительная структура — РЕКУРСИЯ. Признаком этой структуры является наличие рекурсивных формул и вычислений. Все, что делает рекурсия, можно реализовать при помощи циклов и массивов. Однако если язык программирования допускает рекурсию, то ее использование может сократить код программы. Рекурсия всегда очень тщательно комментируется.
5.9. МЕТОДИКА РАЗРАБОТКИ АЛГОРИТМОВ ПРОГРАММ
Рассмотрим порядок работы по методике разработки структурированных алгоритмов на следующем примере. Пусть требуется разработать программу решения квадратного уравнения, которое имеет вид
ax 2 + bx + c = 0.
Работа по методике начинается с полного уяснения задачи. Этому помогает применение модели "черного ящика", разработка форм вводимой и выводимой информации программы (например, в виде макетов экрана), подготовка первичных тестовых примеров. Не существует для всего многообразия задач точный порядок выполнения этих действий. Данные действия часто приходится выполнять параллельно, переключаясь с действия на действие по мере исчерпания возможностей развития текущего действия и открытия возможностей развития очередного действия.
Читать дальшеИнтервал:
Закладка: