Книга "Основы языка программирования Паскаль"
Сайт: | Школа сучасних знань |
Курс: | Основи алгоритмізації та програмування (Циммерман О.В.) |
Книга: | Книга "Основы языка программирования Паскаль" |
Друковано: | Гість |
Дата: | 14 травень 2025, середа, 19:06 |
Зміст книги
- 1 Алфавит языка Паскаль
- 2 Зарезервированные слова
- 3 Стандартные идентификаторы
- 4 Пользовательские идентификаторы
- 5 Структура программы
- 6 Типы данных.
- 7 Константы и переменные
- 8 Выражения и операции
- 9 Операторы языка Паскаль
- 10 Оператор присваивания
- 11 Процедура ввода Read(ln)
- 12 Процедура вывода Write(ln)
- 13 Математические функции
1 Алфавит языка Паскаль
Основой любого языка программирования является алфавит.
Алфавит – это набор знаков, состоящий из букв, десятичных и шестнадцатеричных цифр, специальных символов.
Алфавит Паскаля составляют:
· прописные и строчные буквы латинского алфавита: A, B, C…Y, Z, a, b,c,…y, z , знак подчеркивания _;
· десятичные цифры: 0, 1, 2,…9;
· специальные символы: + - * / = , ‘ . : ; < > [ ] ( ) { } ^ @ $ # и пробел;
· комбинации специальных символов, которые нельзя разделять пробелами, если они используются как составные символы: «:=», «..», «<>», «<=», «>=»
Неделимые
последовательности знаков алфавита образуют слова, отделенные друг от друга
разделителями: некоторыми специальными символами (пробел, комментарий, арифметическая
операция и т.п.)
Словарь Паскаля можно разделить на три группы слов:
- зарезервированные
слова
- стандартные
идентификаторы
- идентификаторы
пользователя
2 Зарезервированные слова
Зарезервированные слова — это слова, которые являются составной частью языка, имеют фиксированное начертание и определенный смысл.
Зарезервированные слова языка Pascal:
absolute |
Абсолютный |
label |
метка |
and |
Логическое И |
library |
библиотека |
array |
Массив |
mod |
остаток от деления |
asm |
Ассемблер |
nil |
Отсутствие |
begin |
Начало блока |
not |
логическое НЕ |
case |
Вариант |
or |
Логическое ИЛИ |
const |
Константа |
of |
Из |
constructor |
Конструктор |
object |
Объект |
div |
Деление нацело |
packed |
Упакованный |
go to |
Переход на |
procedure |
Процедура |
do |
Выполнять |
program |
Программа |
downto |
Уменьшить до |
record |
Запись |
destructor |
Деструктор (разрушитель) |
repeat |
Повторять |
else |
Иначе |
set |
Множество |
end |
Конец блока |
shl |
Сдвиг разрядов влево |
exports |
Экспорт |
shr |
Сдвиг разрядов вправо |
external |
Внешний |
string |
Строка |
file |
Файл |
then |
То |
for |
Для |
to |
Увеличивая |
forward |
Опережающий |
type |
Тип |
function |
Функция |
unit |
Модуль |
if |
Если |
until |
До |
implementation |
Реализация |
uses |
Использовать |
in |
В (входит в ...) |
var |
Переменная |
inline |
Основной |
while |
Пока |
interrupt |
Прерывание |
with |
С |
interface |
Интерфейс |
xor |
Исключающее ИЛИ |
inherited |
Наследование |
|
|
3 Стандартные идентификаторы
Идентификатор (имя) – это строка символов, используемая для идентификации некоторого объекта в программе (переменной, метки, подпрограммы, параметра и т.д.).
Выделяют стандартные и пользовательские идентификаторы.
Для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций служат стандартные идентификаторы.
Например:
integer, real - стандартные идентификаторы описания типов данных
Sin - стандартный идентификатор Sin вызывает функцию, вычисляющую синус заданного угла
Read,
Readln вызывают процедуру, организующую ввод данных
Write, Writeln вызывают процедуру, организующую вывод данных.
Любой из стандартных идентификаторов, в отличие от зарезервированных слов, можно переопределить, но это чаще всего приводит к ошибкам. Поэтому на практике стандартные идентификаторы лучше использовать без каких-либо изменений.
4 Пользовательские идентификаторы
Для обозначения имени меток, констант, переменных, процедур и функций, определенных самим программистом, применяются пользовательские идентификаторы.
При этом идентификаторы в программе должны быть уникальными, т. е. в каждом блоке программы один идентификатор не может использоваться для обозначения более чем одной переменной или постоянной величины, и т. д.
При написании программ следует соблюдать общие правила написания идентификаторов:
1. Идентификатор может начинаться только с буквы или знака подчеркивания (исключение составляют метки, которые могут начинаться также и с цифры);
2. Идентификатор может состоять из букв, цифр и знаков подчеркивания (пробелы, точки и другие специальные символы недопустимы);
3. Между двумя идентификаторами должен быть по крайней мере один пробел;
4. Максимальная длина идентификатора составляет 127 символов, но значимыми являются только первые 63 символа;
5. При записи идентификаторов можно использовать как прописные, так и строчные буквы. Компилятор не делает различий между ними, хотя они и имеют различные ASCII-коды.
На практике рекомендуется применять эту особенность для более простого чтения и понимания значений идентификаторов. Так, вместо идентификатора nomerotdela лучше написать NomerOtdela, выделив прописными буквами каждую из двух смысловых частей.
Правильно записанные идентификаторы:
metkal2
block_56
x1
MaxNomer
Неправильно записанные идентификаторы:
2graph – ошибка, идентификатор начинается с цифры
Nomer.Doma – ошибка, идентификатор содержит точку
Разность – ошибка, идентификатор содержит буквы русского алфавита.
sum max – ошибка, идентификатор содержит пробел
5 Структура программы
Структура программы на языке Pascal ABC включает в себя:
1) название программы, начинающееся с зарезервированного слова program и имени, состоящего из букв латинского алфавита и цифр. Данная строка является необязательной.
2) подключение программных библиотек(модулей) начинается с зарезервированного слова Uses и имени модуля. Модуль представляет собой набор констант, типов данных, переменных, процедур и функций, которые можно использовать в программе. Например, модуль Crt предоставляет возможность управления средствами компьютера, а модуль Graph обеспечивает ряд быстрых и мощных графических подпрограмм.
3) определение меток, начинающееся с зарезервированного слова Label и перечисления через запятую используемых в программе меток, представляющих собой любые цифры от 1 до 9999 или символьные имена;
4) определение констант, начинающееся с зарезервированного слова Const и перечисления используемых в программе констант с присвоенными им именами, знаками = и их значениями и отделяемыми друг от друга точкой с запятой.
5) определение типов, начинающееся с зарезервированного слова Type и состоящее из перечисления через точку с запятой имен типов, вводимых пользователем, с пояснением через знак равенства (=), от каких базовых типов и как они происходят;
6) описание переменных, начинающееся с зарезервированного слова Var и перечисления используемых в программе переменных с указанием их типа.
7) описание процедур и функций, начинающихся с зарезервированного слова Procedure и имени процедуры или с зарезервированного слова Function и имени функции.
8) раздел операторов, начинающийся с зарезервированного слова begin и кончающийся зарезервированным словом end и включающий в себя непосредственно весь процесс вычислений. Зарезервированные слова begin и end отмечают начало и конец программы.
Порядок разделов описаний может быть любым. Разделы друг от друга отделяются точкой с запятой. Раздел операторов является основным в программе. Все другие разделы, кроме раздела операторов могут отсутствовать. Операторы друг от друга отделяются точкой с запятой. В конце раздела операторов после ключевого слова end обязательно ставится точка, которая является признаком конца записи программы.
6 Типы данных.
Любые данные (константы, переменные, выражения) характеризуются своим типом. Тип определяет множество допустимых значений и множество допустимых операций, применимых к данному объекту.
Структура типов данных языка Паскаль:
Простые типы данных в Pascal ABC
К простым типам данных относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип. Ниже приводится таблица простых типов, содержащая также их размер и диапазон допустимых значений.
Тип |
Данные |
Размер байт |
Диапазон значений |
Целые типы |
|||
Byte |
Короткое целое >0 |
1 |
0...255 |
Shortint |
Короткое целое |
1 |
-128...127 |
Integer |
Целочисленные данные |
2 |
от -32768 до 32767 |
Word |
Целочисленные данные > 0 |
2 |
0...65535 |
Longint |
Длинное целое |
4 |
-2147483648..2147483647 |
Вещественные типы |
|||
Single |
вещественные данные |
4 |
7-8 знаков в числе |
Real |
вещественные данные |
6 |
15-16 знаков в числе |
Decimal |
вещественные данные |
16 |
30 знаков в числе |
Символьный тип |
|||
Char |
1 символ |
2 |
Все Unicode-символы |
Логический тип |
|||
Boolean |
логический тип |
1 байт |
False или True |
Перечислимый тип
Перечислимый тип определяется упорядоченным набором идентификаторов: type typeName = (value1, value2, ..., valuen); Значения перечислимого типа занимают 4 байта. Каждое значение value представляет собой константу типа typeName, попадающую в текущее пространство имен.
Например:
type Season = (Winter,Spring,Summer,Autumn);
DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);
Диапазонный тип
Диапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа, a<b
Например:
var intI: 0..10;
intC: 'a'..'z';
intE: Mon..Thr;
7 Константы и переменные
Константа (постоянная) - это ячейка (или несколько) оперативной памяти, которой присвоено определенное имя, и значение которой не меняется в течение программы.
Константы описываются в разделе описания const:
const <имя константы> = <значение>;
Например,
const pi=3.14;
str='ошибка';
n=-1;
Значениями констант в языке Рascal могут быть:
1. Целые числа (в диапазоне от -2 147 483 648 до 2 147 483 647).
Например, а=5; с=-10;
2. Вещественные числа. Может использоваться формат с фиксированной точкой или формат с плавающей точкой.
Например, а = 61.2; b = 3.14е5; c = -72Е-3
3. Шестнадцатеричные числа (в диапазоне от $00000000 до $FFFFFFFF).
Например, h=$f5;
4. Логические константы (True, False).
Например, f=false;
5. Символы. Записываются в апострофах, кроме того допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ #.
Например, Znak1 = 'd'; Znak2 = 'ф'; Znak3 = #90.
6. Строки символов. Любая последовательность символов, заключенная в апострофы. Можно составить из кодов нужных символов с предшествующими каждому коду знаком #.
Например, str='string'; str2='ошибка';
Переменная – это ячейка (или несколько) оперативной памяти, которой присвоено определенное имя, и значение которой может меняться в течение программы.
Переменные описываются в разделе описания var:
Var <имя переменной> : <тип>;
var x,y:integer;
z:real;
Переменная всегда имеет:
1) Имя (идентификатор) - задает пользователь в разделе Vаr
2) Тип данных — указывает пользователь в разделе Vаr
3) Значение — присваивается в программе (в выполнимой части)
Имя переменной подобно ящичку, который можно заполнить различными значениями, что нельзя сделать с константой. Имена констант и переменных должны соответствовать их назначению, в этом случае ваша программа будет более понятна.
8 Выражения и операции
Выражение - это конструкция, возвращающая значение некоторого типа, которая может содержать: константы, переменные, арифметические операции, функции, скобки.
Данные, к которым применяются операции, называются операндами.
Арифметические операции:
Знак |
Выражение |
Операция |
Типы входных данных |
Тип результата |
Примеры |
+ |
А+В |
сложение |
Целые, вещественные |
Целые, вещественные |
5+3=8 3.2+1.2=4.4 |
- |
А-В |
вычитание |
Целые, вещественные |
Целые, вещественные |
10-4=6 2.1-5.1=-3.0 |
* |
А*В |
умножение |
Целые, вещественные |
Целые, вещественные |
2*3=6 4.2*3=12.6 |
/ |
А/В |
деление |
Целые, вещественные |
Только вещественные |
5/2=2.5 7.2/3=2.4 |
div |
A div B |
целое деление |
Целые |
Целые |
5 div 2=2 9 div 3=3 |
mod |
A mod B |
остаток от деления |
Целые |
Целые |
5 mod 2=1 9 mod 3=0 |
Логические операции и операции сравнения:
Операция |
Название |
Пример |
< |
меньше |
а<10 |
> |
больше |
b>3 |
= |
равно |
а=0 |
<> |
не равно |
b<>0 |
>= |
больше или равно |
а>=5 |
<= |
меньше или равно |
а<=8 |
OR |
дизъюнкция — логическое «или» |
(а>0) OR (b=0) |
AND |
конъюнкция— логическое «и» |
(а>0) AND (b>0) |
NOT |
отрицание — логическое «не» |
NOT(А>0) |
Приоритетом называется очередность выполнения операций в выражении.
Значения приоритетов указаны в таблице.
Операция |
Приоритет |
Вид операции |
@, not |
Первый (высший) |
Унарная операция |
*, /, div, mod, and |
Второй |
Операции типа умножения |
+, -, or, xor |
Третий |
Операции типа сложения |
=, <>, <, >, <=, >=, in |
Четвертый (низший) |
Операции отношения |
Для изменения приоритета операций в выражении используют круглые скобки().
Например:
В выражении a+b*2 сначала выполнится операция умножения, а потом сложения.
В выражении (a+b)*2 сначала выполнится операция сложения, а потом умножения.
9 Операторы языка Паскаль
Оператор — это элемент языка, задающий полное описание действия, которое необходимо выполнить.
Правила написания операторов:
1. Операторы отделяются точкой с запятой друг от друга.
2. Операторы можно объединить в составной оператор, заключив их в операторные скобки Begin … end.
Примеры операторов:
а:=b*2+1;
writeln ('Введите число');
if a[i]>max then
begin
max:=a;
k:=1;
end;
10 Оператор присваивания
Оператор присваивания вычисляет выражение и присваивает получившееся значение переменной.
Оператор присваивания обозначается двумя символами :=, между которыми нет пробела. Слева от знака оператора должна стоять переменная, а справа — выражение. Суть оператора заключается в вычислении выражения и присвоения получившегося значения переменной.
Примеры:
а:=0.2;
а:=2+3;
а:=b*2+1;
a:=a+1;
Очень часто используется оператор вида а:=а+1; Он не содержит ошибки. Вначале берется старое значение переменной, к нему прибавляется единица, и результат записывается опять в переменную а. Таким образом, этот оператор увеличивает значение переменной а на единицу.
Важно следить, чтобы все переменные, используемые в правой части оператора присваивания были определены к моменту вычисления оператора. В противном случае результат будет непредсказуем.
Правило согласования типов в операторе присваивания: тип выражения в правой части оператора присваивания должен совпадать с типом переменной в левой части оператора присваивания. Т.е. если переменная имеет тип Integer, то справа должно быть выражение, значение которого есть также целое число.
Правильные операторы присваивания |
Неправильные операторы присваивания |
а:=а+1; s:=s+5; b:=2+3; p:=a*4; |
а+1:= а; 2:=b+3; s=s+1; p:a*b; |
11 Процедура ввода Read(ln)
Ввод данных - это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи.
Процедура ввода информации с клавиатуры имеет следующий формат:
Read(ln) (<список ввода>);
где <список ввода> это последовательность имен переменных, разделенных запятой.
Оператор Readln отличается от Read тем, что после считывания значения в списке ввода для одного оператора Readln данные для следующего оператора будут считываться с начала новой строки.
Например,
Read(a); {читает одну переменную }
Read(a, b); {читает две переменные, которые можно разделить пробелами или Enter}
Readln(l, r, s); {читает три переменные, которые разделяются пробелами}
for i:=1 to 50 do Read( m[i]); { ввод элементов массива, записанных в строку через пробел }
Чтобы перейти к следующему разделу дайте ответ на вопрос.
12 Процедура вывода Write(ln)
Вывод данных - процесс, когда данные передаются из оперативной памяти на внешние носители (монитор).
Процедура вывода на экран имеет следующий формат:
Write(ln) (<список вывода>);
где <список вывода> это последовательность имен переменных, текстовых или числовых констант, выражений, разделенных запятой.
Процедура WriteLn (Write Line) после вывода на экран значений из списка вывода курсор автоматически устанавливает в первую позицию следующей строки.
Например,
Write(2); {вывод числовой константы }
Writeln(s); {вывод значения переменной s }
Writeln(‘Сумма’, s) {вывод текстовой константы и значения переменной s };
Write( 'Результаты: ', a+b/sin(x) ); {вывод текстовой константы и значения выражения}
Write( 'Элемент А[', i, ',', j, ']: ', A[i,j] ); {вывод текстовых констант значений переменных i,j, элемента массива A[i,j] }
Чтобы перейти к следующему разделу дайте ответ на вопрос.
13 Математические функции
Стандартные функции языка Паскаль
Функция или процедура может быть уже включена в сам язык программирования (стандартная функция), а может входить в модуль, который требуется «подключить» к программе.
Стандартные математические функции языка программирования Паскаль.
Функция |
Тип аргумента |
Тип результата |
Назначение |
Real, integer |
Real |
Модуль аргумента |
|
Real, integer |
Real |
Арктангенс (значение в радианах) |
|
Real, integer |
Real |
Косинус, угол в радианах |
|
Real, integer |
Real |
Экспонента |
|
Real |
Real |
Дробная часть числа |
|
Real, integer |
Real |
Целая часть числа |
|
Real, integer |
Real |
Логарифм натуральный |
|
Нет |
Real |
3,141592653 |
|
Real, integer |
Real |
Синус, угол в радианах |
|
Real, integer |
Real |
Квадрат аргумента |
|
Real, integer |
Real |
Корень квадратный |
|
Нет |
Real |
Псевдослучайное вещественное число в интервале [0, 1] |
|
Random(x) |
Integer |
Integer |
Псевдослучайное целое число в интервале [0, x-1] |
Real |
Integer |
Округление до ближайшего целого |
|
Real |
Integer |
Отбрасывание дробной части числа |
Примечание: в языке Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:
1 способ — умножать число само на себя, какое то количество раз: x3 =x*x*x
2 способ — воспользоваться функциями экспоненты и натурального логарифма: xy=exp(y*ln(x))
Примеры написания математических выражений на языке Паскаль:
Математическое выражение |
Выражение в Паскале |
y:=a*exp(1/3*ln(a*b))/(c*d); |
|
c:=sqrt(sqr(a)+sqr(b)); |
|
y= |x|-cos2x |
y:= abs(x)-cos(2*x); |
y:=sqrt(abs(a*b))/(c-d); |