Основы программирования на языке Паскаль
|
| |
| |
|Program Sq1; |
|Var A, B, C, D, X1, X2 : Real; |
|Begin |
|Writeln ('Введите коэффициенты квадратного уравнения'); |
|Readln (A,B,C); |
|D:=B*B-4*A*C; |
|If D<0 Then Writeln ('Корней нет! ') |
|Else |
|Begin |
|X1:=(-B+SQRT(D))/2/A; |
|X2:=(-B-SQRT(D))/2/A; |
|Writeln ('X1=', X1:8:3, ' X2=',X2:8:3) |
|End |
|End. |
| Интересно, что в качестве оператора, который выполняется по выполнению|
|или невыполнению условия, может выступать условный же оператор. В этом |
|случае говорят о вложенности условных операторов. Я настоятельно рекомендую|
|при решении такого рода задач составлять блок-схему алгоритма в тетради. |
|Только потом, при составлении программы, вам остается лишь аккуратно |
|прописывать сначала всю Then- часть, а затем переходить к Else- части. |
|Обычно при записи условных операторов на языке Паскаль (особенно при |
|множественных ветвлениях) команды записывают уступом вправо и вниз. Это |
|повышает наглядность, и, поверьте, снижает потери времени на отладку. |
| Для иллюстрации решим еще одну задачу: "решить уравнение вида A*x^2 + |
|B*x + C = 0". Прошу не путать с квадратным уравнением, для которого нам |
|было известно, что коэффициент А не равен нулю. Здесь же коэффициенты могут|
|быть любыми числами. Исходя из элементарных математических рассуждений, |
|получаем следующий алгоритм: |
|[pic] |
|Program Sq2; |
|Var A, B, C, D, X, X1, X2 : Real; |
|Begin |
|Writeln ('Введите коэффициенты уравнения (A, B, C) '); |
|If A=0 Then |
| If B=0 Then |
|If C=0 Then Writeln('X - любое число') |
|Else Writeln('Корней нет! ') |
| Else Begin X:=-C/B; Writeln('X=',X:8:3) End |
|Else |
|Begin |
|D:=B*B-4*A*C; |
|If D<0 Then Writeln ('Корней нет! ') |
|Else |
|Begin |
|X1:=(-B+SQRT(D))/2/A; |
|X2:=(-B-SQRT(D))/2/A; |
|Writeln ('X1=', X1:8:3, ' X2=',X2:8:3) |
|End |
|End |
|End. |
| |
|Цикл. Виды Циклов. |
| Циклом называется многократное повторение однотипных действий. Телом |
|же цикла будем называть те самые действия, которые нужно многократно |
|повторять. |
| Как вы понимаете, повторять одни и те же действия можно и при помощи |
|оператора безусловного перехода. Если записать эти действия в программе |
|одно за другим, а в конце поставить оператор перехода к началу этого блока.|
|Однако таким образом можно получить только программу, которая работает |
|вечно (зацикливается). Этого можно избежать, используя совместно с |
|оператором перехода условный оператор, поставив выполнение перехода в |
|зависимость от выполнения некого условия. Таким образом, мы получим |
|структуру условного перехода и возможность организации конечного цикла. |
|Вообще говоря, так мы можем решить практически любую задачу, требующую |
|реализации циклического алгоритма. Конечно же, при помощи одного только |
|топора можно построить дом. Поставим перед собой вопросы: "А будет ли этот |
|дом красив? Сколько времени и сил можно сэкономить, используя всевозможные |
|специальные инструменты?". Создатель языка Паскаль Никлаус Вирт также |
|задался этими вопросами и решил их в пользу расширения языка тремя |
|специальными возможностями организации циклов. Для чего? - Для удобства, |
|краткости, простоты чтения программы и, не побоюсь этого слова, красоты. |
|Итак, существует три вида цикла, имеющих собственные операторы на языке |
|Паскаль для их записи. Эти виды имеют собственные условные названия: |
|"Пока", "До", "С параметром". Друг от друга они несколько отличаются и |
|используются каждый для своего класса задач. |
| |
|Цикл "ПОКА" |
|Группа операторов, называемая "телом цикла", судя по этой схеме, будет |
|выполняться пока истинно условие цикла. Выход из цикла произойдет, когда |
|условие перестанет выполняться. |
| Если условие ложно изначально, то тело цикла не будет выполнено ни |
|разу. Если условие изначально истинно и в теле цикла нет действий, влияющих|
|на истинность этого условия, то тело цикла будет выполняться бесконечное |
|количество раз. Такая ситуация называется "зацикливанием". Прервать |
|зациклившуюся программу может либо оператор (нажав Ctrl+C), либо аварийный |
|останов самой программы, в случае переполнения переменной, деления на ноль |
|и т.п., поэтому использовать структуру цикла следует с осторожностью, |
|хорошо понимая, что многократное выполнение должно когда-нибудь |
|заканчиваться. |
| На языке Pascal структура цикла "Пока" записывается следующим образом:|
| |
| While <условие> Do <оператор>; |
| Правда, лаконично? По-русски можно прочитать так: "Пока истинно |
|условие, выполнять оператор". Здесь, так же как в формате условного |
|оператора, подразумевается выполнение только одного оператора. Если |
|необходимо выполнить несколько действий, то может быть использован |
|составной оператор. Тогда формат оператора принимает такой вид: |
|While <условие> Do |
|Begin |
|<оператор #1>; |
|<оператор #2>; |
|<оператор #3>; |
|. . . |
|End; |
| |
|Цикл "ДО" |
| Этот вид цикла отличается от предыдущего в основном тем, что проверка |
|условия повторения тела цикла находится не перед ним, а после. Поэтому цикл|
|"До" называют циклом "с постусловием", а "Пока" - "с предусловием". |
| Обратите также внимание на то, что новая итерация (повторное |
|выполнение тела цикла) происходит не тогда, когда условие справедливо, а |
|как раз тогда, когда оно ложно. Поэтому цикл и получил свое название |
|(выполнять тело цикла до выполнения соответствующего условия). |
| Интересно, что в случае, когда условие цикла изначально истинно, тело |
|цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" |
|от "пока" привело к тому, что в программировании они не подменяют друг |
|друга, а используются для решения задач, к которым они более подходят. |
| Формат цикла на языке Pascal: |
|Repeat |
|<оператор #1>;
| | скачать работу |
Основы программирования на языке Паскаль |