Рабочая тетрадь Паскаль
.pdf
Рабочая тетрадь по программированию. Паскаль
Целый тип данных INTEGER
Концепция типов данных является одной из центральных в любом языке
программирования. С типом величины связаны три ее свойства:
Паскаль характеризуется разветвленной структурой типов данных. Иерархия типов в языке Паскаль такая:
Простые
oПорядковые
Целые
Логические
Символьные
Перечисляемые
Интервальные
oВещественные
Структурированные
oМассивы
oСтроки
oМножества oЗаписи
oФайлы
Указатели
Вданный момент нас будет интересовать только целый тип.
Имеется пять целочисленных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Целочисленные типы обозначаются идентификаторами: Byte, ShortInt, Word, Integer, LongInt; их характеристики приведены в следующей таблице:
Идентификатор |
|
Длина |
Диапазон значений |
Операции |
|
|
(байт) |
|
|
integer |
|
2 |
-32768..32767 |
+, -, /, *, Div, Mod, >=, |
|
<=, =, <>, <, > |
|||
|
|
|
|
|
|
|
|
|
|
byte |
|
1 |
0..255 |
+, -, /, *, Div, Mod, >=, |
|
<=, =, <>, <, > |
|||
|
|
|
|
|
|
|
|
|
|
word |
|
2 |
0..65535 |
+, -, /, *, Div, Mod, >=, |
|
<=, =, <>, <, > |
|||
|
|
|
|
|
|
|
|
|
|
|
Турнир по программированию - http://compilers.infoznaika.ru/ |
|||
11
Рабочая тетрадь по программированию. Паскаль
shortint |
1 |
-128..127 |
+, -, /, *, Div, Mod, >=, |
|
<=, =, <>, <, > |
||||
|
|
|
||
|
|
|
|
|
longint |
4 |
- |
+, -, /, *, Div, Mod, >=, |
|
2147483648..2147483647 |
<=, =, <>, <, > |
|||
|
|
|||
|
|
|
|
Над данными целого типа можно производить арифметические действия (+, -, /, *), операции сравнения (>=, <=, <>, <, >), присваивания ( := ), а также функции:
div -
mod -
abs(x) -
chr(b) -
dec(v,i) -
inc(v,i) -
sqr(x) -
Значения целых типов записываются в программе привычным способом:
123 4 -3 +345 -699
Наличие десятичной точки в записи целого числа недопустимо. Будет ошибкой записать целое число следующим образом:
123.0
Для всех переменных величин, используемых в программе, должны быть указаны их типы. Это делается в разделе переменных программы. Структура раздела переменных показана на рис.:
Пример раздела переменных программы:
Var m,n,k: Integer;
Турнир по программированию - http://compilers.infoznaika.ru/
12
Рабочая тетрадь по программированию. Паскаль
Строковый тип данных STRING
Строка —это |
|
. |
Каждый |
символ занимает 1 байт памяти (код ASCII).
называется ее длиной. Длина строки может находиться в
диапазоне от 0 до 255. Строковые величины могут быть константами и
переменными.
Строковая константа есть последовательность символов, заключенная в апострофы. Например:
'Язык программирования ПАСКАЛЬ',
'IBM PC - computer', '33-45-12'.
Строковая переменная описывается в разделе описания переменных следующим образом:
Var <идентификатор>: String*<максимальная длина строки>+
Например: Var Name: String[20]
Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255.
Например: Var slovo: String
Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки.
Например: Name[5], Name[i], slovo[k+l].
Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.
Над строковыми данными допустимы операции сцепления и операции отношения.
Турнир по программированию - http://compilers.infoznaika.ru/
13
Рабочая тетрадь по программированию. Паскаль
Операция сцепления (+) применяется для
. Сцеплять можно как строковые
константы, так и переменные.
Например:
'ЭВМ' + ЧВМ' + ' Р С . В результате получится строка:
'ЭВМ IBM PC .
Длина результирующей строки не должна превышать 255.
Операции отношения =, <, >, <=, >=, <> производят сравнение двух строк, в результате чего получается логическая величина (true или false). Операция отношения имеет более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и больше считается та строка, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки.
Если строки имеют различную длину, но в общей части символы
совпадают, считается, что более короткая строка меньше, чем более длинная.
Строки равны, если
Пример: |
Выражение |
Результат |
|
' c o s m l ' < ' c o s m 2 ' |
True |
|
'pascal'>'PASCAL' |
True |
Функция Copy (S, Poz, N) выделяет из строки s подстроку длиной в N символов, начиная с позиции Poz .N и Poz — целочисленные выражения.
Пример: |
|
|
Значение s |
Выражение |
Результат |
'ABCDEFG' |
Copy(S,2,3) |
'BCD' |
'ABCDEFG' |
Copy(S, 4,4) |
'DEFG' |
Функция Concat (SI, S2, . . ., SN) выполняет сцепление (конкатенацию) строк S1, . . . , SN в одну строку.
Турнир по программированию - http://compilers.infoznaika.ru/
14
Рабочая тетрадь по программированию. Паскаль
Пример: |
Выражение |
Результат |
|
Concat('АА', 'XX', 'Y') |
'AAXXY' |
Функция Length (S) определяет текущую длину строки S. Результат — значение целого типа.
Пример: |
Значение s |
Выражение |
Результат |
|
' t e s t - 5 ' |
Length (S) |
6 |
|
1 (А+В) *С |
Length (S) |
7 |
Функция Pos(si, S2) обнаруживает первое появление в строке S2 подстроки si . Результат — целое число, равное номеру позиции, где находится первый символ подстроки s i. Если в строке S2 подстроки s i не обнаружено, то результат равен 0.
Пример: |
Значение S2 |
Выражение |
Результат |
|
' a b c d e f' |
Pos (' c d ' , S2) |
3 |
|
'abcdcdef' |
Pos('cd',S2) |
3 |
|
' a b c d e f' |
Pos('k',S2) |
0 |
Процедура Delete (S, Poz, N) выполняет удаление N символов из строки s, начиная с позиции Poz.
Пример: |
|
|
Исходное значение s |
Оператор |
Конечное значение S |
'abcdefg' |
Delete (S,3,2) |
'abefg' |
'abcdefg' |
Delete(S,2,6) |
'a' |
В результате выполнения процедуры уменьшается текущая длина строки в переменной S.
Процедура insert (SI, S2, Poz) выполняет вставку строки S1 в строку S2, начиная с позиции Poz.
Пример:
Турнир по программированию - http://compilers.infoznaika.ru/
15
Рабочая тетрадь по программированию. Паскаль
Начальное S2 |
Оператор |
Конечное S2 |
'ЭВМ PC' |
Insert('IBM-',S2,5) |
'ЭВМ IBM-PC |
' Р и с . 2 ' |
Insert('N',S2,6) |
'Рис.N2' |
Пример 1. Следующая программа получает из слова «ВЕЛИЧИНА » слово «НАЛИЧИЕ»:
Program Slovo_l;
Var S11,S12: String[10];
Begin
S11:='ВЕЛИЧИНА';
S12:=Copy(S11,7,2)+Copy(S11,3,4)+S11[2];
WriteLn(S12)
End.
Пример 2. По следующей программе из слова «СТРОКА» будет получено слово «СЕТКА».
Program Slovo_2;
Var S1: String[10];
Begin
S1:='СТРОКА';
Delete (S1,3,2);
Insert ('E',S1,2);
WriteLn(S1)
End.
Турнир по программированию - http://compilers.infoznaika.ru/
16
Рабочая тетрадь по программированию. Паскаль
Оператор IF
Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора.
Описывается оператор ветвления в таком виде:
Кроме того, возможно использование неполной формы условного оператора:
Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы, представленной на рисунке:
То, что мы раньше называли условием, есть логическое выражение,
которое вычисляется в первую очередь. Если его значение равно true, то будет
выполняться |
|
, если |
|
|
||
|
|
|
|
|
для полной формы |
|
или |
|
|
. |
|||
Турнир по программированию - http://compilers.infoznaika.ru/
17
Рабочая тетрадь по программированию. Паскаль
Пример 1. По длинам трех сторон треугольника а, b, с вычислить его площадь.
Для решения задачи используется формула Герона
где р = (а + b + с) /2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника:
длина каждой стороны должна быть меньше длин двух других сторон.
Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных.
Program Geron;
Var A,B,C,P,S: Real;
Begin
WriteLn('Введите длины сторон т р е у г о л ь н и к а : ' );
Write ('a ='); ReadLn(A)
Write('b ='); ReadLn(В)
Write('c ='); ReadLn(С)
If (A>0)And(B>0)And(C>0) And (A+B>C) And (B+C>A) And (A+C>B) Then
Begin
P:=(A+B+C)/2;
S:=Sqrt(P*(P-A)*(P-B)* (P-C));
WriteLn('Площадь=',S)
End
Else WriteLn('Неверные исходные данные')
End.
Турнир по программированию - http://compilers.infoznaika.ru/
18
Рабочая тетрадь по программированию. Паскаль
Оператор выбора CASE. |
|
|
Оператор выбора позволяет выбрать |
|
из |
возможных продолжений программы. |
|
|
Структура оператора выбора такова: |
|
|
case <селектор> of |
|
|
<альтернатива 1>: <операторы>; |
|
|
<альтернатива 2>: <операторы>; |
|
|
… |
|
|
<альтернатива n>: <операторы>; |
|
|
[else <операторы>] |
|
|
end; |
|
|
где селектор – переменная или выражение порядкового типа, альтернатива – постоянная величина того же типа, что и селектор.
Формат оператора case описывается синтаксической диаграммой:
В зависимости от значения альтернативы происходит программы:
Турнир по программированию - http://compilers.infoznaika.ru/
19
Рабочая тетрадь по программированию. Паскаль
Заполните пропуски: |
|
|
|
Выполнение оператора выбора происходит так: |
|
|
|
1. |
|
; |
|
2. |
|
|
|
;
3.
.
Пример. По заданному значению вывести соответствующую оценку.
var
n: integer; begin
writeln('Введите количество баллов'); readln(n);
case n of
0..2: writeln(‘неудовлетворительно’);
3: writeln(‘удовлетворительно’);
;
;
end;
end.
Пользуясь предыдущей задачей, приведите свой пример использования оператора case:
var
;
begin
;
;
Турнир по программированию - http://compilers.infoznaika.ru/
20
