Базовые элементы и структура языка PASCAL.

Введение

В методических указаниях описываются базовые понятия языка программирования TURDO PASCAL.

PASCAL (Паскаль) лучше других языков подходит для обучения программированию. Он был разработан в 1968-1971гг. Н. Виртом в Цюрихском институте информатики (Швейцария). Первоначальная цель разработки языка PASCAL - необходимость инструмента для обучения программированию.

С момента создания языка различные фирмы создали большое количество компиляторов. Компилятор – программа, обеспечивающая перевод программ с языка высокого уровня(приближенного к человеку) на язык более низкого уровня (близкий к ЭВМ), или машинно-зависимый язык. Одной из наиболее удачных версий стала разработка фирмы Borland, в которой были объединены редактор текстов и высокоэффективный компилятор. Созданная среда стала называться TURDO PASCAL, а язык получил название TURDO PASCAL. Язык обладает расширенными возможностями по сравнению со стандартным языком PASCAL.

Среда программирования PASCAL позволяет создавать тексты программ, компилировать их, находить и исправлять ошибки, компоновать программу из отдельных модулей, отлаживать и выполнять программу.

Методические указания представляют собой вводный курс в язык программирования TURBO PASCAL.

Базовые элементы и структура языка PASCAL.

Алфавит и словарь языка.

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

В качестве букв используются прописные и строчные буквы латинского алфавита, знак подчеркивания. Также при написании программ используются специальные символы + - * / = < > [ ] { } ( ) @ . , : ; # $ ^

Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями и несущие определенный смысл в программе. Разделителем может служить пробел, символ конца строки, комментарий. Слова подразделяются на зарезервированные, стандартные идентификаторы и идентификаторы пользователя.

Зарезервированное или служебное слово – это слово, которое в языке программирования имеет определенное смысловое значение.

Идентификатором является последовательность букв, цифр и знаков подчёркивания, которая начинается с буквы или символа подчёркивания и не содержит пробелов. Идентификатор может иметь любую длину, но значимыми являются только первые 63 символа.

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

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

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

Структура программы.

Программа, написанная на языке PASCAL, имеет следующие разделы

1. заголовок программы.

PROGRAM_ имя программы;

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

2. программный блок.

2.1. список имен подключаемых библиотечных модулей – экрана (CRT), графики (GRAPH).

USES_имя1[,имя2, …];

2.2. раздел описания меток – имена меток перечисляются через запятую после зарезервированного слова. В программе после метки ставится двоеточие. Метка позволяет выполнить переход на оператор, следующий за ней, из любого места программы с помощью оператора перехода GOTO.

LABEL_имя1[,имя2,…];

2.3. раздел описания констант. Выражения присваивания значений константам отделяются друг от друга точкой с запятой.

CONST_идентификатор1=значение1[; идентификатор2= значение2;…];

2.4. раздел описания типов данных. За служебным словом TYPE следуют одно или несколько определений типов, разделенных точкой с запятой. Тип данных может быть описан и непосредственно в разделе описания переменных.

TYPE_имя типа = значение типа;

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

VAR_идентификатор1, идентификатор2,…:тип переменных;

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

PROCEDURE_имя(формальные параметры : тип);

BEGIN

Тело процедуры

END;

FUNCTION_имя(формальные параметры : тип):тип результата;

BEGIN

Тело функции

END;

3. раздел операторов, т.е. сама программа. Операторы выполняются в том порядке, в котором они записаны, в соответствии с синтаксисом и правилами пунктуации языка PASCAL. Слова BEGIN и END являются аналогами открывающейся и закрывающейся скобок в обычных арифметических выражениях. В конце программы после оператора END ставится точка.

BEGIN

Операторы программы через ;

END.

Комментарийзаписывается в программе в любом месте, где разрешен пробел, в фигурных скобках {комментарий} или скобках со звездочкой (*комментарий*). В тексте комментария не должны находиться знаки его ограничения { и (*. Ограничители комментария удобно использовать в процессе отладки программы, временно исключая выполнение какой-либо части программы.

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

Пример 1: Программа расчета объема шара.

PROGRAM share; заголовок программы}

USES crt; {подключение модулей}

CONST p=3.14; {описание констант}

VAR rad: integer; v: real;{описание переменных}

BEGIN {раздел операторов}

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

rad:=4; {задание значения радиуса шара}

v:=3*p*rad*rad*rad/4; {вычисление объема шара}

write (‘ объем шара - ’,v); end.{вывод результата}

Простые типы данных.

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

Целый и вещественный тип. В PASCAL имеется пять стандартных типов целых данных (см табл. 1) и пять типов вещественных данных (см табл.2). Они различаются диапазоном, наличием знака и размером занимаемой памяти.

Значение вещественного типа может быть представлено в двух видах: числом с фиксированной точкой и плавающей точкой. Число с фиксированной точкой изображается десятичным числом с дробной частью, которая отделяется от целой части точкой. Например: 15.5, 12.00, -321.897, 0.33.

Таблица 1. Целые типы данных

Тип Название Диапазон значений Память байт Формат
Byte Shortint   Integer Word Longint Байт Короткое цел. Целое Слово Длин. целое 0..255 -128..127   -32768..32767 0…65535 -2147483648..   Без знака Знаковый   Знаковый Без знака Знаковый  

Таблица 2. Вещественные типы данных.

Тип Название Диапазон значений Память байт Число значащих цифр
Real     Single     Double     Extended     Comp Вещественный   Одинарн. точности   Двойной точности   Расширенный   Большое целое 2.9*10-39-1.7*1038     1.5*10-45-3.4*1038     5*10-324-1.7*10308     3.4*10-4932 - 1.1*104932   -9.2*1018-9.2*1018                 11-12     7-8     15-16     19-20     19-20

Число с плавающей точкой имеет вид mEp, где m - мантисса, p – порядок числа. В качестве m могут быть целые и действительные числа с фиксированной точкой, в качестве p – только целые числа. Мантисса и порядок могут содержать знаки +, -.

Математическая запись Запись с плавающей точкой
0,000002 2E-6
0,34*104 0.34E+4;
-20,5*1012 -20.5E12;
12*10-5 12E-5

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

Математическая запись Вывод без указания формата
2.0000000000E+00
0,5 5.0000000000E-01
0,0064 6.4000000000E-03
236,2 2.3620000000E+02

Изменить стандартную форму вывода можно, используя формат в операторе write:

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

Например: используя формат вывода write(a:8:5) для вывода числа 7.567895135 получим на экране монитора 7.56789.

Логический (булевский) тип (boolean) представлен двумя значениями True (истина) и False (ложь) и используется в логических выражениях и выражениях отношения. Занимает этот тип 8 бит.

Символьный тип (Char) – это тип данных, элементами которого являются буквы, цифры, знаки препинания и специальные символы. Каждому символу алфавита соответствует числовой код от 0 до 255, который занимает в памяти 1байт. Система кодирования символов в PASCAL– ASCII.

Перечисляемый тип. Этот тип не является стандартным и задаётся перечислением значений. Эти значения образуют упорядоченное множество.

Например, если в программе записан оператор:

Type day=(sat, sun, mon, tue, wed, thu, fri);

Тогда тип day будет включать в себя значения sat, sun, mon, tue, wed, thu, fri.

Как перечисляемые типы данных можно рассматривать и стандартные типы: integer, boolean, char. Имена значений, перечисленные в описании типа, являются константами этого типа.

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

Например, Type chislo=1..25; Ch=’a’..’z’;

Константы.

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

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

Например, CONST а=-0.5; s=3; symbol= ’k’;

Стандартные функции.

Функция возвращает в программу значение (результат своей работы. Обращение к функции осуществляется по имени с указанием в скобках аргумента или списка аргументов через запятые.

Арифметические и тригонометрические функцииможно использовать только с аргументами целого и вещественного типа (см табл. 3).

Таблица 3. Стандартные функции.

Функция Назначение Тип результата
ABS(X) абсолютное значение аргумента совпадает с типом аргумента
SQR(X) квадрат аргумента совпадает с типом аргумента
SQRT(X) квадратный корень из аргумента вещественный
COS(X) косинус аргумента вещественный
SIN(X) синус аргумента вещественный
ARСTAN(X) арктангенс угла вещественный
EXP(X) еХ вещественный
LN(X) натуральный логарифм вещественный
Int(x) целая часть числа вещественный
Frac(x) дробная часть числа вещественный
PI возвращает значение числа p вещественный
RANDOM(N) генерирует значение случайного числа в диапазоне от 0 до N целочисленный
RANDOM генерирует значение случайного числа в диапазоне от 0 до 0,99 вещественный

Функции преобразования типов. Эти функции предназначены для преобразования типов величин, например, символа в целое число, вещественного числа в целое и т.д. Такими функциями являются, например, функции ord(х), которая возвращает порядковый номер аргумента и, таким образом, преобразует величину порядкового типа в величину целого типа, функция round(х), которая округляет вещественное число до ближайшего целого, trunc(х) - выдает целую часть вещественного числа, отбрасывая дробную.

Процедуры ввода-вывода.

Для выполнения операций ввода-вывода служат четыре процедуры: READ, READLN, WRITE, WRITELN. Очистка экрана осуществляется командой CLRSCR.

Процедура чтения READ обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой и имеет формат:

READ(переменная1, переменная2,…переменнаяN);

Здесь переменные – переменные допустимых типов данных, значения этих переменных набираются минимум через один пробел на клавиатуре и высвечиваются на экране. Набираемые значения должны соответствовать типам переменных. После набора данных для процедуры READ нажимается клавиша ENTER. Число переменных в списке может быть любым, разделяются переменные запятыми.

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

Например, при выполнении приведенных ниже операторов, после набора на клавиатуре значений А и В курсор автоматически перейдет на новую строку, где набирают значение переменной NOMER.

READLN(A,B);

READLN(NOMER);

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

WRITE(переменная1, переменная2,…переменнаяN);

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

В процедурах WRITE и WRITELN, как было показано в разделе 1.3, имеется возможность записи выражения, определяющего ширину поля вывода.

Знаки операций.

Все операции в Рascal можно разбить на три группы.

1) Арифметические операции.Эти операции (см табл. 4) применимы только к величинам целых и вещественных типов.

При использовании в качестве знака операции служебных слов div и mod, они должны быть отделены от операндов хотя бы одним пробелом. Например,13 div 3 (результат 4), 17 mod 2 (ответ 1).

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

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

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

= - равно < - меньше <= - меньше или равно

<> - неравно > - больше >= - больше или равно.

3) Логические операции применяются к величинам логического типа, результат операции - тоже логического типа. Имеется одна унарная логическая операция not (отрицание) и три бинарные операции and (и), or (или), xor (исключающее или). Результаты выполнения логических операций приведены в таблице 5.

Пример: переменные имеют следующие значения а=7, b= -5, c=True. Тогда значением выражения (а>0) and (а<10) and (b>-10) будет True.

Таблица 5. Логические операции.

Значение операнда Значение операции
X Y not Х Х and Y Х or Y X xor Y
False False True False False False
False True True False True True
True False False False True True
True True False True True False

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

  1. Вычисления в круглых скобках.
  2. Вычисления значений функций.
  3. Унарные операции.
  4. Операции *, /, div, mod, and.
  5. Операции +, -, or, xor.
  6. Операции отношения.

1.8. Совместимость и преобразование типов данных.

Совместимость типов учитывается при вычислении выражений и выполнении операторов присваивания. Несовместимость типов определяется на этапе компиляции программы; при этом выдается сообщение об ошибке. Если типы операндов выражения не одинаковы, но совместимы, производится преобразование типов для приведения их к одному допустимому типу. Во время вычисления выражений два типа операндов совместимы если:

- оба они одного типа;

- один операнд вещественный, другой - целый;

- один операнд является диапазоном типа второго операнда;

- оба операнда - диапазоны одного и того же базового типа;

- оба операнда - строки;

- один операнд типа строка, другой - символ.

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

1. Написать программу, которая находит частное двух целых чисел.

Program example1;

Var a,b:integer;

c:real;

begin

writeln(‘введите два числа ’);

readln(a,b);

c:=a/b;

writeln(‘c=’,c) end.

2. Написать программу, которая для заданного х вычисляет значение выражения: Базовые элементы и структура языка PASCAL. - student2.ru

Program example2;

Var x,y: real;

begin

writeln(‘введите число ’);

readln(x)

y=sqr(sqr(x))+(x*sqr(x)+12*x)/2+sqrt(sqr(x)*x+10)+sin(x)/cos(x)

writeln(‘y=’,y);

end.

Для вывода вещественного результата можно использовать формат, как это было описано выше. Так, если мы хотим, чтобы результат выводился с точ­ностью до двух знаков после запятой, нужно использовать следующий формат вывода: y:5:2. Тогда оператор вывода будет выглядеть следующим образом: writeln(‘y=’, y:5:2);

3. Найти остаток от деления двух целых чисел.

Program example3;

Var a,b,c:integer;

begin

writeln(‘введите два числа ’);

readln(a,b);

c:=a mod b;

writeln(‘c=’,c)

end.

Переменная c является переменной целого типа, так как тип результата операции mod – целый.

Упражнения.

I. Написать программу, вычисляющую значение выражения

1) Базовые элементы и структура языка PASCAL. - student2.ru 2) Базовые элементы и структура языка PASCAL. - student2.ru

3) Базовые элементы и структура языка PASCAL. - student2.ru 4) Базовые элементы и структура языка PASCAL. - student2.ru

5) Базовые элементы и структура языка PASCAL. - student2.ru 6). Базовые элементы и структура языка PASCAL. - student2.ru

7) Базовые элементы и структура языка PASCAL. - student2.ru 8) Базовые элементы и структура языка PASCAL. - student2.ru

II. Написать программу, которая подсчитывает:

1) периметр квадрата, площадь которого равна а;

2) площадь равностороннего треугольника, периметр которого равен p;

3) среднее арифметическое кубов двух данных чисел;

4) среднее геометрическое модулей двух данных чисел;

5) гипотенузу прямоугольного треугольника по двум данным катетам а, b;

6) площадь прямоугольного треугольника по двум катетам а, b;

7) периметр прямоугольного треугольника по двум катетам а, b;

8) периметр треугольника, заданного координатами вершин (х1, у1), (х2, у2), (х3,y3);

9) длину окружности и площадь круга с радиусом R;

10) площадь кольца с внутренним радиусом R1 и внешним R2.

Операторы ветвления.

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

Оператор IF относится к операторам разветвления процесса обработки данных. Он позволяет выбрать для выполнения один из простых или составных операторов или не выбрать ни одного в зависимости от условия разветвления. Условный оператор IF может иметь одну из форм: полную или сокращенную.

1. IF_условие_THEN_оператор1_ELSE_оператор2;

2. IF_условие_THEN_оператор;

Условие – выражение булевского типа, при его записи могут использоваться все возможные операции отношения. Если значение выражения истинно, то выполняется оператор1, если ложно – оператор2. Во втором варианте оператора IF, если выражение ложно, то выполняется оператор, следующий в программе сразу за оператором IF. Один оператор IF может входить в состав другого оператора IF, т.е. этот оператор может быть вложенным. При вложенности операторов каждое ELSE соответствует тому THEN, которое ему непосредственно предшествует.

Если необходимо выполнить более одного оператора после ключевого слова then или else, то надо записать составной оператор begin …end:

if условие then begin

группа операторов1

end

else begin

группа операторов2

end;

Базовые элементы и структура языка PASCAL. - student2.ru

Рисунок 2.1. Блок-схема полной формы условного оператора.

Базовые элементы и структура языка PASCAL. - student2.ru

Рисунок 2.2. Блок-схема сокращенной формы условного оператора.

Оператор выбора.

Оператор выбора позволяет сделать выбор из произвольного числа имеющихся вариантов и имеет формат:

CASE_выражение-селектор OF

константа_1 : оператор1;

константа_2 : оператор2;

……………………………

Константа_ N : операторN

ELSE операторE

END;

Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна вычисленному значению селектора. Если ни одна из констант не равна текущему значению селектора, то выполняется оператор, стоящий после ELSE.

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

1. Найти максимальное из двух чисел a и b

Program example1;

Var a,b,max:real;

begin

writeln(‘введите два числа ’);

readln(a,b);

if a>b then max:=a

else max:=b;

writeln(‘максимальное значение=’,max:5:2)

end.

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

Базовые элементы и структура языка PASCAL. - student2.ru

В данной задче вся числовая прямая разбивается на три интервала: [0;0], [- Базовые элементы и структура языка PASCAL. - student2.ru ;0], [0; + Базовые элементы и структура языка PASCAL. - student2.ru ]. Заданная точка х может попасть в один из них. Сначала проверяется, попадает ли точка в первый интервал. Если попадает, то функцию вычисляем по первому выражению. Если нет, то точка может принадлежать второму или третьему интервалу. Поэтому проверяем принадлежность точки второму интервалу. Если точка принадлежит интервалу, то вычисляем функцию по второму выражению. Если нет, то можно без проверки принадлежности точки третьему интервалу вычислять функцию по третьему выражению.

Program example2;

Var x,y:real;

begin

writeln(‘введите x ’);

readln(x);

if x=0 then y:=0

else if x<0 then y:=x+1

else y:=sqr(x)-1;

writeln(‘y(‘,x,’)=’,y:5:2)

end.

3. Дана точка с координатами x,y. Определить принадлежит ли эта точка заданной заштрихованной области.

Базовые элементы и структура языка PASCAL. - student2.ru

Program example3;

Var x,y:real;

begin

writeln(‘введите координаты точки ’);

readln(x,y);

if (abs(x)<4) and (abs(y)<2) then writeln(‘точка внутри области’)

else if (abs(x)>4) or (abs(y)>2 then writeln(‘точка вне области’)

else writeln(‘точка на границе области’)

end.

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

Program example4;

Var i:integer;

begin

READ(I);

CASE I OF

1..10: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 1 до 10’);

11..20: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 11 до 20’);

21..30: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 21 до 30’);

ELSE WRITELN(‘число I=’,I:3,’находится вне диапазона 1 - 30’);

end; end.

Упражнения.

Для произвольных значений аргумента вычислить значение функции

1. Базовые элементы и структура языка PASCAL. - student2.ru

2.. Базовые элементы и структура языка PASCAL. - student2.ru

3. Базовые элементы и структура языка PASCAL. - student2.ru

4. Вычислить Базовые элементы и структура языка PASCAL. - student2.ru .

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

а) Базовые элементы и структура языка PASCAL. - student2.ru ; б) Базовые элементы и структура языка PASCAL. - student2.ru ; в) Базовые элементы и структура языка PASCAL. - student2.ru

6. Найти минимальное число из x1, x2, x3. Расположить эти три числа в порядке возрастания, убывания.

7. Дана точка на плоскости М (х, у ). Составить программу, которая дает ответ на вопрос: «Принадлежит ли точка заданной области: окружности с радиусом=2, кольцу с внешним радиусом 10 и внутренним радиусом 2, полукольцу?»

8. Дана точка с координатами x, y. Определить принадлежит ли эта точка заданной области:

Базовые элементы и структура языка PASCAL. - student2.ru

9. Дано действительное число а. Для функций у = f(х), графики которых представлены на рисунке, вычислить f(a).

Базовые элементы и структура языка PASCAL. - student2.ru Базовые элементы и структура языка PASCAL. - student2.ru

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

Цикл - это повторяющаяся последовательность операторов. Операторы, которые выполняются в ходе цикла, называются телом цикла. В Pascal имеется три типа циклов: while –цикл с предусловием, repeat – цикл с постусловием, for- цикл с параметром. Все операторы цикла могут быть вложенными.

Цикл While.

Оператор while организует выполнение оператора или группы операторов неизвестное заранее число раз. Выход из цикла осуществляется, если условие завершения цикла окажется ложным. Формат оператора:

WHILE_условие_DO_тело цикла;

Условие – булевское выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, если условие выполняется, то тело цикла выполняется и снова вычисляется значение условия. Если условие не выполняется, то происходит выход из цикла и переход к первому после WHILE оператору. В этом операторе цикла программист сам должен заботиться об изменении переменных, определяющих выход из цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin ... end. Блок-схема рассмотренного оператора показана на рис. 3.1.

Базовые элементы и структура языка PASCAL. - student2.ru

Рис. 3.1. Блок-схема цикла WHILE.

Цикл Repeat.

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

REPEAT

тело цикла;

UNTIL_условие;

Условие – выражение булевского типа, при его написании допустимы булевские операции и операции отношения. Тело цикла – простой или составной оператор. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие не выполняется, то операторы тела цикла выполняются еще раз, если выполняется – происходит выход из цикла (см рис. 3.2).

Базовые элементы и структура языка PASCAL. - student2.ru

Рис. 3.2. Блок-схема цикла Repeat.

Цикл FOR.

Оператор повтора FOR может иметь два формата:

1. FOR_параметр-цикла:=S1_TO_S2_DO_оператор;

2.FOR_параметр-цикла:=S1_DOWNTO_S2_DO_оператор;

где S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла. FOR…DO – заголовок цикла, оператор – тело цикла. Тело цикла может быть простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла с увеличением параметра цикла (TO) или с уменьшением параметра цикла (DOWNTO) на единицу.

В операторе повтора FOR Паскаль не допускает изменения параметра цикла на величину, отличную от единицы. В составе оператора запрещены операторы, меняющие значение параметра цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin … end;

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

1. Найти все натуральные числа от 1 до n, используя оператор цикла while.

Program example1;

Var i,n:integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln(n);

i:=1;

while i<=n do

begin writel(‘ ’,i);

i:=i+1

end

end.

2. Найти все натуральные числа от 1 до n, используя оператор цикла repeat.

Program example2;

Var i, n: integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln (n);

i:=1;

repeat write(‘ ’,i);

i:=i+1;

until i>n

end.

3. Написать программу приближённого вычисления суммы

Базовые элементы и структура языка PASCAL. - student2.ru с точностью Базовые элементы и структура языка PASCAL. - student2.ru

По условию задачи считается, что нужное приближение получено, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое по модулю меньше, чем данное малое положительное число Базовые элементы и структура языка PASCAL. - student2.ru - это и все последующие слагаемые уже не надо учитывать. В таких задачах следует вычислять каждый член последовательности из предыдущего с помощью рекуррентного соотношения. В данном примере, если уже получено значение выражения xi-1/(i-1)!, то для получения xi/i! достаточно умножить значение предыдущего выражения на x/i.

Program example3;

Var i:integer;

x, eps, a,s:real; {а - очередной член ряда}

begin

writeln(‘введите x ’);

readln(x);

writeln(‘введите eps ’);

readln(eps);

i:=0; s:=0; a:=1;

while abs(a)>=eps do

begin

s:=s+a;

i:=i+1;

a:=a*x/i

end;

write(‘s=’,s) end.

4. Написать программу для вычисления суммы

Базовые элементы и структура языка PASCAL. - student2.ru

Знак Базовые элементы и структура языка PASCAL. - student2.ru в формуле означает суммирование слагаемых, каждый из которых имеет вид Базовые элементы и структура языка PASCAL. - student2.ru , где n принимает значения от 1 до k.

Program example4;

Var i,n:integer;

x, s, a :real; {а - очередной член ряда}

begin

writeln(‘введите n’);

readln(n);

writeln(‘введите x ’);

readln(x);

s:=0; a:=-1;

for i:=1 to n do begin

begin

a:=-a*x/i

s:=s+a;

end;

write(‘s=’,s)

end.

Упражнения.

1. Даны числа а, b (а>b). Получить все члены последовательности a, a2,a3… меньшие числа b

2.Найти все положительные числа из диапазона от А до В с шагом H.

3. Найти сумму чисел из диапазона А до В(A<=B) с шагом H.

4. Вычислить бесконечную сумму ряда с заданной точностью Базовые элементы и структура языка PASCAL. - student2.ru =0,001:

а) Базовые элементы и структура языка PASCAL. - student2.ru

б) Базовые элементы и структура языка PASCAL. - student2.ru

в) Базовые элементы и структура языка PASCAL. - student2.ru

г) Базовые элементы и структура языка PASCAL. - student2.ru

8. Даны действительные числа а1, а2 … аn. Найти:

Базовые элементы и структура языка PASCAL. - student2.ru

9. Составить программу нахождения количества делителей заданного натурального числа n (n=1000) Число k является делителем, если при делении n на k остаток от деления равен 0. Поэтому надо перебрать все числа от 1 до n и проверить являются ли они его делителями.

10. Найти факториал числа n.

11. Вычислить y= Базовые элементы и структура языка PASCAL. - student2.ru ,если хi изменяется от 0 с шагом 0,1 одновременно с i.

Одномерные массивы.

Примеры.

1. Вычисление суммы элементов массива.

Program example1;

Var a:array[1..100] of real;

i,n:integer;

s:real;

begin

writeln(‘введите число элементов массива’);

readln(n);

s:=0;

for i:=1 to n do

Begin

Writeln(‘a[‘,i,’]=’);

Readln(a[i])

End;

for i:=1 to n do

S:=s+a[i];

writeln(‘s=’,s:5:2)

end.

2. Поиск минимального (максимального) элемента массива.

Program example2;

Var a:array[1..100] of integer;

i, n, min, nmin:integer;

begin

writeln(‘введите число элементов массива’);

readln(n);

for i:=1 to n do

Begin

Writeln(‘a[‘,i,’]=’);

Readln(a[i])

End;

Min:=a[1]; {в качестве минимального элемента полагаем первый элемент массива}

Nmin:=1; {номер минимального элемента}

for i:=2 to n do

if a[i]<min {проверяем, если очередной элемент меньше минимального}

then begin

min:=a[i]; {тогда его полагаем минимальным}

nmin:=i; {запоминаем номер этого элемента}

end;

writeln(‘минимальный элемент a[’,nmin,’]=’,min);

writeln(‘номер минимального элемента=’, nmin);

end.

3. Программа, подсчитывающая количество пар равных соседних элементов в массиве целых чисел.

Program example3;

Var a:array[1..100] of integer;

i,n,k: integer;

real;

begin

writeln(‘введите число элементов массива’);

readln(n);

for i:=1 to n do

Begin

Writeln(‘a[‘,i,’]=’);

Readln(a[i])

End;

k:=0;

for i:=1 to n-1 do begin

if a[i]=a[i+1] {если соседние элементы равны}

then k:=k+1 {количество равных соседних элементов увеличиваем на единицу}

end;

Writeln(‘k=’, k)

end.

4. Сортировка массива по убыванию методом поплавка.

Program example4;

uses crt;

const n=15;

var a:array [1..n] of integer;

i,j,b:integer;

begin

clrscr;

writeln(' ввод массива');

for i:=1 to n do begin

a[i]:=random(50);

write(a[i]:4)

end;

writeln;

{ сортировка по убыванию}

for i:=1 to n-1 do begin

for j:=1 to n-i do begin

if a[j]<a[j+1] then{сравнение рядом стоящих элементов}

begin b:=a[j]; {перестановка элементов}

a[j]:=a[j+1];

a[j+1]:=b

end

end;

end;

writeln('массив после сортировки');

for i:=1 to n do write(a[i]:4);

end.

Упражнения.

1. В массиве A(20) подсчитать среднее арифметическое отрицательных элементов, сумму квадратов четных элементов.

2. Вычислить сумму Базовые элементы и структура языка PASCAL. - student2.ru где, Базовые элементы и структура языка PASCAL. - student2.ru - параметры, меняющиеся одновременно с номером элемента массива: Базовые элементы и структура языка PASCAL. - student2.ru - от 0,2 с шагом 0,5; Базовые элементы и структура языка PASCAL. - student2.ru - от 1 с шагом 0,25.

3. Вычислить сумму Базовые элементы и структура языка PASCAL. - student2.ru где: Базовые элементы и структура языка PASCAL. - student2.ru - параметр, меняющийся одновременно с номером элемента массива от 0 с шагом 0,05.

4. В массиве В(100) подсчитать сумму каждого десятка элементов. Из найденных элементов сформировать отдельный массив.

5. В массиве В(20) найти элементы, кратные трем, их порядковые номера, количество и сумму. Из найденных элементов сформировать отдельный массив.

6. В массиве А(20) найти максимальное и минимальное значения среди элементов и их среднее арифметическое. Значения элементов массива задаются формулой: Базовые элементы и структура языка PASCAL. - student2.ru При делении на 0 значение элемента массива принять равным 1.

7. Для вектора (х1, х2,…………., х20), имеющего положительные и отрицательные элементы. Вычислить среднее арифметическое положительных элементов массива и сумму элементов, стоящих на четных местах.

8. Составить программу для упорядочивания элементов вектора (х1, х2,…………., х100), расположив их в порядке возрастания в том же массиве.

9. Дан вектор М(20). Расположить элементы вектора по увыбанию.

10. В массиве С(100) найти количество элементов, лежащих в диапазоне от А до В, где А и В – з

Наши рекомендации