Основы программирования на языке Паскаль
|запятыми), а также и из одного имени. Тип, указываемый после двоеточия, |
|определяет, какие данные теперь могут храниться в описанных таким образом |
|переменных. Для каждого используемого в программе типа переменных в разделе|
|их описания должна быть, как минимум, одна собственная строка. |
| Пример: |
|Var |
|A,B,H_22,Angle : Real; |
|Name3 : String; |
|Flag : Boolean; |
|I,J,K,Count : Word; |
|Оператор присваивания. Арифметические выражения. |
| Самым простым действием над переменной является занесение в нее |
|величины соответствующего типа. Иногда говорят об этом, как о присвоении |
|переменной конкретного значения. Такая команда (оператор) в общем виде |
|выглядит на языке Паскаль следующим образом: |
| :=; |
| Выражение, указанное справа от знака ":=", должно приводить к значению|
|того же типа, какого и сама переменная, или типа, совместимого с переменной|
|относительно команды присваивания. Например, переменной типа Real можно |
|присвоить значение типа Integer или Word (впрочем, наоборот делать нельзя).|
|Выражение будет сначала вычислено, затем, его результат будет положен в |
|ячейки памяти, отведенные для переменной. |
| Что же представляет собой выражение на языке Паскаль? Многое зависит |
|от типа выражения. Рассмотрим сначала выражения арифметические, то есть те,|
|результатом которых является число. |
| В состав арифметического выражения на языке Паскаль могут входить: |
|числовые константы; |
|имена переменных; |
|знаки математических операций; |
|математические функции и функции, возвращающие число; |
|открывающиеся и закрывающиеся круглые скобки. |
| Правила построения выражений напоминают математические с некоторыми |
|уточнениями. Выражение записывается в одну строку (никакой многоэтажности),|
|между операндами обязательно должен стоять знак операции (Запись "2x" - не |
|допускается), знаки некоторых операций и названия некоторых функций отличны|
|от привычных вам. |
| Операции: |
|+ сложение; |
|- вычитание; |
|/ деление; |
|* умножение; |
|MOD остаток от деления (записывается так: A MOD B; читается: остаток от|
|деления A на B); эта операция применима только к целым числам; |
|DIV целочисленное деление (записывается так A DIV B; читается: |
|результат деления A на B без дробной части); эта операция тоже применяется |
|только для целых операндов. |
| Аргументы функций всегда записываются в круглых скобках: |
|SIN(X) sin x; |
|COS(X) cos x; |
|ARCTAN(X) arctg x; |
|ABS(X) абсолютное значение x (в математике - |x|); |
|SQR(X) возведение x в квадрат; |
|SQRT(X) извлечение квадратного корня; |
|TRUNC(X) отбрасывание дробной части х; |
|ROUND(X) округление х до ближайшего целого числа; |
| После выполнения второго оператора присваивания в участке памяти, |
|отведенном под переменную R, окажется результат указанного выражения, |
|однако, к сожалению, узнать его мы не сможем, поскольку пока не имеем |
|возможности "заглянуть" в память машины, вывести значение переменной хотя |
|бы на экран. |
| |
|Составной оператор |
| Этот оператор, строго говоря, оператором не является. Дело в том, что |
|также как арифметические действия иногда бывает необходимо заключать в |
|скобки, последовательности команд (операторов) тоже иногда требуют |
|объединения. Это позволяют сделать так называемые операторные скобки. |
|Формат (общий вид) составного оператора таков: |
|Begin |
|; |
|; |
|...... |
| |
|End; |
| Возможно, такая структура напоминает вам основную структуру программы.|
|Действительно, отличие только в том, что после End в конце составного |
|оператора ставится точка с запятой, а в конце программы - точка. По своей |
|сути вся программа представляет собой большой составной оператор. |
| Обратите внимание на то, что точка с запятой перед End может не |
|ставиться. |
| Составной оператор предоставляет возможность выполнить произвольное |
|количество команд там, где подразумевается использование только одного |
|оператора. Как вы узнаете потом, такая необходимость встречается довольно |
|часто. |
| |
|Операторы ввода и вывода информации |
| Если вы помните, при рассмотрении примера работы оператора |
|присваивания мы столкнулись с необходимостью узнать результат выполнения |
|программы. Мы разобрались с тем, как информацию сохранять (в переменных), |
|как обрабатывать (с использованием выражений), но два фундаментальнейших |
|информационных процесса остались вне нашего внимания: получение информации |
|и передача ее во внешний по отношению к компьютеру мир. Пока наши программы|
|могут использовать лишь информацию, которая находится непосредственно в |
|тексте программы. Узнать, какие значения в данный момент имеют переменные, |
|также не представлялось возможным. Программирование в таких условиях теряет|
|смысл. |
| Взаимодействие устройств обработки и хранения информации с внешней |
|средой (хотя бы с пользователем) является совершенно необходимым. За такой |
|интерфейс в языке Паскаль отвечают операторы ввода-вывода информации. Эти |
|инструкции позволяют ввести аргументы, параметры расчетов во время |
|выполнения программы (а не на этапе ее написания), осуществить вывод |
|рассчитанных данных в понятном человеку виде. |
| Сначала операторы ввода (форматы операторов): |
|Read(); |
|Readln(); |
| В таком формате эти команды позволяют вводить данные в переменные во |
|время выполнения программы с клавиатуры. Элементами списка ввода могут быть|
|имена переменных, которые должны быть заполнены значениями, введенными с |
|клавиатуры. |
| Выполнение операторов ввода происходит так: ход программы |
|приостанавливается, на экран выводится курсор, компьютер ожидает от |
|пользователя набора данных для переменных, имена которых указаны в списке |
|ввода. Пользователь с клавиатуры вводит необходимые значения в том порядке,|
|в котором они требуются списком ввода, нажимает Enter. После этого |
|набранные данные попадают в соответствующие им переменные и выполнение |
|программы продолжается. |
| Примечание: данные при вводе разделяются пробелами. |
| Разница между работой процедур Read и Readln (от Read line) состоит в |
|следующем: после выполнения Read значение следующего данного считывается с |
|этой же строчки, а после выполнения Readln - с новой строки. |
| Для вывода информации в Паскале также есть две команды: |
|Write(); |
|Writeln(); |
| Такой формат использования Write и Writeln позволяет выводить на экран|
|монитора данные из списка вывода. Элементами списка вывода могут являться |
|имена переменных, выражения, константы. Прежде чем вывести на экран |
|компьютер значения выражений сначала вычислит. Элементы списка, также как и|
|в операторах ввода, разделяются запятыми. |
| Различие между двумя операторами вывода таково: после выполнения |
|оператора Writeln (от Write line) происходит переход на новую строчку, а |
|после выполнения инструкции Write, переход на новую строчку не происходит и|
|печать по последующим командам вывода Write или Writeln будет происходить |
|на той же строчке. При вызове оператора Writeln без параметров просто |
|происходит переход на новую строчку. |
| Приведем пример использования операторов ввода и вывода: |
|Program Inteface; |
|Var |
| R,S : Real; |
|Begin |
| Write('Введите радиус круга '); {Печать на экране просьбы о вводе} |
| Readln(R); Ввод значения в |
| S:=4*ARCTAN(1)*SQR(R); {Вычисление площади круга (pR2)} |
| 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 } |
| иначе {иначе - выполнить действие № 2 } |
|все |
| Как это записать на Паскале? Да точно так же, только по-английски. |
| Формат условного оператора на языке Паскаль: |
| If |
| Then |
| Else ; |
| Обратите внимание на то, что в Then- и Else- части стоит только один |
|оператор. Но что делать, чтобы решить задачу, в которой по выполнению или |
|невыполнению условия нужно совершить не одно, а несколько действий? Здесь |
|приходит на помощь уже известный вам составной оператор. В операторные |
|скобки можно заключить любое количество операторов. |
| Вариант условного оператора в этом случае: |
|If |
|Then Begin end |
|Else Begin < группа операторов 2> end; |
| Знак "точка с запятой" не ставится перед служебным словом Else, но |
|операторы в группах, естественно, отделяются друг от друга этим знаком. |
| Теперь поговорим об условиях. В программах на языке Паскаль условия |
|представляют собой выражения, значением которых является величина |
|логического (Boolean) типа. Это может быть как просто переменная указанного|
|типа, так и сложная последовательность высказываний, связанных логическими |
|операциями. |
| В простых условиях могут применяться знаки операций сравнения: |
|>(больше), (не равно), >=(больше или равно), |
Страницы: 1, 2, 3, 4, 5
|