Основы программирования на языке Паскаль
Writeln('Площадь круга радиусом ',R,' равна ',S) |
|End. |
| Эта программа запрашивает у пользователя значение радиуса круга, |
|обеспечивает возможность ввести его значение, рассчитывает и выводит на |
|экран величину площади круга с таким радиусом. Таким образом, появляется |
|возможность, не внося изменений в текст программы, вводить различные |
|значения радиуса и получать, соответствующие им значения площади круга. Для|
|этого достаточно несколько раз запустить программу. Также эта программа |
|демонстрирует следующее правило: выдача результатов должна быть |
|прокомментирована так, чтобы был ясен смысл напечатанных чисел. |
|Действительно, ведь можно было бы ограничиться Writeln(S), но значение |
|выведенного программой числа в этом случае было бы ясно только тому, кто |
|эту программу написал. |
| |
|Метки. Оператор безусловного перехода. |
| Каждый дом на улице имеет свой номер, все люди имеют собственные |
|имена, даже ячейки памяти компьютера имеют каждая свой адрес. Все это |
|принято для того, чтобы иметь возможность однозначно указать на |
|определяемый объект. Точно также, для указания на операторы в программах |
|применяются метки. |
| Метка в стандарте языка Паскаль представляет собой целое |
|неотрицательное число. Все используемые в программе метки должны быть |
|перечислены в разделе описания меток, начинающемся служебным словом Label, |
|например: |
| Label 1, 2, 8; |
| Одной меткой можно пометить только один оператор. Метка от помеченного|
|оператора отделяется двоеточием. |
|Пример: |
| 6: Writeln(14/2); |
| Во всех приведенных ранее программах операторы выполнялись один за |
|другим в том порядке, в котором они были записаны в тексте. Такая |
|алгоритмическая структура называется прямым следованием. Однако, в языке |
|Паскаль изначально существует оператор, нарушающий прямолинейное выполнение|
|программы, передающий управление в произвольную ее точку. Такая инструкция |
|называется безусловным переходом и имеет такой формат: |
| Goto <метка>; |
| Оператор, к которому происходит переход должен быть помечен данной |
|меткой. |
| Использовать оператор безусловного перехода следует крайне осторожно |
|во избежание получения ошибочных результатов или полного "зацикливания" |
|программы. Вообще, употребление данной команды среди программистов |
|считается дурным тоном. Как вы убедитесь, всегда существует возможность |
|обойтись без него. |
| |
|Условный оператор |
|Одной из основных алгоритмических структур является ветвление |
|(альтернатива). |
| Если условие выполняется, то будет выполнена инструкция "1", если нет,|
|то - инструкция "2". Несмотря на то, что в схеме присутствуют два действия,|
|выполнено будет только одно, так как условие либо ложно, либо истинно. |
|Третьего не дано. Такая схема позволяет решать задачи, в которых в |
|зависимости от сложившихся обстоятельств требуется совершить то или иное |
|действие. Нет никакого сомнения, что число задач такого рода огромно. Более|
|того, очень сложно придумать реально значимое задание, алгоритм выполнения |
|которого содержал бы в себе простое прямое следование команд. Даже |
|примитивный пример, взятый из курса математики, как вы увидите, не может |
|быть решен без использования ветвления. Итак, необходимо вычислить значение|
|выражения y=1/x. Вам известно, что данная функция не всегда имеет значение,|
|то есть не для всех значений аргумента существует значение результата. Наша|
|задача так составить алгоритм, чтобы исполнитель ни в коем случае не встал |
|в тупик, даже при получении нуля в качестве аргумента. Сформулировать это |
|на естественном языке не трудно: |
|1. Получить значение x. |
|2. Если x=0, то сообщить, что выражение значения не имеет, иначе - |
|вычислить y как 1/x. |
| Таким образом используется приведенная выше алгоритмическая структура.|
|Она может быть выражена простыми словами: |
| Если <усл.> {Если выполняется условие} |
| то <действие 1> {то выполнить действие № 1 } |
| иначе <действие 2> {иначе - выполнить действие № 2 } |
|все |
| Как это записать на Паскале? Да точно так же, только по-английски. |
| Формат условного оператора на языке Паскаль: |
| If <условие> |
| Then <оператор 1> |
| Else <оператор 2>; |
| Обратите внимание на то, что в Then- и Else- части стоит только один |
|оператор. Но что делать, чтобы решить задачу, в которой по выполнению или |
|невыполнению условия нужно совершить не одно, а несколько действий? Здесь |
|приходит на помощь уже известный вам составной оператор. В операторные |
|скобки можно заключить любое количество операторов. |
| Вариант условного оператора в этом случае: |
|If <условие> |
|Then Begin <группа операторов 1> end |
|Else Begin < группа операторов 2> end; |
| Знак "точка с запятой" не ставится перед служебным словом Else, но |
|операторы в группах, естественно, отделяются друг от друга этим знаком. |
| Теперь поговорим об условиях. В программах на языке Паскаль условия |
|представляют собой выражения, значением которых является величина |
|логического (Boolean) типа. Это может быть как просто переменная указанного|
|типа, так и сложная последовательность высказываний, связанных логическими |
|операциями. |
| В простых условиях могут применяться знаки операций сравнения: |
|>(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), |
|<=(меньше или равно). |
| Примеры простых условий: A=5 {Значение переменной А равно 5} |
| (C+D3)>=(D1*(45-2)) {Значение выражения в левой части больше либо |
|равно значению выражения из правой части} |
| S<>'ABC' {Значение переменной S не равно строковой константе 'ABC'} |
| Приведем пример решения еще одной задачи: "Из двух чисел выбрать |
|наибольшее". |
| На первый взгляд решение очевидно, но оно не столь тривиально, как |
|кажется. |
|Program Example; |
|Var A,B,C : Real; {A,B - для хранения аргументов, C - результат} |
|Begin |
|Writeln('Введите два числа'); |
|Readln(A,B); {Вводим аргументы с клавиатуры} |
|If A>B Then C:=A Else C:=B; {Если A>B, то результат - A, иначе результат - |
|B} |
|Writeln(C); {Выводим результат на экран} |
|End. |
| Еще один классический пример: "По заданным коэффициентам решить |
|квадратное уравнение". Эта задача сложнее, поэтому перед тем как писать |
|программу составим алгоритм, записав его в виде блок-схемы. |
|Сначала вводим коэффициенты, затем вычисляем дискриминант. Теперь возникает|
|две возможности: либо отсутствие действительных корней в случае |
|отрицательного дискриминанта, либо эти корни можно все-таки вычислить и |
|вывести на экран в случае неотрицательного дискриминанта (случай равенства |
|дискриминанта нулю входит сюда же, корней - два, только они одинаковые J). |
| При записи алгоритма на языке программирования следует учесть, что в |
|ветви "нет" не одно действие, а три, поэтому следует применить составной |
|оператор. Арифметические выражения не забывайте записывать в соответствии с|
|правилами языка Паскаль. В остальном, эта программа не сложнее предыдущей. |
|
| | скачать работу |
Основы программирования на языке Паскаль |