Файл: Основы программирования на языке Pascal ( Основные элементы ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 195

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Выражения на языке Паскаль зависят от типа выражения. Рассмотрим сначала выражения арифметические, то есть те, результатом которых является число [10].

В состав арифметического выражения на языке Паскаль могут входить:

• числовые константы;

• имена переменных;

• знаки математических операций;

• математические функции и функции, возвращающие число;

• открывающиеся и закрывающиеся круглые скобки.

Правила построения выражений напоминают математические с некоторыми уточнениями. Выражение записывается в одну строку (никакой многоэтажности), между операндами обязательно должен стоять знак операции, знаки некоторых операций и названия некоторых функций отличны от привычных вам.

Операции:

• + сложение;

• - вычитание;

• / деление;

• * умножение;

• 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, окажется результат указанного выражения [5].

2.3 Составной оператор

Составной оператор представляет собой последовательность некоторых операторов, которые выполняются в том порядке, в котором они содержаться в тексте программы. При этом зарезервированные слова BEGIN и END являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор. Когда, в зависимости от определенного условия, требуется обеспечить последовательное выполнение некоторого набора операторов, без составного оператора не обойтись.

Begin

<Оператор 1>;

<Оператор 2>;.

<Оператор N>

End;

Возможно, такая структура напоминает основную структуру программы. Действительно, отличие только в том, что после End в конце составного оператора ставится точка с запятой, а в конце программы - точка. По своей сути вся программа представляет собой большой составной оператор [3].


Обратите внимание на то, что точка с запятой перед End может не ставиться.

Составной оператор предоставляет возможность выполнить произвольное количество команд там, где подразумевается использование только одного оператора. Такая необходимость бывает очень часто [9].

2.4 Операторы ввода и вывода информации

Во многих случаях возникает необходимость посмотреть на результат выполнения программы. Что бы узнать какое значение имеет переменная в настоящее время, необходимо использовать операцию вывода на экран.

Взаимодействие устройств обработки и хранения информации с внешней средой (хотя бы с пользователем) является абсолютно необходимым. За такой интерфейс в языке Паскаль отвечают операторы ввода-вывода информации. Эти инструкции позволяют ввести аргументы, параметры расчетов во время выполнения программы (а не на этапе ее написания), осуществить вывод рассчитанных данных в понятном человеку виде [1].

Операторы ввода (форматы операторов):

Read(<Список ввода>);

Readln(<Список ввода>);

В этой форме команды позволяют вводить данные переменных во время работы программы с клавиатуры. В элементах входного списка можно указать имя переменной, в которую нужно ввести значение, введенное с клавиатуры.

Оператор ввода выполняется следующим образом: программа приостанавливается, на экране появляется курсор, и компьютер ожидает, что пользователь заполнит список ввода данными переменных, имена которых перечислены. Пользователь вводит необходимые значения с клавиатуры в нужном порядке в списке ввода, а затем нажимает клавишу Enter. После этого собранные данные классифицируются по соответствующим переменным, и программа продолжается. Примечание: данные при вводе разделяются пробелами [3].

Разница между работой процедур Read и Readln (от Read line) состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln - с новой строки.

Для вывода информации в Паскале также есть две команды:

Write(<Список вывода>);

Writeln(<Список вывода>);

Такой формат использования Write и Writeln позволяет выводить на экран монитора данные из списка вывода. Для элементов выходного списка можно использовать имена переменных, выражения и константы. Значение выражения вычисляется первым перед отображением компьютера. Элементы списка разделяются запятыми, как и в операциях ввода.


Различия операторов вывода таково: после выполнения оператора Writeln (от Write line) происходит переход на новую строчку, а после выполнения инструкции Write, переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке. При вызове оператора Writeln без параметров просто происходит переход на новую строчку [6].

Приведем пример использования операторов ввода и вывода:

Program Inteface;

Var

R,S : Real;

Begin

Write('Введите радиус круга '); {Печать на экране просьбы о вводе}

Readln(R); {Ввод значения в переменную R с клавиатуры}

S:=4*ARCTAN(1)*SQR(R); {Вычисление площади круга (pR2)}

Writeln('Площадь круга радиусом ',R,' равна ',S)

End.

Эта программа запрашивает у пользователя значение радиуса круга, обеспечивает возможность ввести его значение, рассчитывает и выводит на экран величину площади круга с таким радиусом. Таким образом, появляется возможность, не внося изменений в текст программы, вводить различные значения радиуса и получать, соответствующие им значения площади круга. Для этого достаточно несколько раз запустить программу. Также эта программа демонстрирует следующее правило: выдача результатов должна быть прокомментирована так, чтобы был ясен смысл напечатанных чисел. Действительно, ведь можно было бы ограничиться Writeln(S), но значение выведенного программой числа в этом случае было бы ясно только тому, кто эту программу написал [4].

2.5 Условный оператор

Одной из основных алгоритмических структур является ветвление (альтернатива).

Рисунок 1 – Форма условного оператора

Если условие выполняется, то будет выполнен оператор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, но операторы в группах, естественно, отделяются друг от друга этим знаком.

В программе Pascal условием является выражение, значение которого является значением логического (Boolean) типа. Либо переменная указанного типа, либо сложная последовательность операторов, связанных с логической операцией.

В простых условиях могут применяться знаки операций сравнения: >(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), <=(меньше или равно).

Примеры простых условий: A=5 {Значение переменной А равно 5}

(C+D3)>=(D1*(45-2))

{Значение выражения в левой части больше либо равно значению выражения из правой части}

S<>'ABC' {Значение переменной S не равно строковой константе 'ABC'}

Приведем пример решения еще одной задачи: «Из двух чисел выбрать наибольшее».

На первый взгляд решение очевидно, но оно не столь тривиально, как кажется [4].

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.

2.6 Метки. Оператор безусловного перехода

Рассмотренные управляющие структуры обеспечивают основные потребности в программировании. Однако, в языке Паскаль имеется возможность для выполнения безусловного перехода.


Безусловный переход приводит к передаче управления из одного места программы в другое. Для выполнения безусловного перехода нужно сделать следующие действия:

  1. Оператор, получающий управление должен иметь метку в виде идентификатора, заканчивающегося символом двоеточие.
  2. В начале программы, в разделе Label, следует описать эту метку.
  3. Оператор goto должен быть помещен в то место программы, откуда выполняется переход. Оператор goto передает управление на оператор с заданной меткой. Этот оператор можно располагать в любом месте программы, где содержаться операторы языка.

Пример программы:

Program Prim3;

Label M;

Var x:real;

BEGIN

x:=0;

M: writeln('x=',x,'cos x = ',cos(x));

x:=x+0.01;

goto M;

readln;

END.

Программа будет выполняться таким образом: х присвоится значение 0; writeln выведет на экран текст. Далее значение x будет увеличено на 0,01 и оператор goto передаст управление на метку M, то есть опять будет выведено значение в операторе writeln. И так будет происходить до бесконечности, так как в текущем алгоритме окончание работы не предусмотрено. Для завершения работы следует применить оператор if [2].

2.7 Цикл. Виды Циклов

Наиболее распространенной в практике программирования является циклическая программа. В периодической программе алгоритм повторяется много раз при изменении одного из параметров. Операторов цикла в Паскале три: for, repeat, while.

Цикл For.

Оператор состоит из заголовка. Заголовок определяет порядок переменных в параметрах цикла и тело цикла, которое является итерационным алгоритмом. Общий вид оператора:

for – параметр цикла: = начальное значение to, конечное значение do {заголовок}; оператор; {тело цикла}. Этот оператор применяется, если начальное значение < конечного значения;

for – параметр цикла:=начальное значение downto, конечное значение do; оператор; применяется, если начальное значение > конечного значения.

Пример: найти сумму квадратов целых чисел от 8 до 1.24.

Program Prim;

Var i,s:integer;

BEGIN

s:=0;

for i:= 8 to 124 do

s:=s+sqr(i);

writeln('s=',s);

readln;

END.

Правила применения оператора цикла for

1.Тело цикла - всегда один оператор. Чтобы использовать в теле цикла несколько операторов, то их объединяют в один с помощью операторных скобок begin, end.

for i:=l to n do

Begin

S:=S+sin(x)/cos(x);

x=x+0.01;

writeln('S=' ,S)

end.

Операторы, взятые в операторные скобки begin, end, считаются одним составным оператором.