ЗНАЙ ИНТУИТ, Лекция, Основни понятия за езика
I/O процедури
Всяка програма, когато въвежда първоначални данни и извежда резултати, взаимодейства с външни устройства. Комбинацията от стандартни входни и изходни устройства, т.е. клавиатура и екран на дисплея, се наричаконзола. Обменът на данни с конзолата е частен случай на обмен с външни устройства.
Въвеждане от клавиатурата
Процедурите read и readln са дефинирани за въвеждане от клавиатурата.
Списъкът с имена на променливи, разделени със запетаие посочен в скоби. Квадратните скоби показват, че списъкът може да липсва. Например:
Можете да въвеждате цели, реални, символни и низови стойности. Входните стойности трябва да бъдат разделени с произволен брой празни знаци (интервал, раздел, нов ред).
Въвеждането на стойността на всяка променлива става по следния начин.
- Стойността на променлива се маркира като група от знаци между разделители.
- Тези символи се преобразуват във вътрешната форма за представяне, съответстваща на типа на променливата.
- Стойността се записва в мястото в паметта, посочено от името на променливата.
Например, ако въведете реалното число 3.78 в променлива от тип real, то се преобразува от четири знака (3, 'точка', 7 и 8) в шестбайтово представяне като мантиса и експонента.
Процедурата readln след въвеждане на всички стойности прескача на следващия ред от изходните данни. С други думи, ако има вход в следващата част на програмата, той ще бъде изпълнен от следващия ред на въвеждане. Когато използвате процедурата за четене, следващите изходни данни ще бъдат взети от същия ред. Процедурата readln без параметри просто изчаква натискането на клавишаEnter.
Особеността при въвеждането на символи и низовее, чеинтервалите в тях не се различават от всички останали, така че не могат да бъдат разделители. Например, нека дефинираме променливи
и програмата има процедура за въвеждане read(a, b, c) . Да кажем, че променлива a трябва да бъде зададена на 2, променлива b на 3.78 и да напишете # на c. Всеки вариант на местоположението на първоначалните данни ще доведе до неправилен резултат, тъй като след второто число е необходимо да се постави знак за интервал, за да бъде разпознат, и същият знак ще се възприеме като стойност на променливата c .
Правилното решение е да въведете числа и символи в различни процедури и да поставите символите на отделен ред, например:
Въвеждането на данни се извършва чрезbuffer- специална област на RAM. Всъщност данните първо се буферират и след това се четат от там чрез процедурите за въвеждане. Буферирането се извършва чрез натискане на клавишаEnterзаедно с неговия код ( #13 #10 ). Процедурата за четене, за разлика от readln, не изчиства буфера, така че следващият вход след нея ще бъде изпълнен от мястото, където е завършил предишният, тоест започвайки от знака за край на реда.
За да избегнете тази ситуация, трябва да използвате readln вместо read.
Изход на дисплея
Изходът се преобразува от вътрешното представяне в знаци, които се показват на екрана. За това са дефинирани стандартните процедури write и writeln.
Процедурата за запис отпечатва стойностите в списъка на екрана, а writeln също премества курсора на следващия ред. Процедурата writeln без параметри просто придвижва курсора към следващия ред.
Можете да извеждате стойности от логически, цели, реални, символни и низови типове. Списъкът може да съдържа повече от именапроменливи, но и изрази, както и техния частен случай - константи. Освен това за всяка изходна стойност можете да зададете нейнияформат, например:
Нека разгледаме подробно този оператор (променливите a и b са описани по-горе). Изходният списък има пет елемента, разделени със запетаи. В началото с апостроф се изписва низова константа, която се показва непроменена, с всички интервали. В непосредствена близост до него ще се покаже стойността на целочислената променлива a. След името на променливата, разделено с двоеточие, се посочва броят на заделените за нея позиции, вътре в които стойността е подравнена вдясно.
Третият елемент от списъка е низова константа, която обяснява стойността на променливата b, разположена след нея. За b са посочени две спецификации на формата, което означава, че за тази променлива са заделени общо шест позиции, като две от тях са за дробната част (още една позиция ще бъде заета от десетична точка, така че има три позиции за целочислената част).
Последният елемент в изходния списък е израз, чиято стойност ще бъде отпечатана във формата по подразбиране (с ред):
Сега, след като видяхме примера, можем да формулираме общиправила за писане на процедури за извод.
- Изходният списък е разделен със запетаи.
- Списъкът съдържа изрази, както и техните специални случаи - променливи и константи от логически, цели, реални, символни и низови типове.
- След всяка стойност можете да посочите формата чрез двоеточие, тоест броя на позициите, разпределени за него. Ако стойността е по-къса, тя се „притиска“ към десния край на разпределеното поле; ако е по-дълга, полето се „разгъва“ до необходимия размер.
- За реални числа можете да посочите втори формат, който показва колко позицииот общото числоса разпределени за дробната частчисла. Имайте предвид, че десетичната точка също заема една позиция. Ако вторият или и двата формата не са посочени, реалното число се извежда в степенна форма.
- Ако форматите не са посочени, минималният брой позиции, необходими за тяхното представяне, се присвоява на цяло число, знак и низ. Едно реално число винаги има 17 позиции, като 10 от тях са за дробната му част.
- Форматите могат да бъдат изрази от целочислен тип.
Сега, най-накрая, научихме достатъчно материал, за да напишем първата пълна програма с пълно разбиране.
Пример. Програма, която преобразува температурата в градуси по Фаренхайт в градуси по Целзий, използвайки формулата: C = 5/9 (F - 32), където C е температурата в Целзий, а F е температурата във Фаренхайт.
За да съхраните първоначалните данни и резултати, трябва да отделите място в паметта. Това се прави в оператор 1. Променливите fahr и cels са от real тип real. Изявление 2 е подкана за въвеждане на данни.
Въвеждането се извършва в оператор 3 с помощта на процедурата readln. Изявление 4 оценява израза отдясно на оператора за присвояване и присвоява резултата на променливата cels. По време на оценката целочислените константи се преобразуват от компилатора в реална форма. В петото изявление първоначалните и изчислените стойности се показват със съответните обяснения.