Главная страница

Основы языка программирования turbo pascal. Базовый уровень 1Алфавит языка Паскаль


Скачать 0.8 Mb.
НазваниеОсновы языка программирования turbo pascal. Базовый уровень 1Алфавит языка Паскаль
АнкорPascal
Дата14.04.2023
Размер0.8 Mb.
Формат файлаpdf
Имя файлаpaskal_bazovyy_kurs.pdf
ТипДокументы
#1061618

ОСНОВЫ ЯЗЫКА
ПРОГРАММИРОВАНИЯ
TURBO PASCAL
базовый уровень
РАБОЧАЯ ТЕТРАДЬ
_____________________________________________
Фамилия Имя Отчество
Брянск 2019

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
1
Алфавит языка Паскаль

26 латинских строчных и 26 латинских прописных букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z

подчеркивание _

10 цифр:
0 1 2 3 4 5 6 7 8 9

знаки операций:
+ - * / = <> < > <= >= := @

ограничители (разделители):
. , ' ( ) [ ] (. .) { } (* *) .. : ;

спецификаторы:
^ # $

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
2
Структура программы
Структура программы в общем виде:
Упрощенная структура программы:
{1. заголовок программы}
program Имя_Программы;
{2. раздел указания используемых
модулей}
uses
Список_Используемых_Моду
лей;
{3. Раздел описаний}
label Описания_меток;
const Описания_Констант;
type Описания_Типов;
var Описания_Переменных;
procedure Описания_Процедур;
function Описания_Функций;
exports
Описания_Экспортируемых_Имен;
{4. Раздел операторов}
begin
Операторы
end.
{1. заголовок программы}
program Имя_Программы;
{2. раздел указания используемых
модулей}
uses
Список_Используемых_Моду
лей;
{3. Раздел описаний}
const Описания_Констант;
var Описания_Переменных;
{4. Раздел операторов}
begin
Операторы программы
end.
Команды языка программирования называются операторами.
Разделителем операторов в Паскале является ; (точка с запятой).
Комментарий представляет собой фрагмент текста программы, ограниченный символами { }. Комментарии в программе выполняют информационную функцию.
{Моя первая программа } program first; begin writeln(‘Hello, World!’) end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
3
Служебные (зарезервированные) слова

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
4
Данные
Программа в своей работе имеет дело с данными.
Некоторые данные устанавливаются еще до того, как программа начнет выполняться, а после ее запуска сохраняют свои значения неизменными на всем протяжении работы программы. Это константы.
Другие данные могут изменяться во время выполнения программы. Они называются переменными.
✓ Различие между переменной и константой довольно очевидно: во время выполнения программы значение переменной может быть изменено, а значение константы нет.
Запишите данные, которые являются константами:
Запишите данные, которые являются переменными:
Данные
Переменные
Константы

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
5
Идентификаторы
Идентификаторы или имена элементов, являются определяемыми программистом последовательностями латинских букв и цифр. Для идентификаторов принято следующее соглашение – на первом месте всегда стоит латинская буква, следующие символы могут быть либо латинскими буквами, либо цифрами в любой комбинации, либо символ подчеркивания “_”.
Пробелы и другие знаки являются недопустимыми символами.
Имя может содержать произвольное количество символов, но значащими являются 63 символа.
Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные
слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы.
В Turbo Pascal большие и малые буквы воспринимаются транслятором одинаково, например, Proba, proba и PROBA являются одинаково воспринимаемыми идентификаторами.
Первым идентификатором в тексте программы является имя программы.
Запишите примеры идентификаторов:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
6
Стандартные типы данных
1. Группа целых типов (Shortint, Integer, Longint, Byte, Word).
2. Группа действительных типов (Single, Real, Double, Extended, Comp).
3. Логический тип (Boolean).
4. Символьный (Char).
5. Строковый (String).
6. Указательный (Pointer).
7. Текстовый тип (Text).
Запишите величины, обозначаемые целыми числами:
Запишите величины, обозначаемые дробными числами:
Запишите величины, имеющие только два значения:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
7
Группа целых типов
Название типа
Тип
Диапазон
значений
Требуемая
память
Короткое целое со
знаком
Shortint
-128 .. 127 1 байт
Целое со знаком
Integer
-32768 .. 32767 2 байта
Длинное целое со
знаком
Longint
-2147483648 2147483647 4 байта
Короткое целое без
знака
Byte
0 .. 255 1 байт
Целое без знака
Word
0 .. 65535 2 байта
Запишите примеры:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
8
Группа вещественных типов
Название типа
Тип
Диапазон
значений
Количество
цифр
мантиссы
Размер
(байт)
Вещественное число
одинарной точности
Real
2.9e-39 1.7e+38 11 6
Вещественное число
Single
1.5e-45 3.4e+38 7
4
Вещественное число
двойной точности
Double 5.0e-324 ..
1.7e+308 15 8
Вещественное число
повышенной
точности
Extended 3.4e-4932 ..
1.1e+4932 19 10
Целое
число
в
формате
вещественного
Comp -9.2e+18 ..
9.2e+18 19 8
Запишите примеры:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
9
Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой
Е:
28.6 0.65 -0.018 4.0
5Е12 -1.72Е9 73.1Е-16
Булевскому типу данных соответствует идентификатор Boolean. Переменные булевского типа имеют размер 1 байт и могут содержать значения TRUE или
FALSE.
Значению FALSE соответствует 0, любое число отличное от нуля считается
TRUE.
Символьному типу соответствует стандартный идентификатор Char.
Переменные и константы символьного типа могут принимать значения из множества символов кода ASCII.
Определите символьные константы:
Определите символьные переменные:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
10
Строка символов представляет собой последовательность символов из набора символов кода ASCII, заключенную в одиночные кавычки.
Строки в языке ПАСКАЛЬ - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа.
Для строковых типов данных имеют смысл только отношения «равно» и
«неравно».
Определите строковые константы:
Определите строковые переменные:
Верно ли выражение:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
11
Операции и выражения
Выражение:
• В программировании служит для определения действий.
• Выражения состоят из операций и операндов.
• По количеству операндов выражения делятся на унарные (один операнд с символом операции: -5, -(-6), not False) и бинарные (два операнда, между которыми ставится символ операции: 5+7, (4-2)*5+10, True or False - истина или ложь).
Классификация операций:
1. Арифметические операции:

унарные: +, -

бинарные: +, -, *, /, div, mod
2. Операции отношения: =, <>, <, >, <=, >=
3. Булевские (логические) операции:

not (логическое отрицание);

and (лог. И);

or (лог. ИЛИ);

xor (исключающее ИЛИ).
4. Строковая операция (конкатенация) +
div – частное от деления
7 div 3 = 2
A:=10 div 3;
mod – остаток от деления
7 mod 3 = 1
A:=25 mod 10;

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
12
Перестановка цифр

Дано трехзначное число. Переставить цифры числа.
Например, для числа 123 программа должна выдать 321.
Program num3;
Var a: integer;
Begin
Readln(a);
// a div 100 = 1
// a mod 10 = 3 -- 300
// (a div 10) mod 10 = 2 -- 20
A:= (a mod 10)*100 + ((a div 10) mod 10)*10 + (a div
100);
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
13
Стандартные функции и операции
Abs (x) соответствует |x|;
ArcTan (x) соответствует arctg(x);
Cos (x) соответствует cos(x);
Sin (x) соответствует sin(x);
Exp (x) соответствует e
x
;
Ln (x) соответствует ln(x);
Sqr (x) соответствует x
2
;
Sqrt (x) соответствует
x
;
Frac (x) - дробная часть: X – INT(X);
Int (x) возвращает целую часть числа;
Round (x) возвращает число равное целой части (округление по правилам арифметики);
Trunc(x) возвращает округленное число, отбрасывая дробную часть числа x.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
14
Запишите выражения на языке программирования Pascal:
(
)
(
)
(
)
(
)
(
)
2 2
2 4
2
ln
)
;
cos sin
)
;
cos sin
)
;
ln
2
,
0
sin
5
,
0 2
)
c
x
c
ax
d
x
x
c
e
y
x
x
y
x
b
y
x
c
y
x
a
a
y
x
+
+

+
+
+
+


+
+


ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
15

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
16
Операторы
Операторы предназначены для описания действий, которые будут выполняться при реализации алгоритма.
Простые операторы не содержат в себе других операторов.
1. Оператор присваивания
:=
2. Оператор процедуры состоит из имени, за которым в круглых скобках может располагаться список фактических параметров.
Например, Swap(x, y).
3. Оператор перехода
GoTo
Структурные операторы включают в себя другие операторы.
1. Составной оператор
2. Условные операторы (if, case)
3. Операторы цикла (while, repeat, for)
4. Оператор присоединения with

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
17
Процедуры ввода-вывода
Процедуры ввода являются предопределенными.
Формат процедур
Ввод данных:
Read [(<список ввода>)];
Readln [(<список ввода>)];
Read обеспечивает ввод данных в память ЭВМ, при этом курсор остается на месте. Readln обеспечивает ввод данных в память ЭВМ, при этом осуществляется перевод курсора на новую строку.
Вывод данных:
Write [(<список вывода>)];
Writeln [(<список вывода>)];
Write предназначена для вывода значений на экран. Writeln выводит значения данных на экран и перводит курсор в начало следующей строки.
Список вывода состоит из идентификаторов переменных и выражений, отделенных друг от друга запятой.
В списке вывода могут присутствовать параметры, задающие формат вывода результатов. После идентификатора следует двоеточие и число, определяющее число знакомест для вывода, после второго двоеточия указывается количество знаков после запятой.
Пример: program example_in_out; var b, c: integer; v: real; begin write(‘b=’); readln(b); write(‘c=’); readln(c); v:=(b+c)/3.56; writeln(‘v=’,v:8:4) end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
18
Операторы ветвления
Оператор условия If <условие> then <оператор - да> else <оператор - нет>;
предназначен для реализации простого ветвления алгоритма.
Простая конструкция
Расширенная конструкция
Пример:
Проверим квадратное уравнение на наличие корней. для чего вычислим дискриминант и проверим его знак. program example_uravnenie; var a, b, c, d: real; begin writeln(‘Введите коэффициенты квадратного уравнения А,
В и С’); readln(a, b, c); d:=sqr(b)-4*a*c;
if d>0
then writeln(‘Вещественные корни существуют’)
else writeln(‘Нет вещественных корней’); end.
Действие
Ложь
Истина
Условие
Действие1
Ложь
Истина
Условие
Действие2

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
19
Даны действительные числа x, y, z.
Напишите алгоритмы получения: а) max(x,y), б) min(x,y), в) min(y,max(z,x)).

Вводятся три числа. Определить, все ли из них различны.
Program difch;
Var a,b,c: Integer; fl: Boolean;
Begin
Randomize;
A:=random(4); b:=random(4); c:=random(4);
Fl:= (a = b) and (a = c);
Writeln(fl);
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
20
Оператор выбора
Case <селектор> of
<значение1>:<оператор1>;
<значение2>:<оператор2>;
………………………………;
<значениеN>:<операторN>
Else <оператор - нет>;
Оператор Case используется при множественном разветвлении алгоритма, например, если необходимо по числовому значению дня недели указать его название (1 - понедельник, 2 - вторник, 3 – среда и т.д.). program example_case; var n: 1..7; {перечисляемый тип, здесь допускает только значения от 1 до 7 } begin writeln(‘Введите числовое значение дня недели’); readln(n);
case n of
1: writeln(‘понедельник’);
2: writeln(‘вторник’);
3: writeln(‘среда’);
4: writeln(‘четверг’);
5: writeln(‘пятница’);
6: writeln(‘суббота’)
7: writeln(‘воскресенье’); end; end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
21
Циклы
Циклы (операторы повтора) используются в программе при необходимости неоднократного повторения какого-либо оператора или группы операторов.
В Pascal различают три вида циклов:
□ цикл с параметром For,
□ цикл с предусловием While,
□ цикл с постусловием Repeat.
Опишите ситуации, когда возникает необходимость повторить некоторые действия:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
22
Оператор повтора For применяется, когда заранее известно число повторений.
Переменная, хранящая количество повторений называется параметром цикла.
Существует две структуры данного оператора.
Счет по возрастанию:
For <параметр цикла>:=<целочисленное выражение1 > to < целочисленное
выражение2> do <оператор цикла>;
Счет по убыванию:
For <параметр цикла>:=<целочисленное выражение2 > downto <
целочисленное выражение1> do <оператор цикла>;
Пример:
Вывести на экран результат умножения 7 на числа от 11 до 25. program example_for; var i: byte; {i- параметр цикла} r: integer; begin writeln (‘Таблица умножения для 7’);
for i:=11 to 25 do begin
{при выполнении в цикле более одного оператора ставятся операторные скобки Begin end;} r:=7*I; write(r:5);
{вывод результата в строку с промежутком в 5 позиций} end; end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
23
Формат цикла с предусловием While <условие> do <тело цикла>; Проверка условия осуществляется перед циклом, цикл выполняется, если условие принимает значение True (истина).
Пример
Посчитать сумму 10 произвольно введенных чисел. program example_summ; const limit=10;
{константа ограничения ввода чисел} var i: integer; sum, ch: real; begin i:=0;
{счетчик чисел} sum:=0;
{переменная накапливающая сумму чисел}
while i< limit do
begin i:=i+1; write(‘введите ’,i,’-е число: ’); readln(ch); sum:=sum+ch; end;
{конец цикла} writeln(‘Сумма равна ’,sum:5:2); {переменную sum вещественного типа выводим в
5 позиций с 2мя знаками в дробной части} end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
24
Найти сумму цифр в записи 5-значного натурального числа можно следующим образом:
Program SUM;
Var a,b,s,k:Integer;
Begin
Readln(a); s:=0;
While a<>0 do
begin b:=b mod 10; s:=s+b; a:=trunc(a/10); { a := a div 10 }
end;
Writeln(s);
End.
Решите эту задачу, используя цикл другой вид цикла:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
25
Цикл с постусловием
Repeat
<тело цикла>
Until <условие>;
Первоначально условие принимает значение False (ложь). Цикл выполняется до тех пор, пока условие не станет True (истина).
Пример: Подсчитать количество чисел, введенных до первого отрицательного. program rep_until; var ch: real; n: byte; begin writeln (‘Подсчитать количество чисел, введенных до первого отрицательного’); writeln;
{оформление подсказки}
repeat
write (‘Введите число ’); readln(ch); n:=n+1;
until ch<0; writeln(‘Количество не отрицательных чисел равно ‘,n); end.
Программа проверки введения клавиши ‘Y’.
Program keyp;
Var ch: char;
Begin
Repeat
Readln(ch);
Until (ch=’y’) or (ch=’Y’)
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
26
Найти сумму квадратов всех натуральных чисел от 1 до 100.
I. С использованием цикла "Пока".
Program Ex1;
Var
A : Integer;
S : Longint;
Begin
A:=1; S:=0;
While A<=100 Do
Begin
S:=S+A*A;
A:=A+1
End;
Writeln(S)
End.
II. С использованием цикла "До".
Program Ex2;
Var
A : Integer;
S : Longint;
Begin
A:=1; S:=0;
Repeat
S:=S+A*A;
A:=A+1
Until A>100;
Writeln(S)
End.
III. С использованием цикла "С параметром".
Program Ex3;
Var

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
27
A : Integer;
S : Longint;
Begin
S:=0;
For A:=1 To 100 Do S:=S+A*A;
Writeln(S)
End.
Вычислить
n
n
+

+
+
+
)
1
(
2 1
program primer; const n=3; var i:integer; s:real; begin s:=0; for i:=n downto 0 do s:=i+sqrt(s); writeln('s=',s) end.
Вычислить

= =
+
N
1
i
M
1
j j
i
2
N и M ввести с клавиатуры. program primer; var i,j,m,n:integer; p,s:real; begin write(‘n,m’);readln(n,m); s:=0; for i:=1 to n do begin p:=1; for j:=1 to m do p:=p*2/(i+j); s:=s+p; end; writeln(‘s=’,s); end.
Cоставить программу вычисления


=
+
+

3 2
3
)!
3
(
)
(
)
1
(
k
k
k
k
x
program primer; var p,f,k:integer; s,z,x,e:real;
Begin write('Введите x'); readln(x); write('Введите e
:');readln(e); k:=2;p:=1; z:=-sqr(sqr(sqr(x)))/125; s:=0; while abs(z)>e do begin s:=s+z; z:=-z*x*x*x/(k+3); k:=k+1; end; write('S=',s)
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
28

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
29
Напишите программы, вычисляющие значения следующих выражений:
А)

=
n
k
k
1 1
Б)

=
+

n
k
k
k
k
1
)
1 2
(
)
1
(
В)

=
+
+
100 2
2 1
i
i
i

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
30

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
31
Типы данных, определяемые пользователем
Язык Pascal имеет мощные возможности для конструирования пользователем собственных типов данных. Описание типов данных позволяет создавать такие структуры данных, которые позволяют решать задачи более оптимальными способами, делать решение более наглядным, установить соответствие между принятыми в теоретических исследованиях и реализуемыми в программировании структурами данных.
В языке программирования Pascal имеют место простые типы данных и сложные или структурированные. Сложные типы данных представляют собой набор компонентов, связанных общим именем и расположенных в смежной области памяти. Доступ к компонентам производится с использованием, так называемых, косвенной и индексной адресации, тогда как к простым типам данных применяется прямая адресация.
Основными типами структурных данных являются массивы (array) и записи
(record).
Новый тип перед первым его использованием должен быть описан в соответствующем разделе описаний. Его заголовок - служебное слово Type:
Type <Имя типа> = <Описание типа>;

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
32
Перечисляемый тип используется для повышения наглядности программ, позволяя записывать в переменные этого типа названия разнообразных объектов, исследуемых программой. Этот тип представляет собой набор идентификаторов, с которыми могут совпадать значения параметров.Формат описания следующий:
<Имя типа> = (<Ид.1>, <Ид.2>, …);
Далее можно определить любое число переменных уже описанного типа. Этим переменным можно присваивать только значения из списка, определенного при описании типа. Эти значения не являются ни числами, ни строковыми величинами, ни даже величинами логического типа, поэтому они не могут участвовать в арифметических, строковых, логических выражениях, а также не могут быть выведены на экран или принтер.
Величины перечисляемого типа можно сравнивать между собой, над их множеством в языке Паскаль определены несколько функций:
Ord(X) – порядковый номер значения переменной X в списке идентификаторов.
Нумерация среди значений идет, начиная от нуля.
Succ(X) – следующее значение для величины Х.
Pred(X) – предыдущее значение данного типа.
Приведите примеры задания перечисляемого типа:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
33
Интересно, что переменная перечисляемого типа может быть счетчиком в цикле "с параметром".
Пример:
Program T1;
Type
Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown,
Yellow, White);
Var
C1,C2 : Colors;
Begin
C1:=Green;
C2:=Red;
Writeln(Ord(C1), Ord(Succ(C2)))
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
34
Тип-диапазон
Формат описания отрезочного типа:
Type <Имя типа>=<Нач.>..<Кон.>;
Примеры:
Type
Age=0..150;
{Целое число в интервале от 0 до 150}
Lat='A'.. 'Z';
{Заглавные буквы латинского алфавита}
Month=(January, February, March, April, May, June,
July, August, September, October, November, December);
Spring=March..May; {Весенние месяцы}
Приведите примеры задания типов-диапазонов:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
35
Массивы
Массив – структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует номер
(индекс), определяющий его местонахождение в общей последовательности.
Формат записи массива через раздел описания типов имеет вид:
Type <имя типа>=array [тип индекса] of <тип компонента>;
Var <идентификатор,…>: <имя типа>;
Формат записи массива через раздал описания переменных:
Var <идентификатор,…>: array [тип индекса] of <тип компо-нента>;
Массивы различают по количеству индексов: одномермые (1 индекс), двумерные и N-мерные (N индексов).
Пример:
Type
Vector = array [1..25] of real; {одномерный массив}
Matrix = array [1..20, 1..30] of byte; {двумерный массив}
Опишите массивы, состоящие из 5-ти, 8 и 12 элементов:
Опишите двумерные массивы:

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
36
Рассмотрим работу с массивами на примере следующей задачи: Даны два массива целых чисел. Вычислить произведение максимального элемента первого массива на минимальный элемент второго массива. Удалить максимальный элемент из первого массива и добавить его во второй массив после минимального. program work_massive; type massiv=array [1..40] of integer; var a, b: massiv; i, n, k, p, j, min, Imin, max, Imax: integer; begin
{Ввод массива с клавиатуры} write('Введите размерность массива А n='); readln(n); writeln('Введите элементы массива А'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end;
{Ввод массива случайным образом} write('Введите размерность массива В k='); readln(k); randomize;{подключение генератора случайный чисел} for i:=1 to k do b[i]:=random(16);
{заполнение массива случайными числами от 0 до 15}
{Вывод массива на экран}
Writeln('Массив В'); for i:=1 to k do write(b[i],' '); writeln; {пустой оператор вывода}

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
37
{Поиск максимального элемента} max:=a[1];
Imax:=1; for i:=2 to n do if a[i]>max then begin max:=a[i];
{максимальный элемент}
Imax:=i;
{индекс максимального элемента} end;
{Поиск минимального элемента} min:=b[1];
Imin:=1; for i:=2 to n do if b[i]{минимальный элемент}
Imin:=i;
{индекс минимального элемента} end;
{вычисление произведения и его вывод на экран} p:=min*max; writeln('Произведение max и min равно ',p);

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
38
{Удаление элемента из массива с позиции Imax} for i:=Imax to n-1 do a[i]:=a[i+1]; n:=n-1;
{Уменьшение количества элементов массива на 1}
{Вставка элемента в массив после элемента равного min} i:=1; while i {смещение элементов на один вправо, начиная с последнего} k:=k+1;
{Увеличение количества элементов на один} b[i+1]:=max;
{Вставка элемента на позицию i+1} end; i:=i+1;
{Увеличение счетчика итераций} end;
{Вывод массивов А и В на экран в строку} writeln(‘Массив А: ‘); for i:=1 to n do write(a[i],' '); writeln; writeln(‘Массив В: ‘); for i:=1 to k do write(b[i],' '); end.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
39
Сортировка одномерных массивов
Рассмотрим массив целых или действительных чисел А
1
, ..., А
n
. Пусть требуется переставить элементы этого массива так, чтобы после перестановки они были упорядочены по не убыванию А
1
<=A
2
<=...<=A
n
. Эта задача называется задачей сортировки или упорядочения массива. Для решения этой задачи можно воспользоваться следующими алгоритмами:
I. Сортировка выбором
Найти элемент массива, имеющий наибольшее значение, переставить его с первым элементом, затем проделать то же самое, начав со второго элемента и т.д.
II. Сортировка обменами (метод пузырька)
Последовательным просмотром чисел А
1
, ..., А
n найти наименьшее i такое, что
А(i)>A(i+1). Поменять местами A(i) и A(i+1), возобновить просмотр с элемента
A(i+1) и т.д. Тем самым наибольшее число передвинется на последнее место.
Следующие просмотры начинать опять сначала, уменьшая на единицу количество просматриваемых элементов. Массив будет упорядочен после просмотра, в котором участвовали только первый и второй элементы.
III. Сортировка простыми вставками
Просматривать последовательно A2, ..., An и каждый новый элемент Ai вставлять на подходящее место в уже упорядоченную совокупность
A(1)...A(i-1). Это место определяется последовательным сравнением Ai с упорядоченными элементами A(1), ..., A(i-1).

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
40
Примеры решений задач
1. Сортировка отбором.
Var x:arr; dlina:integer;
mal: dano;
Min, k,j: integer;
Begin
For k:=1 to dlina-1 do
Begin
Mal:=x[k];
Min:=k;
For j:=k+1 to dlina do
If x[j]then
Begin
Mal:=x[j];
Min:=j;
End;
X[min]:=x[k];
X[k]:=mal
End
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
41
2. Сортировка методом пузырька.
Var X:massiv; DLINA:integer;
A:dannoe;
J,R: integer;
ZAMENA: boolean;
Begin
Repeat
ZAMENA:=false;
For J:=2 to R do
If X[j-1]>X[J] then
Begin
A:=X[J-1];
X[J-1]:=X[J];
X[J]:=A;
ZAMENA:= true
End;
R:=R-1
Until not ZAMENA;
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
42
3. Сортировка методом простых вставок.
Var a:arr; j,j,k: word;
T: integer;
Begin
For i:=2 to n do
Begin
T:=a[i];
J:=1;
While (t>=a[j]) and (jdo inc(j);
If j<>i then
For k:=j-1 downto j do a[k+1]=a[k];
A[j]:=t
End;
End;
End.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
43
Процедуры и функции
В языке Паскаль существует два вида подпрограмм:

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

Функция отличается от процедуры тем, что она должна обязательно выработать значение определенного типа.
Процедуры и функции, используемые в программе, должны быть соответствующим образом описаны до первого их упоминания. Вызов процедуры или функции производится по их имени.
Подпрограммы в языке Паскаль могут иметь параметры (значения, передаваемые в процедуру или функцию в качестве аргументов).
Формат описания процедуры:
Procedure <Имя процедуры>
(<Имя форм. параметра 1>:<Тип>;
< Имя форм. параметра 2>:<Тип>?);
<Раздел описаний>
Begin
<Тело процедуры>
End;
Формат описания функции:
Function <Имя функции>
(<Имя форм. параметра 1>:<Тип>;
< Имя форм. параметра 2>:<Тип>?):
<Тип результата>;
<Раздел описаний>
Begin
<Тело функции>
End;
В теле функции обязательно должна быть хотя бы команда присвоения такого вида: <Имя функции>:=<Выражение>;

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
44
Приведем простейший пример использования подпрограммы.
Задача: "Найти максимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.
Program Fn;
Var
A,B,C :Real;
Function Max(A,B:Real):Real; {Описываем функцию Max с формальными}
Begin {параметрами A и B, которая принимает }
If A>B
Then Max:=A {значение максимального из них }
Else Max:=B {Здесь A и B - локальные переменные }
End;
Begin
Writeln('Введите три числа');
Readln(A,B,C);
Writeln('Максимальным из всех является ', Max(Max(A,B),C))
End.
Обратите внимание на краткость тела основной программы и на прозрачность действий внутри функции. Формальные параметры A и B, используемые в подпрограмме, не имеют никакого отношения переменным A и B, описанным в основной программе.

ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ TURBO PASCAL. БАЗОВЫЙ УРОВЕНЬ
45
Еще один классический пример.
Задача: "Расположить в порядке неубывания три целых числа".
Program Pr;
Var
S1,S2,S3 :Integer;
Procedure Swap(Var A,B: Integer);{Процедура Swap с параметрами-переменными}
Var C : Integer; {C - независимая локальная переменная}
Begin
C:=A;
A:=B;
B:=C {Меняем местами содержимое A и B}
End;
Begin
Writeln('Введите три числа');
Readln(S1,S2,S3);
If S1>S2 Then Swap(S1,S2);
If S2>S3 Then Swap(S2,S3);
If S1>S2 Then Swap(S1,S2);
Writeln('Числа в порядке неубывания:V',S1,S2,S3)
End.
Данные устанавливаются еще до того, как программа начнет выполняться, а после ее запуска сохраняют свои значения неизменными на всем протяжении работы программы. Это константы.
Другие данные могут изменяться во время выполнения программы. Они называются переменными.


написать администратору сайта