Инфа о сайте
Сайты
Форум
KamPol-LUG
Проект
Гостевая
Club music
Баллы
Баннеры
Радио

Категории раздела

Интернет [2]
Linux [1]
Компьютерные игры [0]
Безопасность [0]
Прикладные программы [0]
Уроки программирования на Pascal в Linux [1]
Разное [1]

Мини-флудилка


Статистика


Общее число человек: 1
Не зарегистированные: 1
Зарегистрированные: 0

Вход


Главная » Статьи » Уроки программирования на Pascal в Linux

Введение в Pascal;

Введение

Язык программирования Pascal был разработан в 1968-1971 гг. Николаусом Виртом в Цюрихском Институте информатики.
Pascal является традиционным алгоритмическим языком программирования, продолжающим линию Algol-60. Это значит, что программа представляет собой специально организованную последовательность шагов по преобразованию данных, приводящую к решению некоторой задачи.

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

Алфавит состоит из следующих символов:
  • Заглавные и строчные латинские буквы и символ «подчерк». Внимание! Символ «подчерк» считается буквой!
  • Десять арабских цифр
  • 22 специальных символа: + - * / = < > . , ; : @ ‘ ( ) [ ] { } # $ ^

Лексическая структура языка

Лексема – минимальная структура языка, имеющая самостоятельный смысл.
Классы лексем:
  1. Служебные слова (52 штуки) – неделимое образование, смысл которого фиксирован в языке. Их нельзя использовать в качестве имен, вводимых программистом.
  2. Идентификаторы (имена) – вводятся для обозначения в программе переменных, констант, типов, меток, процедур и функций. Формируются из букв и цифр. Цифра не может находиться в начале идентификатора. Длина идентификатора – не более 63 символов. Заглавные и строчные символы – не различаются.
  3. Комментарии – любой текст, поясняющий назначение блоков и элементов программы, заключенный в фигурные скобки "{" и "}” или в разделители вида "(*” и ")”.

Структура программы.

Program Name; {заголовок программы}

Var

{блок объявления переменных};

Begin

{основной блок};
End.
Программа начинается служебным словом Program, после которого следует имя программы. Имя конструируется из латинский букв и цифр. Русские буквы не используются. Имя не может начинаться с цифры. Максимальная длина имени – 63 символа.
Блок объявления переменных начинается служебным словом Var. В блоке указываются имена и типы всех переменных, используемых в программе.
Основной блок начинается служебным словом Begin и заканчивается служебным словом End. Блок содержит в себе команды обработки величин.

Пример программы.

Program MyFirstProg;

Var

a,b : byte;

c : word;

Begin

c:=a+b;
End.



Система типов языка. Скалярные типы.

Любая переменная характеризуется своим типом. Тип – множество значений, которые может принимать переменная и множество операций, которые можно выполнять над переменной.

Целые типы:

Название

Диапазон значений

Размер в памяти

Shortint

-128..128

1 байт

Integer

-32768..32767

2 байта

Longint

-2147483648..2147483647

4 байта

Byte

0..255

1 байт

Word

0..65538

2 байта


Вещественные типы

Название

Диапазон значений

Число цифр мантиссы

Размер в памяти

Real

2.9e-39..1.7e38

11-12

6 байт

Single

1.5e-45..3.4e38

7-8

4 байта

Double

5.0e-324..1.7e308

15-16

8 байт

Extended

3.4e-4932..1.1e4932

19-20

10 байт

Comp

-2e63..+2e63-1


8 байт


Символьный тип

Значениями символьного типа являются символы из множества ASCII (American Standard Code For Information Interchange – американский стандартный код для обмена информацией). Это множество состоит из 256 различных символов, упорядоченных определенным образом.
Каждый символ имеет свой порядковый номер
Если символ имеет графическое представление, то оно изображается в одинарных кавычках (апострофах). Для представления самого апострофа его изображение удваивается. Если символ графического представления не имеет, то используется эквивалентная форма записи, состоящая из символа ‘#’ (диез, решетка) и целочисленного кода символа от 0 до 255.
Например: ‘*’ ‘a’ ‘Z’ ‘;’ #10 ‘’’’

Булевский тип

Величина булевского типа может принимать только одно из двух значений:
true (истина);
false (ложь)
Над величинами булевского типа допустимы операции сравнения, причем считается, что
true < false


Описание переменных

В основном блоке программы можно использовать только те переменные, которые предварительно объявлены в блоке Var.
Пример описания переменных:

Var

a : byte;

x,y,z : integer;

index : 0..8;

S : char;

Sinus, Cosinus : real;

semaphore : ( opened, closed);

Описание типов

Программист при необходимости может конструировать собственные типы данных. Новые типы описываются в блоке type, расположенном сразу после заголовка программы.

Ограниченные типы

Самый простой способ создания нового типа на основе уже существующего является ограничение диапазона допустимых значений стандартного целого типа. Это ограничение определяется заданием минимального и максимального значений нового диапазона.

type

marks = 1..5;

diapason = -100..100;

letters = ‘a’..’z’;

Перечислимые типы

Новый тип задается путем явного перечисления всех возможных значений из определенного диапазона.

type

color1 = (red, yellow, green);

color2 = (green, blue, gray);

days = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);


Регулярные типы (массивы)

Массив – набор некоторого количества пронумерованных элементов одного типа.
Свойства массива:
имя – имя массива должно логически соответствовать смыслу информации, хранящейся в массиве;
количество элементов массива;
способ нумерования элементов массива;
тип элементов массива.
Массивы определяются в блоке TYPE.

type

massiv = array [1..100] of word;

m = array [0..2003] of real;

V1 = array [1..20,1..40] of char;

Для обращения к элементам массива необходимо указать имя массива и в квадратных скобках после имени массива индекс элемента массива.

massiv [22] := 125;

m [2000] := 345.21;

V1 [12,21] := ‘a’;


Оператор чтения (ввод)

readln ( name ); -- считывает введенное с клавиатуры значение и сохраняет его в переменной, имя которой указано в круглых скобках.

readln (a);

readln (x,y,z);

readln (massiv[2]);

readln (V1[10,10]);

Оператор записи (вывод)

writeln (‘строка текстовая’, Name); -- выводит на экран произвольный текст или значение переменной величины. Если некоторый текст заключен в кавычки, то он выводиться на экран как есть. Если необходимо вывеси на экран значение переменной, то её имя указывается без кавычек.
writeln (‘Здравствуйте!’);
writeln (‘Значение N=’,N);
writeln (massiv[3]);

Составной оператор

Применяется в тех случаях, когда синтаксис языка позволяет использовать только один оператор, а по логике программы необходимо использовать несколько операторов. В таких случаях несколько операторов просто заключаются между служебными словами begin и end и считаются одним оператором.
begin {обмен значений переменных A и B}

X:=A;

A:=B;

B:=Y;

end;

Условный оператор

Условные операторы предназначены для выбора к использованию одного из двух возможных действий в зависимости от некоторого условия.
if <условие>
then <оператор1>
else < оператор2>;
Линейные программы, в которых операторы всегда следуют друг за другом, встречаются очень редко. Обычно бывает необходимо сделать так, чтоб программа могла сделать выбор из нескольких вариантов действий, чтоб программа могла анализировать ситуацию.
Если условие выполняется, то выполняется оператор, следующий за служебным словом then, в противном случае выполняется оператор, следующий за служебным словом else.
Ветка else может отсутствовать.
Например:

1) if X>Y

then Max:=X;



2) if X>Y

then Max:=X

else Max:=Y;



3) if X>Y

then begin

Max:=X;
writeln (‘Первое число больше’);

end

else begin

Max:=Y;

writeln (‘Второе число больше’);
end;

Оператор варианта

Используется вместо обычного оператора условия, если необходимо проанализировать произвольное число альтернатив.
Предположим, необходимо выставить оценку в зависимости от числа правильных ответов тестируемого ученика.

case kol_pr_otv of

10: ocen := 5;

8..9: ocen := 4;

5..7: ocen := 3

else ocen := 2

end;

Оператор цикла с предусловием

Циклы – мощное и гибкое оружие программиста, позволяющее компактно и красиво реализовывать самые сложные алгоритмы. Циклы просто незаменимы при обработке больших массивов информации.
while <условие> do

begin

< тело цикла>;
end;
Этот структурный оператор задает повторяющееся некоторое число раз выполнение оператора, содержащегося в нем. Перед каждым очередным выполнением внутреннего оператора производится проверка условия, служащего критерием выхода из цикла. Если условие истинно, то цикл повторяется, если условие ложно – то выполнение цикла заканчивается.

while N>1000 do

begin

s:=s+M1[i];

i:=i+1
end;

Оператор цикла с постусловием

repeat

<тело цикла>
until <условие окончания цикла>

В отличие от предыдущего оператора данный цикл обязательно повториться хотя бы один раз. И цикл повторяется до тех пор, пока условие окончания цикла = false.

repeat

writeln (‘Введите число’);

readln (s);

process (s)

until (s<100) or (s=2000)

Оператор цикла с параметром

Эту разновидность оператора цикла удобно использовать, если число повторений известно наперед. Кроме того, циклы с параметром позволяют задать автоматическое изменение значения некоторой величины и использовать эту величину в последовательных итерациях.
for <переменная цикла> := <начальное значение> to <конечное значение> do
<оператор>;

for <переменная цикла> := < конечное значение > downto < начальное значение > do
<оператор>;

Данный вариант оператора цикла определяет:
  • диапазон изменения значений управляющей величины и, соответственно, число повторений оператора, содержащегося в теле цикла;
  • направление изменения значения переменной (возрастание или убывание);
  • собственно действия, выполняемые на каждой итерации (тело цикла).
В теле цикла запрещается явное изменение переменной цикла.

Подпрограммы

Современные программы очень сложны и велики по размеру. Одному человеку практически невозможно написать программу самостоятельно от начала и до конца. Современная программа конструируется из отдельных блоков. Каждый блок представляет собой структурно независимую единицу – подпрограмму. Подпрограмма – это часть программы, оформленная в виде отдельной синтакстической единицы и снабженная именем. По имени подпрограммы ее и можно вызвать в основной программе. По своей структуре подпрограмма в точности соответствует большой программе, то есть может содержать в себе любой набор команд а так же может содержать в себе собственный блок определения переменных.

Подпрограммы-процедуры

Procedure NameProc ( <формальные параметры>);

var

<список локальных переменных>;

begin

<тело подпрограммы>;
end;

Подпрограммы-функции

Смысл функции заключается в задании алгоритма вычисления некоторого значения и организации передачи вычисленного значения в точку вызова функции.
Function NameFunction ( <формальные параметры>): <тип результата>;

var

<список локальных переменных>;

begin

<тело подпрограммы>;
NameFunction:=<вычисленное значение функции>;

end;




Графический режим работы монитора.

В графическом режиме экран монитора понимается как набор точек. Каждая точка имеет свои координаты и набор свойств.
Команды графического режима

DetectGraph (var GraphDriver, GraphMode : integer);

InitGraph (var GraphDriver, GraphMode : integer; PathToDriver : string);

Bar (x1,y1,x2,y2 : integer); -- закрашенный прямоугольник;

Bar3D (x1,y1,x2,y2 : integer; Depth : word; Top : boolean);

ClearDevice; -- очистка экрана;

Circle (X,Y : integer ; Radius : word);

CloseGraph; -- завершение графического режима;
GetBkColor : word; -- возвращает номер цвета фона;
GetColor : word; -- возвращает номер цвета линий;

GetFillPattern (var FillPattern : FillPatternType);

GetFillSettings (var FillInfo : FillSettingsType);

GetGraphMode : integer; -- возвращает номер графического режима;

GetLineStyle (var LineInfo : LineSettingsStyle);

GetMaxColor : word; --возвращает максимально возможное значение, которое может быть использовано командой SetColor;
GetMaxX : integer; -- возвращает максимально возможное значение по оси Х;
GetMaxY : integer; -- возвращает максимально возможное значение по оси Y;
GetPixel (X,Y : integer) : word; -- возвращает номер цвета пикселя в точке с заданными координатами;
GetX : integer; -- возвращает текущее значение по оси Х;
GetY : integer; -- возвращает текущее значение по оси Y;

GraphErrorMsg (ErrorCode : integer) : string;

GraphResult : integer;

Line (x1,y1,x2,y2 : integer); -- линия;
LineTo (X,Y : integer); -- линия от точки с текущими координатами к точке с указанными координатами;
MoveTo (X,Y : integer); -- задание текущих координат;

OutText (TextString : string);

OutTextXY (X,Y : integer; TextString : string);

PutPixel (X,Y : integer; Pixel : word);

Rectangle (x1,y1,x2,y2 : integer); -- незаполненный прямоугольник;

SetBkColor (Color : word);

SetColor (Color : word);

SetFillPattern (Pattern : FillPatternType; Color : word); -- устанавливает тип закраски, определенный пользователем, и ее цвет.
SetFillStyle (Pattern : word: Color : word); -- устанавливает тип закраски (pattern) и ее цвет (color);

SetLineStyle (LineStyle : word; Pattern : word; Thickness : word); --


Стиль линии

SolidLn

0

DottedLn

1

CenterLn

2

DashedLn

3

UserBitLn

4 (User-defined line style)


Ширина линии


NormWidth

1

ThickWidth

3

SetTextJustify (Horiz, Vert : word); устанавливает тип выравнивания текста;
SetTextStyle (Font : word; Direction : word; Charsize : CharSizeType); устанавливает характеристики шрифта в графическом режиме (тип шрифта. направление, размер);


Константа

Величина

Значение

DefaultFont

0

8x8 bit mapped font

TriplexFont

1

Stroked font

SmallFont

2

Stroked font

SansSerifFont

3

Stroked font

GothicFont

4

Stroked font

HorizDir

0

Orient left to right

VertDir

1

Orient bottom to top

UserCharSize

0

User-defined character size

Файлы.

В Паскале под файлом понимается область памяти на внешнем запоминающем устройстве. В этой области памяти можно сохранять данные и при необходимости извлекать данные из нее.
В программе файл понимается как список, состоящий из некоторого числа величин одного типа.
Переменная файлового типа задается в блоке определения переменных:

Var

F : file of integer;

S1,S2 : file of string;

С каждой переменной файлового типа связано понятие текущего указателя файла. Текущий указатель можно понимать как скрытую переменную, которая в каждый момент времени указывает на какой-то один элемент файла.
Все элементы файла считаются пронумерованными и начальный элемент имеет нулевой номер.

Элемент файла

Элемент файла

Элемент файла

Элемент файла

..

Элемент файла

Элемент файла

..

..




Операции чтения из файла и записи в файл производятся поэлементно, причем в этих действиях учувствует тот элемент файла, на который указывает в данный момент времени текущий указатель.
Установочные и завершающие операции:
Assign(F,’d:\bp\data’); - устанавливает связь файловой переменной с конкретным файлом, существующим на диске.
Reset(F); - открывает уже существующий файл;
Rewrite(F); - создает файл. Если файл с таким именем уже существует, то файл очищается.
Операции ввода-вывода:
Read (F,N); - считывает текущий элемент файла F в величину N
Write (F,N); - записывает значение величины N в текущий элемент файла F
Операции перемещения по файлу
Seek (F,P) – перемещает указатель на элемент №P в файле F;
FileSize(F) – возвращает количество элементов файла F;
FilePos(F) – возвращает номер текущей позиции в файле F.
Специальные операции
Erase(F) – удаление файла;
Renme (F) – переименование файла;
ChDir (F) – изменение текущего каталога;
MkDir (F) – создание нового каталога;
RmDir (F) – удаление каталог.

Текстовый режим работы монитора

В текстовом режиме экран монитора понимается как матрица [80x25]. В каждую ячейку этой матрицы можно поместить один какой-либо символ.


Window (X1,Y1,X2,Y2) – создает окно с заданными размерами.
X1,Y1 – координаты левого верхнего угла;
X2,Y2 – координаты правого нижнего угла.

TextBackGround (cb); - цвет фона;
TextColor (ct); - цвет текста;
ClrScr; -очистка экрана;
GoToXY (x,y) – перемещение курсора в точку текущего окна с заданными координатами.
Пример программы
Program N1;

uses crt;

begin

textbackground (0);

clrscr;

window (20,6,60,17);

textbackground(blue);

textcolor (red);

clrscr;

gotoxy (6,3);

writeln (‘hello’);

readln;
end.













Записи

Записи – составной тип данных. Если нужно сохранить в памяти характеристики какого-либо одного объекта и эти характеристики разного типа, то используют записи.
Например, в программе необходимо работать с характеристиками помещения (длина, ширина, высота, кол-во окон, цвет стен).

type

room = record

dlin : word;

shir : word;

visota : byte; поля записи

kol_ok: byte;

color_s: string;

end;


var

R1,R2 : room;


Записи состоят из нескольких полей. С каждым полем можно работать отдельно. Для обращения к полям необходимо указать имя записи и через точку имя нужного поля.

R1.shir:=34;

R2.kol_ok:= R1.kol_ok+2;

R1. color_s:=’brown’;




Система программирования Turbo Pascal 7.0
Комбинации клавиш
Alt-F9 -- запуск процесса компиляции (проверка ошибок);
Ctrl-F9 – выполнение программы;
Alt-F5 – просмотр результатов работы программы.

Категория: Уроки программирования на Pascal в Linux | Добавил: prepod (12.04.2010)
Просмотров: 1177 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини-профиль
Привет Гость

Информация:
Группа: Гости
Сообщений: -==-
Браузер

Опрос:
Много ли нового Вы узнали посетив наш сайт?
Всего ответов: 43


Copyright KamPol-LUG © 2024 Хостинг от uCoz