ЭЛЕМЕНТЫ ЯЗЫКА ТУРБО ПАСКАЛЯ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

 

Алфавит языка

 

В алфавит языка ТУРБО ПАСКАЛЬ входят следующие символы:

² прописные и строчные буквы латинского алфавита, а также символ подчеркивания, который используется наравне с буквами;

² арабские десятичные цифры;

² специальные знаки:

+ - * / > < = ; # ‘ , . : [ ] { } ( ) $ ^ @

 

К специальным знакам относятся также следующие пары символов:

          <> <= >= :=  (* *) (. .) ..

В программе эти пары символов нельзя разделять пробелами.

Русские буквы можно употреблять только:

² в символьных и строковых константах;

² внутри комментариев.

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

 

 

Идентификаторы

 

Идентификаторы в ТУРБО ПАСКАЛЕ – это имена констант, переменных, типов, процедур, функций, модулей и программ. Идентификаторы могут иметь переменную длину, но значащими являются только первые 63 символа.

Идентификатор начинается с буквы или знака подчеркивания, за которым могут следовать буквы, цифры и знак подчеркивания. Пробелы и специальные символы не могут входить в идентификатор.

 

 

Константы и переменные

 

Константами называются данные, значения которых заданы в описательной части программы, и в процессе выполнения программы не изменяются.

В качестве констант в ТУРБО ПАСКАЛЕ чаще всего используются целые или вещественные числа, логические константы, символы, строки символов.

Целые числа записываются со знаком или без него по обычным правилам и могут иметь значения от –2147483648 до +2147483647.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части. Экспоненциальная часть начинается символом е или Е, за которым могут следовать знаки << + >> или << - >> и десятичный порядок. Символ е (Е) означает начало десятичного порядка и имеет смысл << умножить на 10 в степени …>>.

Например, число 5.25·104 запишется в Е-форме как 5.25Е4, а число 8·10-5 – как 8Е-5.

Если в записи вещественного числа присутствует десятичная точка, то перед точкой и за ней должно быть хотя бы по одной цифре.

Логическая константа – это либо слово FALSE (ложь), либо TRUE (истина).

Символьная константа – любой символ, заключенный в апострофы.

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

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

Формат описания констант:

<идентификатор>=<значение константы>;

Пример раздела описаний констант:

const

N=20;

Alpha=3.2e-5;

Ch=’z’;

Name=’Вова Сидоров’;

Тип констант определяется формой их записи в разделе описаний.

Переменными называются величины, которые могут менять свои значения в процессе выполнения программы.

Все переменные программы должны быть описаны в специальном разделе описательной части программы, который начинается словом var.

Формат описания переменных:

<идентификатор>:<тип>;

Пример описаний переменных:

var

I,J :integer;

Beta :real;

c,d :char;

slovo:string;

Кроме констант и переменных в ТУРБО ПАСКАЛЕ используются так называемые типизированные константы, которые по сути являются не константами, а переменными. Единственное отличие типизированных констант от переменных заключается в том, что при инициализации в неё помещается указанное значение. Правильнее было бы назвать их «инициализируемая переменная» (именно так называются эти величины в Help ТУРБО ПАСКАЛЯ). Типизированные константы описываются в разделе констант.

Формат описания типизированных констант:

<идентификатор>:<тип>=<значение>;


 

Пример описания типизированных констант (обратите внимание на расста-новку скобок):

const

n: Integer=20;

e: Real =2.71;

t: array[1..5] of integer = (1, 3, -5, 0, 12);

mas: array[1..3, 1..2] of integer = ((3, 18),

                                (7, -4),

                                ( 5, 0));

 

 


Выражения

 

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

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

Примеры наиболее распространенных типов выражений:

Арифметические выражения (имеющие значением число):

33

8-3

sqrt(b+7)+t[i]

(A+B)/C/D

((x+y)/19)*(2/(x+1)+5)

Строковые выражения (имеющие значением строку символов):

’Вован’

Copy(’интеграл’,3,3)

Delete(’барабан’,5,2)

Логические выражения (имеющие значением true или false):

x < 0

c > ’z’

Copy(S1,n,e) <> S2

 

 

Операции

 

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

Тип значения, вычисляемого с помощью выражения, определяется типом его операндов и знаками выполняемых над ними операций.


 

Основные арифметические операции языка представлены в таблице 2.1

Таблица 2.1 – Арифметические операции

Операции Действие Типы операндов Тип результата
* умножение целый вещественный целый вещественный
/ деление целый вещественный вещественный вещественный
div целочисленное деление целый целый
mod остаток от деления целый целый
+ сложение целый вещественный целый вещественный
- вычитание целый вещественный целый вещественный

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

Целочисленное деление вычисляет целую часть частного, дробная часть отбрасывается, например, значение выражения 13 div 5 равно 2.

Деление по модулю (mod) вычисляет остаток, полученный при выполнении целочисленного деления, например, значение выражения 13 mod 5 равно 3.

При работе с Паскалем очень важно представлять, какой тип будет иметь значение вычисленного арифметического выражения. Для этого можно использовать таблицу 1.3 или запомнить простое правило:

Результат операций *, div, mod, +, - над целыми типами есть целое число, во всех остальных случаях результат – вещественное число.

Условием называется конструкция языка, в которой два выражения связаны знаком операции отношения.

Операции отношения сравнивают два операнда и определяют, истинно значение или ложно.

В таблице 2.2 приведены основные операции отношения, допустимые в ТУРБО ПАСКАЛЕ.

Результат операции отношения всегда имеет булевский тип и принимает значения True или False.

 

Таблица 2.2 – Операции отношения

Операция Название Условие Результат
= равно A=B true, если А равно В
<> не равно A<>B true, если А не равно В
> больше A>B true, если А больше В
< меньше A<B true, если А меньше В
>= больше или равно A>=B true, если А больше или равно В
<= меньше или равно A<=B true, если А меньше или равно В

 


Результатом выполнения логического (булевского) выражения является значение True или False. Операндами служат данные только булевского типа. Компонентами логических выражений являются:

²логическая константа;

²логическая переменная;

²логическая функция;

²условие.

Список основных логических операций приведен в таблице 2.3.

Таблица 2.3 – логические операции

Операция

Действие

Выражение

Операнды

Результат

A B
not логическое НЕ not A true false   false true
and логическое И A and B true true false false true false true false true false false false
or логическое ИЛИ A or B true true false false true false true false true true true false

 

Примеры логических выражений:

² (x > 5) and (x < 10) значение выражения равно true, если 5 < x < 10 и false в противном случае;

² (L mod 2 = 0) or (L mod 3 = 0) значение выражения равно true, если число L делится без остатка на 2 или на 3 и false в противном случае.

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

Таблица 2.4 – Приоритет операций

Приоритет Операция
1 not
2 *, / , div , mod , and
3 +, - , or , xor
4 =, <> , < , > , <= , >= , in

Выражения любого типа, заключенные в круглые скобки, трактуются как один операнд. Это значит, что операции, стоящие в скобках, будут выполняться в обычном порядке, но раньше, чем операции, находящиеся за скобками. При записи выражений, содержащих скобки, должна соблюдаться парность скобок, т.е. число открывающихся скобок должно быть равно числу закрывающихся. Нарушение парности скобок - наиболее распространенная ошибка при записи выражений.

Еще одна достаточно часто встречающаяся ошибка при записи арифметических выражений – нарушение порядка вычисления соответствующего выражения. Так, например, математическое выражение  можно записать как A*B/(C*D) или A*B/C/D, но не A*B/C*D.

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

 

 



Математические функции

 

Математические функции могут быть компонентами арифметических и логических выражений, для правильного их применения важно знать тип результата выполнения данной функции. Тип результата применения функции зависит как от вида функции, так и от типа аргументов этих функций. Основные математические функции Паскаля приведены в таблице 2.5.

 

Таблица 2.5 – Математические функции

Функция Назначение Тип результата
Abs(x) абсолютное значение аргумента совпадает с типом х
ArcTan(x) арктангенс аргумента вещественный
Chr(x) cимвол с заданным порядковым номером x Char
Cos(x) косинус аргумента вещественный
Dec(x) уменьшение значения x на 1 целый
Exp(x) е х вещественный
Frac(x) дробная часть числа вещественный
Inc(x) увеличение значения x на 1 целый

 

      Продолжение Таблицы 2.5

 

Функция Назначение Тип результата
Int(x) целая часть числа вещественный
Ln(x) натуральный логарифм вещественный
Odd(x) проверка аргумента на нечетность логический
Ord(x) Порядковый номер, соответствующий значению x целый
Pi Pi = 3.14159265…  
Randomize Инициализирует случайным значением встроенный генератор псевдослучайных чисел  
Random   Random(M) Псевдослучайное число в диапазоне от 0 до 1 Псевдослучайное число в диапазоне от 0 до M-1 Вещественный   целый
Round(x) округление аргумента целый
Sin(x) синус аргумента вещественный
Sqr(x) квадрат аргумента совпадает с типом х
Sqrt(x) квадратный корень из аргумента вещественный
Trunc(x) получение целой части аргумента целый

Аргумент математических функций должен быть записан в круглых скобках после имени функции.

У тригонометрических функций аргумент задается в радианах.


 


СТРУКТУРА ПРОГРАММЫ

 

 

 

Неформально структуру программы можно изобразить следующим образом.

Заголовок программы не обязателен и используется только в декоративных целях.

Заголовок состоит, в наиболее часто используемом случае, из служебного слова P rogram и имени программы, представляющем собой обычный идентификатор Паскаля. Не следует использовать в качестве заголовка идентификаторы переменных, используемых в программе.

Пример заголовка: Program Simple;

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

Данный раздел также является необязательным и используется только в случаях, если в программе используются константы, типы, переменные, процедуры и функции, определенные в стандартных модулях ТУРБО ПАСКАЛЯ (кроме модуля System), или в модулях, созданных пользователем.

Предложение Uses  в каждой программе может быть описано только однократно и непосредственно после заголовка программы.

Стандартный модуль System всегда подключается по умолчанию, указывать его в предложении Uses  не нужно.

Пример: Uses CRT, GRAPH, MyLib;

Раздел описания констант начинается служебным словом C onst и служит для описания в нем постоянных и типизированных констант, используемых в программе. Формат описаний и пример раздела приведены в пункте 2.3.

Раздел описания типов служит для определения пользовательских типов, определенных программистом, и имеет следующий формат описания:

<имя типа> = <определение типа>;

Подробнее этот раздел будет рассмотрен в разделе 6.1.

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

Формат описаний и пример раздела приведен в пункте 2.3.

Разделы описаний процедур и функций будут рассмотрены в главе 7.

Раздел операторов (тело программы) является единственным обязательным в структуре программы, он начинается служебным словом Begin и заканчивается словом End. (Точка после End, завершающего программу, - обязательна).

Данный раздел состоит из последовательности операторов, разделенных между собой точкой с запятой. Перед словом End точка с запятой обычно не ставится (хотя ее наличие синтаксической ошибкой не является).

Для лучшего понимания программы в ней часто записывают пояснительный текст – комментарий. Комментарий можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничивается фигурными скобками { } и может содержать любые символы ASCII.

Комментарий не оказывает никакого влияния на работу программы и часто используется при отладке программы, если нужно временно исключить выполнение какой-то её части.

На рисунке 3.1 приведен пример программы, вычисляющей сумму двух чисел, а на рисунке 3.2 – результат работы этой программы.

 

Program Example_1;      { заголовок программы }

Uses CRT;               { подключение модуля CRT }

Var x,y,sum : Integer;  { описание переменных }

Begin                   { начало тела программы }

Clrscr;                 { очистка экрана }

Writeln('=======Программа нахождения суммы двух чисел=======');

Writeln;

Write('Будьте добры, введите, пожалуйста, первое слагаемое -> '); Read(x);

Write('А теперь, если это Вас не очень затруднит, второе -> '); Read(y);

sum:=x+y;

Writeln('Сумма чисел ',x,' и ',y,' равна ',sum);

Writeln(' ******* Программа выполнена ******* ')

end.

 

Рисунок 3.1 – Программа Example_1 сложения двух чисел

 

=======Программа нахождения суммы двух чисел=======

 

Будьте добры, введите, пожалуйста, первое слагаемое -> 44

А теперь, если это Вас не очень затруднит, второе -> 33

 Сумма чисел 44 и 33 равна 77

 

******* Программа выполнена *******

 

Рисунок 3.2 – Результаты работы программы Example_1




ВВОД-ВЫВОД ДАННЫХ

 

 

Решение любой задачи на компьютере не обходится без операций ввода-вывода данных. Ввод данных – это передача информации от внешнего носителя в оперативную память для обработки. Вывод – обратный процесс, когда данные передаются после обработки из ОЗУ на внешний носитель. Внешним носителем может служить клавиатура, монитор, принтер, магнитный диск и другие устройства.

В данном разделе будет рассмотрен только ввод данных с клавиатуры и вывод их на монитор. Ввод данных из файла и вывод в файл будут рассмотрены в главе 9.

 

 

Ввод данных с клавиатуры

 

Процедура чтения Read (иногда, её не совсем точно называют оператором) предназначена для ввода в программу числовых данных, символов, строк.

 Формат процедуры:

Read(X1,X2,…XN);

где X1, X2, …, XN – переменные допустимых типов данных.

При выполнении процедуры Read программа приостанавливает своё выполнение и ждет ввода данных с клавиатуры.

Значения X1, X2, …, XN набираются как минимум через один пробел (или Enter) и при вводе высвечиваются на экране. После набора данных нажимается клавиша Enter.

Переменные должны вводиться в строгом соответствии с синтаксисом языка Паскаль. Если соответствие нарушено (например, переменная Х1 объявлена как целая, а на клавиатуре набран символ или число с десятичной точкой), то возникают ошибки ввода-вывода с сообщением I/O Error XX, где ХХ – код ошибки.

Если в программе имеются несколько процедур Read, то отдельные значения переменных можно разделять либо пробелом, либо нажатием клавиши Enter.

Процедура Readln аналогична процедуре Read, единственное отличие заключается в том, что после считывания значения последней в списке переменной, данные для следующей процедуры Readln будут считываться с начала новой строки.

 

 

Вывод данных на монитор

 

Процедура записи Write производит вывод числовых данных, символов, строк и булевских значений.

Формат процедуры:

Write(Y1,Y2,…,YN);

или

Writeln(Y1,Y2,…,YN);

где  Y1,Y2,…,YN – выражения целого, действительного, строкового или булевского типа.

Процедура Writeln отличается от процедуры Write тем, что после того, как весь список вывода будет исчерпан, курсор на экране перейдет в начало следующей строки.

Число элементов списка вывода может быть любым ( в том числе и нулевым; при этом процедура Write не выполняет никаких действий, а Writeln осуществляет переход на новую строку вывода).

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

Writeln(’Площадь круга равна ’,Skr);

Writeln(’По лесу бродило ’,NZ,’ зверей’);

 

 

Форматы вывода

 

В ТУРБО ПАСКАЛЕ при выводе информации на экран или в текстовый файл по умолчанию отводится количество позиций, равное размеру этой информации. Так при выводе символа отводится одна позиция; при выводе строки – число позиций, равное длине строки; при выводе целого числа – число позиций, равное числу значащих цифр плюс одна позиция под знак, если число отрицательное. Это необходимо учитывать при выводе последовательности элементов информации (например, нескольких целых чисел) и предусмотреть меры, чтобы отдельные элементы информации не сливались друг с другом: вывод разделяющих пробелов, разнесение информации по разным строкам и т.д. Исключение составляют вещественные числа – под них выделяется 23 позиции.

Изменить стандартную форму вывода можно с помощью форматов вывода языка Паскаль.

Существуют два основных формата вывода, которые записываются через двоеточие после соответствующего элемента вывода.

Первый из них записывается в виде:

Write(Y:M);

где Y – выражение, значение которого выводится на экран;

М – целое число.

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

Второй формат вида:

Write(Y:M:N);

где M и N – целые числа, используется только с вещественными числами. Величина М имеет тот же смысл, что и в предыдущем случае, но число представляется в форме с фиксированной точкой (естественная математическая форма) и выводится с N знаками после десятичной точки. Если величина М задана такой, что её величина не позволяет вывести число N знаков после десятичной точки, то значение М игнорируется.

 

На рисунке 4.1 приведен пример программы форматного вывода целых чисел, на рисунке 4.2 – результаты работы, на рисунке 4.3 – пример программы вывода вещественных чисел, на рисунке 4.4 – результаты работы.

 

Program Example_2;

Var k : integer;

Begin

k:=12345;

Writeln;

Writeln('====================================');

Writeln('Формат вывода Вид вывода');

Writeln(' (k)         k=',k);

Writeln(' (k:2)        k=',k:2);

Writeln(' (k:5)        k=',k:5);

Writeln(' (k:7)        k=',k:7);

Writeln(' (k:10)       k=',k:10);

Writeln(' (k:13)       k=',k:13);

Writeln('====================================')

end.

 

Рисунок 4.1 – Пример программы форматного вывода целых чисел

 

 

====================================

Формат вывода Вид вывода

(k)         k=12345

(k:2)        k=12345

(k:5)        k=12345

(k:7)        k= 12345

(k:10)       k= 12345

(k:13)       k=   12345

====================================

 

Рисунок  4.2 – Результаты работы программы EXAMPLE_2


 

Program Example_3;

Var R : real;

Begin

R:=12.34567;

Writeln;

Writeln('==========================================');

Writeln('Формат вывода       Вид вывода');

Writeln(' (R)         R=',R);

Writeln(' (R:2)        R=',R:2);

Writeln(' (R:10)       R=',R:10);

Writeln(' (R:11)       R=',R:11);

Writeln(' (R:15)       R=',R:15);

Writeln;

Writeln(' (R:9:5)      R=',R:9:5);

Writeln(' (R:10:5)     R=',R:10:5);

Writeln(' (R:5:5)      R=',R:5:5);

Writeln;

Writeln(' (R:5:1)      R=',R:5:1);

Writeln(' (R:5:2)      R=',R:5:2);

Writeln(' (R:5:6)      R=',R:5:6);

Writeln;

Writeln(' (R:15:6)     R=',R:15:6);

Writeln(' (R:15:7)     R=',R:15:7);

Writeln(' (k:15:2)     R=',R:15:2);

Writeln('=========================================')

end.

 

Рисунок  4.3 – Пример программы форматного вывода вещественных чисел

 

 

=========================================

Формат вывода       Вид вывода

(R)         R= 1.23456699999952E+0001

(R:2)        R= 1.2E+0001

(R:10)       R= 1.2E+0001

(R:11)       R= 1.23E+0001

(R:15)       R= 1.234567E+0001

 

(R:9:5)      R= 12.34567

(R:10:5)     R= 12.34567

(R:5:5)      R=12.34567

 

(R:5:1)      R= 12.3

(R:5:2)      R=12.35

(R:5:6)      R=12.345670

 

(R:15:6)     R= 12.345670

(R:15:7)     R= 12.3456700

(k:15:2)     R=     12.35

=========================================

 

Рисунок 4.4 – Результаты работы программы EXAMPLE_3


ОПЕРАТОРЫ

 

 

Оператором называется предложение языка программирования, задающее действие, которое необходимо выполнить. Тело программы на языке ТУРБО ПАСКАЛЯ представляет из себя последовательность операторов. Разделителем операторов служит точка с запятой, после последнего оператора программы обычно никаких знаков не ставится.

 

 

Оператор присваивания

 

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

Общий вид оператора присваивания:

<идентификатор>:=<выражение>;

Примеры операторов присваивания:

A:=10;

B:=A+18.3;

C:=sin(al)*cos(bet);

d:=d+1;

F:=(-b+sqrt(b*b-4*a*c))/(2*a);

Flag:=true;

G:=’N’

Как правило, тип выражения должен совпадать с типом переменной, в противном случае на мониторе появляется сообщение об ошибке ERROR 26 Type mismatch (несовместимость типов). Единственным исключением является случай, когда слева находится переменная действительного типа, а справа – выражение целого типа, такой оператор присваивания допустим.

Значения всех переменных, входящих в выражение, должны быть известны к моменту выполнения оператора присваивания и ответственность за это полностью лежит на программисте. Если значение какой-то переменной будет не определено, то разные языки программирования и даже разные версии одного языка поступают по разному. Некоторые при этом дают сообщение об ошибке, некоторые (например, Турбо Паскаль 6.0) – используют вместо неинициализированной переменной случайное значение, Турбо Паскаль 7.0 считает значения таких переменных равными нулю. Считается дурным тоном программирования надеяться на нулевые значения, присваиваемые переменным по умолчанию; следует придерживаться правила: прежде чем использовать значение переменной, его необходимо определить.

 


 


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

 

Существуют две формы условного оператора: сокращенная и полная.

Общий вид условного оператора:

if <логическое выражение> then <оператор>;               {сокращенная форма}

if <логическое выражение> then <оператор_1> else <оператор_2>;

{полная форма}

 

Блок-схемы условного оператора представлены на рисунке 5.1.

 

Сокращенная форма                                             Полная форма

Рисунок  5.1 – Блок-схемы условного оператора

 

Так как условный оператор является единым оператором ни перед then, ни перед else точку с запятой ставить нельзя.

Пример. Дракон в первые 100 лет своей жизни отращивает по 3 головы в год, вторые 100 лет – по 2 головы, всю остальную жизнь – по одной голове в год. Сколько голов и глаз у дракона, которому N лет ?

Математическая формулировка задачи:

Обозначим: K – число голов у дракона, L – число глаз.

если N £ 100
если 100 < N £ 200
если 200 < N

  L = 2 × K (если предположить, что у дракона по 2 глаза на каждой голове).

 

На рисунках 5.2, 5.3 представлены два различных алгоритма A1 и A2 решения этой задачи, на рисунках 5.4, 5.5 – соответствующие им программы.

 

 

Рисунок  5.2 – Алгоритм А1 решения задачи

 

 


 

 

Рисунок  5.3 – Алгоритм А2 решения задачи


 

Program Example_4; { Программа по алгоритму А1 }

Var n,k,l : integer;

begin

Writeln;

Write('Сколько лет дракону? '); Read(n);

If n<=100 then k:=n*3

        else if n<=200 then k:=300+(n-100)*2

                       else k:=500+n-200;

l:=2*k;

Writeln('У вашего дракона ',k,' голов и ',l,' глаз')

end.

Рисунок  5.4 – Программа решения задачи по алгоритму А1

 

 

Program Example_5; { Программа по алгоритму А2 }

Var n,k,l : integer;

begin

Writeln;

Write('Сколько лет дракону? '); Read(n);

If n<=100 then k:=n*3;

If (100 < n) and (n<=200) then k:=300+(n-100)*2;

If 200 < n then k:=500+n-200;

l:=2*k;

Writeln('Число голов дракона =',k);

Writeln('Число глаз дракона =',l)

end.

 

Рисунок  5.5 – Программа решения задачи по алгоритму А2

 






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

 

Составной оператор представляет собой группу из произвольного числа операторов, разделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end.

Общий вид составного оператора:

begin <оператор_1>; <оператор_2>; … ;<оператор_n> end;

После слова begin и перед словом end никакие знаки не ставятся. Составной оператор воспринимается как единое целое и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора.



Операторы цикла

 

Если в программе необходимо многократно выполнить некоторые операторы, то для этого используются операторы цикла. В языке Паскаль используются три вида операторов цикла: с предусловием (while …), с постусловием (repeat …) и с параметром (for …).

 

 

5.4.1. Оператор цикла с предусловием (while …)

 

Общий вид оператора:

while <логическое выражение> do <оператор>;

Блок-схема оператора цикла while показана на рисунке 5.6.

 

Рисунок  5.6 – Алгоритм работы оператора while

 

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

В качестве иллюстрации применения оператора while рассмотрим решение следующей задачи.

Для заданного Х найти сумму N членов ряда:

 

Обозначим  i – номер слагаемого;

t – числитель i – го слагаемого;

z - знаменатель i – го слагаемого;

S – искомая сумма.

 

Алгоритм решения задачи представлен на рисунке 5.7, программа – на рисунке 5.8.


Рисунок 5.7 – Алгоритм решения задачи

 

 

Program Example_6;

Var i,n : integer;

x,t,z,s : Real;

begin

Writeln;

Write('X='); Read(x);

Write('N='); Read(n);

s:=0;

i:=1;

t:=x;

z:=1+x;

While i<=n do begin

s:=s+t/z;

t:=t*x;

z:=z+1;

i:=i+1

end;

Write('S=',s)

end.

Рисунок  5.8 – Программа Example_6

5.4.2 Оператор цикла с постусловием (repeat …)

Общий вид оператора:

Repeat

тело цикла

Until <логическое выражение>;

 

Блок-схема оператора цикла repeat представлена на рисунке 5.9.

Рисунок  5.9 – Алгоритм работы оператора Repeat


Задача: Для заданного Х найти сумму членов ряда

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

 

Обозначения:  i – номер члена суммы; z – знаменатель i – го слагаемого; R – величина i – го слагаемого; S – искомая сумма.  
Алгоритм решения задачи показан на рисунке 5.10, программа – на рисунке  5.11.

 

Рисунок 5.10 – Алгоритм решения задачи

 

 

Program Example_7;

Var i : integer;

x,e,z,s,r : Real;

begin

Writeln;

Write('X='); Read(x);

Write('E='); Read(e);

s:=0;

i:=1;

z:=x*x;

Repeat

r:=i*i/z;

s:=s+r;

z:=z*x*x;

i:=i+1

until abs(r) < e;

Write('S=',s)

end.

 

Рисунок 5.11 – Программа Example_7

 

 

5.4.3 Оператор цикла с параметром (for …)

 

Общий вид оператора цикла с параметром:

For <S>:=<SN> to <SK> do <оператор>;

где S - целая переменная, называемая параметром цикла;

- целые выражения, определяющие, соответственно, начальное и конечное значения параметра цикла.

Оператор, стоящий после слова do, называют телом цикла, чаще всего это составной оператор.

Оператор For обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны с шагом 1 все значения параметра цикла от начального до конечного включительно.

На рисунке 5.12 показаны две блок-схемы оператора цикла; первая из них в точности отражает порядок выполнения оператора, а вторая – условная, более наглядна и проста.


 

 

а) Схема выполнения.                                        б) Условное обозначение

Рисунок  5.12 – Блок-схемы оператора цикла

 

В теле цикла запрещается явное изменение значения параметра цикла S и конечного значения SK (например, оператором присваивания).

После завершения работы оператора значение параметра цикла становится неопределенным.

Существует другая, реже используемая, форма оператора for:

For <S>: = <SN> downto <SK> do <оператор>;

Замена служебного слова TO на DOWNTO означает, что шаг наращивания параметра цикла равен (-1), а управляющее условие приобретает вид S ³ SK.


 

Задача: Вычислить сумму и количество тех двузначных чисел, которые нацело делятся на 3 и не делятся на 4.

 

Алгоритм решения задачи представлен на рисунке 5.13, программа решения – на рисунке 5.14.

Рисунок 5.13 – Алгоритм решения задачи

 


 

Program Example_8;

Var i,n,s : integer;

begin

Writeln;

s:=0;

n:=0;

for i:=10 to 99 do

if (i mod 3 = 0) and (i mod 4 <> 0) then begin

    s:=s+i;

    n:=n+1

end;

Writeln('S=',s,' n=',n)

end.

Рисунок 5.14 – Программа Example_8

 

 











Дата: 2019-03-05, просмотров: 205.