КрНУ

Інформаційний портал – Коледжу Кременчуцького національного університету імені Михайла Остроградського!

Алфавит языка. Структура программы. Типы данных.

Алфавит языка

Текст на естественном языке состоит из предложений, предложения — из слов, слова — из
буквы образуют алфавиты украинского, английского и других языков. Язык программирования организован так же.
Программа на языке Turbo Pascal формируется с помощью конечного набора
знаков, образующих алфавит языка, и состоит из:
 прописных и строчных букв латинского алфавита (А, В …, Z, а, b …, z) и знака подчеркивания;
 десятичных (0, 1 …, 9) и шестнадцатеричных цифр (0, 1 …, 9, А, В…, F).
Кроме того, в алфавит включаются специальные символы (табл. 2.4) и комбинации
специальных символов — они образуют составные символы (табл. 2.5).
Неделимые последовательности знаков алфавита образуют слова, отделенные друг
от одного знаками препинания.
Знаки препинания — пробел, символ конца строки, комментарий. Пробел, что стоит внутри строчной константы, воспринимается не как знак препинания, а как ее часть. Между комбинациями специальных символов пробелы недопустимы. Слова делятся на зарезервированные слова, стандартные идентификаторы (имена) и идентификаторы пользователя.

1. Зарезервированные слова языка Turbo Pascal является составной частью языка, имеют
фиксированное изображение и несут в программе определенное значение. Внутри зарезервированных слов пробелы использовать запрещено. Например, для оператора goto имя метки; форма записи имеет вид:
 goto 10; или goto 10; Допустимые
 gotol0; или go to 10; Являются ложными
2. Стандартные идентификаторы служат для обозначения заранее определенных
разработчиками языка типов данных, констант, процедур и функций. При использовании
в программе их не требуется описывать, указывая тип.
Они делятся на несколько групп:
1) имена стандартных типов данных: boolean (логический), char (символьный), integer (целый), real (действительный) text (текстовый файл) и т. д.;
2) имена стандартных констант: false (неправда), true (истина), maxint (максимальное целое), pi (число 3,14…) и т.д.;
3) имена стандартных функций: abs, arctan, cos, exp, In, sin и т.д.;
4) имена стандартных процедур: read, readln, write, writeln, inc, dec и т. д.
Например, стандартный идентификатор sin (x) вызывает вычислительную функцию
синус угла х, заданного в радианах. Любой из стандартных идентификаторов, на
отличие от зарезервированных слов, допускается переопределить. Пользователь может
написать свою собственную функцию с именем sin. Конечно это ведет к ошибкам. Тому
стандартные идентификаторы лучше использовать без изменений.
3. Идентификаторы пользователя применяются для обозначения меток, констант,
переменных, процедур и функций, определенных самим программистом. Тип идентификатора пользователя должен быть указан в описательной части программы, к его использование.
Общие правила написания идентификаторов (имен):
 состоят из букв, цифр и знака подчеркивания, специальные символы, в том числе
и пропуск, не допускаются. Буквы русского алфавита не могут входить в состав идентификатора Turbo Pascal, их можно использовать только в строчных константах;
 начинаются с буквы или знака подчеркивания. Только для метки допускается использование целого числа без знака;
 между двумя идентификаторами должен стоять, по крайней мере, один разделитель;
 максимальная длина — 127 символов, но значимыми, которые распознает Turbo
Pascal, есть первые 63, что на практике более чем достаточно;
 нельзя использовать имена, совпадающие по написанию с приведенными
ранее зарезервированными словами. Крайне нежелательно также переопределение
стандартные идентификаторы;
 при написании имен можно использовать как прописные, так и строчные буквы.
Компилятор не делает различий между ними. Например, myvar, Myvar.
myvar — это три разных варианта написания имени одной и той же переменной.
В программах на Turbo Pascal часто используют такой способ: первая буква каждого слова прописная, другие-строчные (например, TextColor). Но будут использоваться, в основном, строчные буквы, что позволит упростить ввод текста программ для пользователя.
Имена, используемые в программе, должны быть уникальными, то есть в данном блоке программы один идентификатор не должен использоваться для обозначения более чем одной переменной, константы и т.д. Если это требование не выполняется, на экран выводится сообщение об ошибке:
Error 4: Duplicate identifier (Ошибка 4: Двойной идентификатор).
Например, metkai3, Biok_i5 — допустимые имена.
Примеры неправильной записи имен:
3DGraph — начинается с цифры;
Nomer.Doma — содержит точку
blok#1-содержит специальный символ;
My Program-содержит пробел;
Div-зарезервированное слово.

ТИПЫ ДАННЫХ

Одним из важнейших понятий в программировании является переменная.
Переменная-это поименованная область оперативной памяти компьютера, где сохраняется значение некоторой величины. Переменная обладает такими свойствами:
имя, значение, тип. Количество переменных и их свойства указывает пользователь. Тип
переменной определяет ее допустимые значения, а также операции, которые можно над ней выполнять.
Стандартные типы данных.
Стандартные типы данных не нужно описывать в разделе type. Для представления числовых данных предназначены целые и действительные типы.
Целые типы
Имя типа диапазон значений
byte 0..255
shortint -128..127
word 0..65535
integer (основной тип) -32768..32767
longint -2147483648..2147483647
Объявим переменные: var x : byte; у : integer. Этим переменным можно присвоить,
например, такие значения х := 65; в := -5. Отметим, что переменная х не может принимать
отрицательные значения, поскольку они не входят в диапазон допустимых значений типа
byte (дополнительные).
Действительные типы
Имя типа диапазон
single (единичный) 1.5*10 -45- 3.4*1038
real (основной тип) 2.9*10-39 – 1.7*38
double(удвоенный) 5.0*10-324- 1.7*10308
extended(расширенный) 3.4*10-4951-1.1*104932
Действительные числа можно записывать в формате с фиксированной точкой, например,
5.04, -12.109, или в формате с плавающей точкой. Запись -5.2 Е+2 есть представлением числа -520.0, а 16.1 Е-3 – числа 0.0161. Символы Е+2 обозначают умножение на 10 в степени +2, а Е-3 – на супень -3, то есть пэм = n*10m.
Символьный тип (char) – это множество символов кодовой таблицы компьютера
ASCII. Символьная константа – это символ, взятый в кавычки, например, ‘а’, ‘5’, ‘%’
Логический тип (boolean) характеризуется двумя значениями: false (неправда) и
true (истина).
Все стандартные типы (кроме действительного) упорядочены, то есть для каждого данного определены дальнейшее и Предыдущее значение. Тип данных важен при выделении памяти под переменные. Для хранения символьной переменной достаточно 1байта (Байт=8 бит, максимальное двоичное число11111111 соответствует десятичном 255, причем от 0). Для хранения переменной integer нужен 2 байт.
Нестандартные простые типы.
Пользователь может определить свои собственные типы данных в разделе описания типов type таким образом:
type <имя типа 1> = <описание типа 1>;
<имя типа n> = <описание типа n>;
Type
week=(sunday, monday, tuesday, wednesday, thursday,
friday, satufday);
work_week=monday..friday;
day=1..31;
Обратите внимание на то, что при объявлении пользовательских типов между их именем и конструкцией, определяющей тип, ставится знак равный. К простым нестандартным типам относятся перечисленный, диапазонный и строчный. Просчитанный тип пользователь создает путем указания (перечни) всех значений, которые могут принимать переменные этого типа, в виде списка слов-идентификаторов, взятого в скобки:
type <имя типа> = (<значение 1> <значение 2> …,<значение n>);
Значениями не могут быть данные числовых и символьных типов.
Пример, опишем два перечисленных типа (названия дней недели и цветов):
type week = (mon, tue, wed, , fri, sat, sun);
color = (red, green, yellow, white);
и объявим две переменные – day и avto этих типов:
var day : week;
avto : color;
Этим переменным можно придать, например, следующие значения:
day := fri; avto := green; avto := red.
Нумерация элементов списка начинается с 0. Над данными перечисленного типа
определены функции ord, pred и succ.
Функция Pred (x) определяет значение, которое стоит перед х;
функция Ord (x) возвращает порядковый номер величины х;
функция Succ (x) определяет значение, которое стоит за х.
Например
ord(avto)= 0, ord(day)= 4
pred(day)=, succ(day)= sat.
Данные этого типа нельзя вводить с клавиатуры или выводить на экран.

Задание 1:
1. Пусть заданы описания :
var x,y : (winter, spring, summer, autumn);
t : (cold, warm);
а) допустимые присвоения:x:=spring; t:=warm: t:=hot; y:=x; y:=t;
б) вычислить значения выражений или допустимые присвоения:
spring<summer;
autumn<winter;
Succ(spring);
Pred(autumn);
Ord(spring);
winter<=summer;
spring<>warm;
Pred(spring);
Pred(cold);
Pred(autumn) + Ord(cold);
в) допустим ли оператор цикла с заголовком: For x:=spring To autumn Do
2. Заданы описания следующих переменных :
VAR m, m1: (january, february, march, april, may, june, july, august, september, october,
november, december);
k: 1..maxint; n: 1..12;
Присвоить переменной m1:
а) название месяца, следующего за месяцем m;
б)название k-го месяца после месяца n.
1. Диапазонный тип – это сужение некоторого базового упорядоченного типа. Его описывают так:
type <имя типа> = <значение 1> .. <значение 2>;
Пример. Создадим три типа (weekdays, workdays, months), которые описывают все дни и
рабочие дни недели, а также номера месяцев года. Объявим переменные dayl, day2, day3 и
month этих типов:
Type weekdays = (mon, tue, wed, fri, sat, sun);
workdays = mon..fri;
months=1..12;
var dayl, day2 : weekdays;
day3 : workdays;
month1 : months;
2. Строковый тип данных (string). Значениями переменной строчного типа может быть
любая последовательность, состоящая не более чем из 255 символов. Данные строчного типа можно описать в разделе типов, задать в разделе констант или объявить в разделе переменных. Например:
type t = string[10];
const s = ‘Bye!’;
var top : t; w : string;
Типизированные константы.
Кроме обычных существуют типизированные константы. Они дают возможность объявлять переменные и сразу присваивать им значения:
const <имя константы 1> : <тип 1> = <переменная 1>;
. . .
< имя константы n> : <тип n> = <переменная n>;
В отличие от обычных значения типизированных констант в программе можно менять. Примерами типизированных констант могут быть:
const s : char = ‘a’; n : integer = 5; р : real = 1.73;
b : boolean = true;
Структура программы.
Программа состоит из следующих разделов:
заголовка
program < имя приложения >;
описательной части
uses — присоединение библиотек и модулей;
label — объявления меток;
const-объявление констант;
type — описание типов;
var-объявления переменных;
procedure— объявления процедур пользователя;
function-объявления функций пользователя
исполняющей части
begin
< раздел команд >
end.
 Заголовок и все разделы, кроме последнего, необязательны.
 Разделителем между командами программы служит символ ;
 В конце приложения всегда должна стоять точка .
 Заголовок программе присваивает программист. В служебных словах и именах, которыми пользователь называет свои программы и переменные, прописные и строчные буквы равноправные: имена а и А (или MyName и myname) обозначают один и тот же объект.
 В программу могут входить комментарии. Комментарий-фрагмент текста программы,
взятый в фигурные скобки {это комментарий} или записанный так: (*комментарий*).
Комментарий служит для объяснения работы программы и не влияет на выполнение
команд. Он может быть размещен в любом месте программы.
Замечание. Особым видом комментария является директива. В директиве после
открывающей скобки находится символ $. Директивы служат для поддержки необходимой модели памяти или режимов функционирования среды программирования. Описания некоторых директив приведены в конце раздела.
 Все величины, которые входят в программу, должны быть описанными.
1. Все величины должны быть описаны в разделе констант, если их значение
не изменяются во время выполнения программы:
const <константа 1> = <значение 1>;

<константа n> = <значение n>;
2. Все величины должны быть описаны в разделе переменных, если их значения вычисляются:
var <список переменных 1>: <тип переменных 1>;
… { Элементы списков записывают через запятую}
<список переменных n> : <тип переменных n>;
Первая программа.
Программа-это последовательность команд, предназначенных для реализации алгоритма
решение задачи. Алгоритм (и программу) составляют по такому принципу: вводят
исходные данные, вычисляют и выводят результаты. Так же решают задачи по
математике и физике, однако, здесь вычисления вручную не выполняют, это делает
компьютер.
Задача. Вычислить периметр р и площадь s треугольника со сторонами
а = 5, b = 3.6, с = 4.2.
Для решения задачи используем формулу Герона. Рассмотрим программу под названием triangle. Все команды, приведенные в программе, будут подробно описаны ниже.
program Triangle;
uses Crt;
const а = 5; b = 3.6; c = 4.2; {Задаем значение сторон}
var p, s : real; {объявляем переменные числового вещественного
типа для периметра р и площади s.}
begin
clrscr; {Очищаем экран перед выводом результатов}
р := а + b + c; {Вычисляем периметр}
writeln (‘p=’, Р:5:2); {выводим значение периметра}
р: = р / 2; {вычисляем полупериметр}
s:=sqrt(p * (р – а) * (р – b) * (р – c)); {Вычисляем площадь}
writeln(‘s = ‘, s:5:2); {Выводим значение площади}
end.
Символ * обозначает операцию умножения / – деления,
sqrt (x) – это функция вычисления квадратного корня из х.
Два символа := обозначают операцию присвоения.
Команда writeln служит для вывода результатов.
После выполнения программы на экране получим:
р = 12.80
s = 7.4