- •Тема 1. Технология программирования. Основные понятия и подходы
- •1.1 Технология программирования и основные этапы ее развития
- •1.1 Проблемы разработки сложных программных систем (пс)
- •1.2 Блочно-иерархический подход к созданию сложных систем (сс)
- •1.4 Жизненный цикл и этапы разработки программного обеспечения
- •1.5 Оценка качества процессов создания программного обеспечения
- •Тема 2. Основы теории программирования
- •2.1 Понятие технологичности программного обеспечения
- •Диалоговые программы
- •2.2 Модули и их свойства
- •2.3 Основные понятия программирования. Средства описания структурных алгоритмов
- •Описание алгоритма с помощью естественного языка
- •Описание алгоритма с помощью блок-схемы
- •Описание алгоритма с помощью алгоритмических языков
- •2.4 Стиль оформления программы
- •Тема 3. Программирование на языке высокого уровня Pascal
- •3.1 Введение
- •3.2 Основные понятия языка Pascal
- •3.3 Операторы ввода-вывода данных
- •Простые типы данных
- •Структурированные типы данных
- •Работа с текстовыми файлами
- •Другие типы данных
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.5 Выражения, операнды, операции
- •Порядок вычисления выражений
- •3.6 Операторы языка Простые операторы
- •Структурные операторы
- •Работа с массивами
- •3.6 Подпрограммы
- •Процедуры
- •Функции
- •Рекурсивные подпрограммы
- •Параметры и аргументы
- •Стандартные процедуры и функции
- •3.7 Списки: основные виды и способы реализации
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
- •Задания для студентов заочной формы обучения по курсу «Технология программирования (ТеПр)»
- •Вопросы для экзамена по курсу «Технология программирования»
- •1. Технология программирования и основные этапы ее развития
Структурные операторы
Структурные операторы — это конструкции, построенные по определенным правилам из других операторов. К структурным операторам относятся:
составной оператор;
условный оператор;
операторы выбора;
операторы цикла;
оператор доступа with.
Составной оператор представляет собой группу из произвольного числа любых последовательно выполняемых операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end. Формат составного оператора:
begin
<оператор_1>;
<оператор_2>;
. . .
<оператор_ n >;
end ;
Независимо от числа входящих в него операторов, составной оператор воспринимается как единое целое и может располагаться в любом месте программы, где допускается наличие оператора. Наиболее часто составной оператор используется в условных операторах и операторах цикла.
Составные операторы могут вкладываться друг в друга, при этом на глубину вложенности составных операторов ограничений не накладывается.
Условный оператор обеспечивает выполнение или невыполнение некоторых операторов в зависимости от соблюдения определенных условий. Условный оператор в общем случае предназначен для организации разветвления программы. Формат условного оператора:
if <условие> then <оператор_1> [ else <оператор_2>];
Условие представляет собой выражение логического типа. Оператор работает следующим образом: если условие истинно (имеет значение true ), то выполняется оператор_1, в противном случае выполняется оператор_2. Оба оператора могут быть составными.
Условный оператор может быть записан в сокращенной форме, когда слово else и оператор после него отсутствуют.
Для организации разветвлений на три направления и более можно использовать несколько условных операторов, вложенных друг в друга. При этом каждое else соответствует тому then , которое непосредственно ему предшествует. Из-за возможных ошибок следует избегать большой вложенности условных операторов друг в друга.
Задание 7. Составить программу, которая вводит с клавиатуры три целых числа и, если сумма первых двух больше третьего, но меньше 10, выводит на экран первые 2 числа; в противном случае выводит на экран третье число.
Оператор выбора является обобщением условного оператора и позволяет сделать выбор из произвольного числа имеющихся вариантов, то есть организовать разветвления на произвольное число направлений. Этот оператор состоит из выражения, называемого селектором, списка вариантов и необязательной ветви else , имеющей тот же смысл, что и в условном операторе. Формат оператора выбора:
case <Выражение-селектор> of
<Список_1>: <0ператор_1>;
. . .
<Список_ N >: <Оператор_ N >
else <Оператор>;
end ;
Выражение-селектор должно быть порядкового типа. Каждый вариант представляет собой список констант, отделенных двоеточием от относящегося к данному варианту оператора, возможно, составного. Список констант выбора стоит из произвольного количества значений и диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разделитель «..». Тип констант должен соответствовать типу выражения-селектора.
Оператор выбора выполняется следующим образом:
1. вычисляется значение выражения селектора;
2. производится последовательный просмотр вариантов на предмет совпадения значения селектора с константами и значениями из диапазонов соответствующего списка;
3. если для очередного варианта этот поиск успешный, то выполняется оператор этого варианта. После этого выполнение оператора выбора заканчивается;
4. если все проверки оказались безуспешными, то выполняется оператор, стоящий после слова else (при его наличии).
Примеры .
а ) case i of б ) case NumberDay of
1: z:= i+10; 1..5 : strDay:=’Work’;
2: z:= i+100; 6, 7 : strDay:=’Rest’
3: z:= i+100; else strDay:=’ ‘;
end ; end ;
Задание 8. Составить программу, которая при вводе с клавиатуры номера месяца выводит на экран сообщение: «Ученье – свет!» для всех месяцев, кроме июля и августа. Для июля и августа сообщение должно быть: «Ура! Каникулы!». При вводе числа за пределами диапазона 1..12 должно появляться сообщение: «В году 12 месяцев!».
Указание: использовать селектор интервального типа.
Операторы цикла используются для организации циклов (повторов). Цикл представляет собой последовательность операторов, которая может выполняться более одного раза. Группу повторяемых операторов называют телом цикла. Всего имеется три вида операторов цикла:
с параметром;
с предусловием;
с постусловием.
Обычно, если количество повторов известно заранее, то применяется оператор цикла с параметром, в противном случае – оператор с пост- или предусловием. Выполнение оператора цикла любого вида может быть прервано с помощи оператора перехода goto или предназначенной для этих целей процедуры Break, которая передает управление на оператор, следующий за оператором цикла. С помощью процедуры Continue можно задать досрочно t завершение очередного повторения тела цикла, что равносильно передач t управления в конец тела цикла.
Операторы циклов могут быть вложенными друг в друга.
Оператор цикла с параметром
Оператор цикла с параметром имеет два формата:
for <Параметр>:= <Выражение1> to <Выражение2> do <0ператор>;
и
for <Параметр>:= <Выражение1> downto <Выражение2> do <0ператор>;
Параметр цикла представляет собой переменную порядкового типа, которая должна быть определена в том же блоке, где находится оператор цикла; выражение1 и выражение2 являются, соответственно, начальным и конечным значениями параметра цикла и должны иметь тип, совместимый с типом параметра цикла.
Оператор цикла обеспечивает выполнение тела цикла, которым является оператор, расположенный после слова do , до полного перебора всех значений параметра цикла от начального до конечного с соответствующим шагом. Шаг параметра всегда равен 1 для первого формата цикла и -1 – для второго формата. То есть значение параметра последовательно увеличивается или уменьшается на единицу при каждом повторении цикла.
Цикл может не выполниться ни разу, если для цикла for ... to значение начального выражения больше конечного, а для цикла for ... downto значение начального выражения меньше конечного.
Примеры. var i, j: integer; ch: char;
begin
for i:=10 to 14 do write(i:4); writeln;
for j:=14 downto 10 do write(j:4); writeln;
for ch:=’a’ to ‘e’ do write(ch:3);
end;
Результат: 10 11 12 13 14
14 13 12 11 10
a b c d e
Оператор цикла с постусловием
Оператор цикла с постусловием целесообразно использовать в тех случаях, когда тело цикла необходимо выполнить не менее одного раза и заранее неизвестно общее количество повторений цикла. Формат оператора:
Repeat
<0ператор1>;
. . .
<0ператор N >;
until <условие>;
Условие – это выражение логического типа. Операторы, заключенные между словами repeat и until, составляют тело цикла и выполняются до тех пор, пока логическое выражение не примет значение true. То есть тело цикла повторяется при значении логического выражения, равном false. Поскольку условие проверяется в конце цикла, то операторы тела цикла выполняются, как минимум, один раз.
В теле цикла может находиться произвольное число операторов без операторных скобок begin и end . По крайней мере, один из операторов тела цикла должен влиять на значение условия, в противном случае произойдет зацикливание.
Примеры.
а ) d:=1; s:=0; б ) d:=1; s:=0;
repeat repeat
s:=s+d s:=s+d;
until ( d >100); d := d +1;
//бесконечный цикл until ( d >100);
Оператор цикла с предусловием
Оператор цикла с предусловием целесообразно использовать в случаях, когда число повторений тела цикла заранее неизвестно и тело цикла может не выполняться. Во многом этот оператор аналогичен оператору repeat ... until , но проверка условия выполняется в начале оператора. Формат оператора цикла с предусловием:
While <условие> do <0ператор>;
Оператор тела цикла выполняется до тех пор, пока логическое выражение не примет значение false, то есть, в отличие от цикла с постусловием, цикл выполняется при значении логического выражения true.
Пример. i:=30;
While (i<40) do i:=i+1; // если (i>40) ? – ни разу
Write(i); // если (i>10) ? – бесконеч .
Если перед первым выполнением цикла условие не выполняется (значение логического выражения равно false ), то тело цикла вообще не выполняется и происходит переход на оператор, следующий за оператором цикла.
Задание 9. Составить программу для решения методом Крамера СЛАУ 2?2 с произвольными целыми коэффициентами. В случае линейно-зависимых уравнений системы предусмотреть вывод сообщения “Infinitely many solutions”.
Задание 10. Составить программу, которая вводит с клавиатуры целые числа до тех пор, пока их сумма не станет больше 100. Эту сумму и число слагаемых вывести на экран.
Задание 11. Составить программу, которая вычисляет y=sin x при 2?x?4 с шагом h=0,2 и выводит на экран: а) все значения x и sin x; б) только те x и y, для которых sin x<0,2; в) только те x и y, для которых 0,2<sin x<0,6. Указание: использовать селектор символьного типа.
Оператор доступа
Оператор доступа служит для удобной и быстрой работы с составными частями объектов, в том числе с полями записей. Напомним, что для обращения к полю записи необходимо указывать имя записи и имя этого поля, разделенные точкой. Аналогичным путем образуется имя составной части какого-либо объекта, например, формы или кнопки. Оператор доступа имеет следующий основной формат:
with <имя объекта> do <оператор>;
Для обращения к составной части объекта можно не указывать имя этого объекта в операторе, расположенном после слова do, т.к. оно уже задано после слова with .
Пример.
// Составные имена пишутся полностью
Form1.Canvas.Pen.Color := clRed ;
Form1.Canvas.Pen.Width:=5;
Form1.Canvas.Rectangle(10, 10, 100, 100);
Или
WithForm1.Canvas do
begin
Pen.Color:=clRed;
Pen.Width:=5;
Rectangle (10, 10, 100, 100);
end ;
В обоих приведенных примерах на форме красным пером толщиной пять пикселей рисуется прямоугольник. Для обращения к свойствам и методу (процедуре) рисования формы удобно использовать оператор доступа (второй вариант).
