Друкувати книгуДрукувати книгу

Книга "Основы языка программирования Паскаль"

Сайт: Школа сучасних знань
Курс: Основи алгоритмізації та програмування (Циммерман О.В.)
Книга: Книга "Основы языка программирования Паскаль"
Друковано: Гість
Дата: 14 травень 2025, середа, 19:06

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 Математические функции

Стандартные функции языка Паскаль 

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

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

Функция

Тип аргумента

Тип результата

Назначение

Abs(x)

Real, integer

Real

Модуль аргумента

ArcTan(x)

Real, integer

Real

Арктангенс (значение в радианах)

Cos(x)

Real, integer

Real

Косинус, угол в радианах

Exp(x)

Real, integer

Real

Экспонента

Frac(x)

Real

Real

Дробная часть числа

Int(x)

Real, integer

Real

Целая часть числа

Ln(x)

Real, integer

Real

Логарифм натуральный

Pi

Нет

Real

3,141592653

Sin(x)

Real, integer

Real

Синус, угол в радианах

Sqr(x)

Real, integer

Real

Квадрат аргумента

Sqrt(x)

Real, integer

Real

Корень квадратный

Random

Нет

Real

Псевдослучайное вещественное число в интервале [0, 1]

Random(x)

Integer

Integer

Псевдослучайное целое число в интервале [0, x-1]

Round(x)

Real

Integer

Округление до ближайшего целого

Trunc(x)

Real

Integer

Отбрасывание дробной части числа

Примечание: в языке Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути: 

1 способ — умножать число само на себя, какое то количество раз: x3 =x*x*x

2 способ — воспользоваться функциями экспоненты и натурального логарифма: xy=exp(y*ln(x))

Примеры написания математических выражений на языке Паскаль:

Математическое выражение

Выражение в Паскале

y= a \times \frac {\sqrt[3]{ab} }{cd}

y:=a*exp(1/3*ln(a*b))/(c*d);

c=\sqrt{a^{2}+b^{2}} 

c:=sqrt(sqr(a)+sqr(b));

y= |x|-cos2x

y:= abs(x)-cos(2*x);

y=  \frac {\sqrt{|ab|} }{c-d}

y:=sqrt(abs(a*b))/(c-d);