Език за програмиране Pascal.
Както всеки език и Pascal има азбука и препинателни знаци, от тях се изграждат думи и от думите според граматика - по сложни фрази (в случая програми). Азбуката е следната:
- латински букви: a, b, ... , z, _ - в Pascal не се прави разлика между големи и малки букви;
- цифри: 0, 1, ... , 9;
- знаци за операции: + - * / > >= < <= <> =
- специални знаци: := -> ^
- разделители и скоби: () [] {} : ; , . '
Вижда се, че някои от буквите в Pascal се пишат с две букви на компютъра (например: >= <= := или->). Такива букви не бива да се разделят една от друга с интервал, нов ред или табулация
От азбуката на езика се изграждат думи. В Pascal има три вида думи:
- ключови (резервирани) думи. Тези думи са двадесетина, трябва точно да се изписват и да се ползват само там, където налага граматиката на езика. Пълен списък от ключовите думи на езика има в Help на Borland Pascal. Такива думи са: program, uses, label, const, type, var, integer, real, procedure, function, begin, end, if, for, do, goto и др. В Borland Pascal те се показват обикновено като тъмно черни.
- идентификатори. Те служат да именуват различни неща в програмата, като например променливи, подпрограми, типове, записи и др. Те се измислят от програмиста. Правилото за създаване на идентификатор е следното: идентификаторът трябва да е различен от ключовите думи, трябва да започва с латинска буква и трябва да се състои само от латински букви и цифри. Например a, ab, a12, first_name. В една и съща програмна част не бива да има дублиране на идентификатори (не забравяйте, че не се прави разлика между малки и големи букви). Borland Pascal те се показват обикновено в нормален черен цвят.
- константи-литерали. Това са константите в програмата, които присъстват със своята стойност. Те в Borland Pascal обикновено се оцветяват в синъо. Например: 5, -12.5, 'Здравей свят !' и т. н. Те биват:
- числови
цели: 5, -24, +15
реални: 5.5, -4.98, +3.45, . 45, 0.123e-5
- символни - включват всичките 256 символа на компютъра: 'a', 'A', 'Ж', '+'.
- низ от символи - поредица от всичките 256 символи на компютъра заградени с апострофи: 'Въведете число:', 'Error'
- логически: true - истина, false - лъжа.
Символите и низовете от символи се заграждат със знака апостроф '. Внимавайте, кой точно апостроф се ползва, защото на клавиатурата има два подобни знака. Ползва се този при кавичките.
Отделните думи се разделят помежду си със знаците разделители, знаци за операции, специални знаци, интервали, табулация или нов ред. Няма значение как разпределяте програмата по редове.
Основната структура на една програма е следната:
заглавие
декларации
тяло .
Програмата винаги завършва с точка.
Заглавието има следния вид:
program име;
Името задава име на цялата програма и е идентификатор.
Декларациите декларират използваните в програмата библиотеки, етикети, константи, типове, променливи и подпрограми. Основен принцип в Pascal е, че всичко се декларира.
Тялото на програмата съдържа съвкупността от нейните команди и има следния вид:
begin
команда 1;
команда 2;
.
.
команда N
end
Знакът ";" служи да раздели две поредни команди една от друга и не е към командите. Затова след последната команда може да няма ";", защото end не е команда.
Командите в езика Pascal са или оператори или обръщения към подпрограми процедури.
Освен константи-литерали (т. е. такива, чието стойност е някъде вътре в тялото на програмата), програмистът може да декларира константи в началото на програмата като зададе име и стойност на константата. Всички такива константи в програмата се обявяват в декларативната част след ключовата дума const. Декларацията на константа има следния вид:
име = стойност;
Името е идентификатор, а стойността е константа-литерал или израз от преди това декларирани константи и константи-литерали. Пример:
const
count = 5;
lihva = count * 0.05;
message = 'Грешен брой!';
Променливите в програмата са клетки от оперативната памет, в които можете да съхранявате и променяте данни по време на изпълнение на програмата. Променливата има име (идентификатор) и тип (ключова дума или идентификатор). Типът служи да укаже какви данни могат да се присвояват на променливата. От него се разбира дължината в байтове на променливата и нейната дефиниционна област (т. е. диапазона от стойности, които тя може да приема). Всички променливи в програмата се обявяват в декларативната част след декларацията на константите, ако има такава. Декларацията на променливите започва с ключовата дума var. Променлива се декларира по следния начин:
име: тип;
Ако имате няколко променливи от един и същи тип можете за икономия на писане да ги наредите в списък:
име1, име2, ..., имеN: тип;
Например:
var
a: integer;
p: real;
k, n, m: integer;
x1, x3: real;
ch: char;
Типът на променлива може да е дефиниран от програмиста или да е един от вградените в езика типове.
Основните вградени в Pascal типове са: integer, real, char, boolean, string, text. Освен тях специално в Borland Pascal има още няколко. В Help на Borland Pascal има подробна информация за вградените типове, дължината на полето от паметта, където те се поместват и дефиниционните им области. Нека за сега разгледаме най-използваните скаларни типове.
integer - целочислен тип данни. Реализира се в 2 байта и променливите от този тип могат да съдържат цели числа приблизително от -32000 до 32000.
real - реални 7-8 цифрени числа. Реализира се в 6 байта.
char - единични символи. Реализира се в 1 байт. Променливите от тип char могат да получават като стойност всеки един от 256-те символи на компютъра.
boolean - логически тип. Променливите от този тип могат да получават стойности true (истина) или false (лъжа).
Вътре на произволни места в текста на програмата може да се вложи свободен текст наречен коментари, които да дават пояснение за програмиста, който чете програмата. Коментарът се прескача от транслатора и не влиза в кода на изпълнимата програма. Коментарът се загражда с {}. Например:
{ това е коментар }
Както бе казано по-горе, тялото на програмата се състои от поредица от команди, които са или обръщения към процедури, или оператори. Най- простия оператор е празния оператор. Той нищо не върши и се маркира само с ";". Понякога се използва да маркира не готови още части от програмата, празни цикли, празен избор в оператор за избор.
Операторът за присвояване служи да зададе стойност на променлива. Той има следния вид:
променлива := израз
Действието му е следното: изчислява се израза и получената стойност се присвоява на променливата. Трябва при това да се внимава стойността на израза да е от същия тип като този на променливата и тази стойност да е в дефиниционната област на променливата, защото иначе ще настъпи препълване, което ще доведе до грешни резултати при изпълнение на програмата. Какво представляват изразите се описва в следващата точка.
Чрез готови библиотечни подпрограми се осъществява входа и изхода от и към програма на Pascal.
Процедура readln служи за въвеждане на данни от клавиатурата. В този случай тя има вида:
readln(променлива1, променлива2, ..., променливаN)
Нейното действие е следното: програмата спира изпълнението си и чака да се въведат от клавиатурата N-те стойности разделени с интервал. Натиска се клавиша Enter и стойностите се присвояват на съответните променливи и програмата продължава да се изпълнява нататък. Необходимо е тези стойности да са съобразени с типа на променливите, иначе процедурата дава грешка и програмата се прекъсва. Ако стойностите са извън дефиниционната област на съответните променливи, възниква препълване и програмата не работи вярно. Пример:
a: integer; x: real;
readln(a, x);
Вход: 3 5.34
Резултат: a=3, x=5.34
Процедурата readln може да се ползва и без параметри. Тогава тя само спира изпълнението на програмата и се чака да се натисне клавиша Enter за да се продължи.
В Pascal съществува и процедура read за вход от клавиатурата, но в Borland Pascal тя е реализирана твърде странно и не се препоръчва да се използва.
Чрез процедурите write и writeln си осъществява извеждане на данни към екрана. В този случай те имат вида:
write(израз1, израз2, ..., изразN)
writeln(израз1, израз2, ..., изразN)
Тези процедури извеждат стойностите на изразите една след друга на екрана. Разликата между двете е, че при write курсора остава на същия ред на екрана след последната изведена стойност, а при writeln след извеждане на стойностите курсорът преминава в началото на нов ред. writeln може да се използва и без параметри. Тогава тя просто премества курсора в началото на нов ред. И при двете процедури програмистът трябва да се погрижи да отдели стойностите на изразите една от друга, иначе те ще се слеят. Това може да се постигне или като между тях се изведе по един символ интервал ' ', или ако към изразите се добави форматираща информация. Освен това без форматираща информация реалните стойности се извеждат в трудния за четене научен формат (например 1.5 ще се изведе като 0.150000000E01). Форматиращата информация има вида
израз:n
реален_израз:n:m
където n задава броя на позициите, в които ще се изведе стойността на израза, m задава броя на цифрите след десетичната точка (точността на числото). Ако стойността е по-дълга от n, тя се извежда цялата, ако е по-къса тя се допълва до n с интервали отляво.
Задача 2.1: Да се състави програма, която събира две числа.
Анализ
Входни данни: a и b - реални
Изходни данни: c - реална
Знание: c=a+b
Алгоритъм
Начало
1.Въведи a,b
2.c <- a + b
3.Изведи c
Край
Програма
program suma; { заглавие на програмата }
uses WinCrt;
var { декларации на променливи }
a, b, c: integer;
begin { тяло на програмата }
readln(a, b); { команда1 - въвеждане от клавиатурата }
c := a + b; { команда2 - оператор за присвояване }
writeln(c); { команда3 - извеждане на екрана }
end.
След като изпълните тази програма се вижда, че така написана тази програма е неудобна за ползване. Затова след begin добавете write('Въведете две събираеми:'); и вместо writeln(c); напишете writeln('Сума:',s:10:4);
Задача 2.2: Да се състави програма, която по зададен радиус изчислява дължината и лицето на кръга.
Анализ
Входни данни: r - реални, константа p=3.1416
Изходни данни: l и s - реални
Знание: l=2 p r, s=p r2
Алгоритъм
Начало
1.Въведи r
2.l <- 2 p r
3.s <- p r2
4. Изведи l
5.Изведи s
Край
Програма
program circle;
const
p = 3.1416;
var
r, l ,s :real;
begin
write('Въведете радиус на кръга:');
readln(r);
l:=2 * p * r;
s:=n * r * r;
writeln('Дължина:', l:5:2);
writeln('Лице:', s:5:2);
end.
П.С. Повече може да прочетете от страницата на Веселин Христов