Список обязательных знаний ************************************* 1) Структура программы PROGRAM NAM; // имя программы USES // раздел описания внешних библиотек .... {например} DOS,CRT,GRAPH; CONST // раздел описания констант .... {например} PI_5=3.1416; TYPE // раздел описания типов .... {например} T_UCH=RECORD // структура для описания ученика из 2-х полей FAM:STRING[20]; // Фамилия VES:SINGLE; // Вес в килограммах END; VAR // раздел описания переменных ........ {например представлено ниже в описании типов переменных} Собственные подпрограммы и функции как писать подпрограммы и функции описано ниже BEGIN // начало основной программы ...................... END. *********************************** 2) Типы переменных в разделе VAR VAR I,J,K:INTEGER; // целое со знаком (4 байта) IS:SmallInt; // целое со знаком (2 байта) W: WORD; // целое без знака (2 байта) DW:DWORD; // целое без знака (4 байта) B:BYTE; // целое без знака (1 байта) C:CHAR; // Символ (1 байт) R:REAL; // вещественное число мантисса и порядок (4 байта) RS:SINGLE; // вещественное число мантисса и порядок (4 байта) ST:STRING; // Строка символов переменной длины ST1:STRING[20]; // строка символов ограниченной длины M:ARRAY[1..100]OF INTEGER;// одномерный массив из 100 элементов типа INTEGER M2:ARRAY[1..10,1..10]OF BYTE;// двумерный массив 10 на 10 (всего 100) типа BYTE F:FILE OF BYTE; // типизированный файл байтов FF:TEXT; // текстовый файл ********************************** 3) Основные операторы ////////////////////////////////// оператор присваивания I:=5; ST:='ВАСЯ и ПЕТЯ'; R:=(I+50)/20; //////////////////////////////////// цикл с параметром FOR I:=1 TO 100 DO BEGIN // будет крутиться 100 раз и при этом менять "I" // тело цикла END; //////////////////////////////////// цикл с предусловием WHILE C<>#27 DO BEGIN // крутится пока выполняется условие // тело цикла END; //////////////////////////////////// Условный оператор // 1 вариант: IF I>20 THEN BEGIN // ветка, которая работает только если условие выполнилось END; // 2 вариант: IF I>20 THEN BEGIN // ветка, которая работает только если условие выполнилось END ELSE BEGIN // ветка, которая работает только если условие НЕ выполнилось END; /////////////////////////// Оператор выбора (ключ по значению переменной) CASE I OF /// если переменная "I" принимает значения....... 1:BEGIN // Если "I" будет равно 1, то выполнится эта ветка END; 2..100:BEGIN //Если "I" примет значение от 2 до 100, то выполнится эта ветка END; 105,111,113:BEGIN // Если "I" будет 105, 111 или 113, то выполнится эта ветка END; ELSE BEGIN // При всех остальных значениях "I" будет работать эта ветка END; END;// конец конструкции выбора // ПРИМЕЧАНИЕ! Если в качестве переменной взять не целого типа а символ // то и значения прийдется задавать соответствующие: CASE C OF 'q':BEGIN // ветка если C='q' END; '0'..'9':BEGIN // ветка если C='0','1','2','3','4','5','6','7','8','9' END; 'a','A','Ф','ф' : BEGIN //ветка если С='a','A','Ф','ф' END' ELSE BEGIN // ветка иначе END; END; *************************************** 4) Подпрограммы PROCEDURE BAX1; // Подпрограмма без параметра BEGIN END; PROCEDURE BAX2(K:INTEGER);// Подпрограмма с параметром-константой (значение не возвращается) BEGIN END; PROCEDURE BAX3(K:INTEGER ; VAR OTV:INTEGER); // Подпрограмма с параметром-константой // (не возвращается) и параметром переменной (возвращается) BEGIN END; В любой подпрограмме по общим правилам могут быть свои USES, CONST, TYPE, VAR и даже собственные встроенные подпрограммы и функции ****************************************** 5) Функция FUNCTION SLUCH:INTEGER; // целочисленная функция без параметра BEGIN SLUCH:=Random(255);// например случайное число END; FUNCTION KVADR(K:INTEGER):INTEGER;//Функция с параметром-константой (не портит параметр) BEGIN KVADR:=K*K; END; FUNCTION KUB_WWERH(K:INTEGER ; VAR OTV:INTEGER); // функция с параметром-константой // (не возвращается) и параметром переменной (возвращается) BEGIN KUB_WWERH:=K+OTV; OTV:=OTV+1; END; В любой функции по общим правилам могут быть свои USES, CONST, TYPE, VAR и даже собственные встроенные подпрограммы и функции ***************************************** 6) операторы ввода-вывода WRITE(K,'+',L,'=',D);// Выдать переменные K,L,D вместе с текстом WRITELN(K,'+',L,'=',D);// Выдать K,L,D вместе с текстом И СТРОЧКУ ПЕРЕНЕСТИ WRITELN(K:4:2);// напечатать вещественное число с форматированием 2-а знака после запятой WRITELN; // просто перевести строку READ(K); //Остановиться, и ждать, пока не введут значение "К" (строчку не переводить) READLN(I,J,K);//остановиться и ввести три переменные (строчку перевести) READLN; //Остановиться и ждать, пока введут "ENTER" ***************************************** 7) Текстовые файлы (файлы из строк) PROCEDURE READ_FILE(NAM:STRING);// подпрограмма чтения из текстового файла с именем NAM VAR F:Text;// переменная "блок управления текстовым файлом" I:INTEGER;// рабочая переменная R:REAL;// рабочая переменная ST:STRING;// рабочая переменная BEGIN Assign(F,NAM);//записать в блок управления файлом реальное имя файла на диске RESET(F);// открыть файл для чтения READLN(F,ST);// прочитать из файла одну строку в переменную ST и строчку перевести READLN(F,I);//Если в текущей строке целое число, то оно запишется в I иначе ошибка READLN(F,К);//Если в текущей строке вещечтвенное число, то оно запишется в К иначе ошибка Close(F);// закрыть файл END; PROCEDURE WRITE_FILE(NAM:STRING);// подпрограмма ЗАПИСИ в текстовый файл с именем NAM VAR F:Text;// переменная "блок управления текстовым файлом" I:INTEGER;// рабочая переменная BEGIN Assign(F,NAM);//записать в блок управления файлом реальное имя файла на диске REWRITE(F);// открыть файл для на запись. (создать новый или уничтожить старый) FOR I:=1 TO 100 Do BEGIN // записать в файл 100 строк с номерами WRITELN(F,I); END; Close(F);// закрыть файл END; ***************************************** 8) Типизированные файлы (двоичные) В таком файле пишутся только записи определенного типа (например вещественные числа или записи типа RECORD PROCEDURE WRITE_FILE(NAM:STRING);// подпрограмма ЗАПИСИ в файл с именем NAM VAR F:FILE OF REAL;// переменная "блок управления текстовым файлом" I:INTEGER;// рабочая переменная R:REAL; BEGIN Assign(F,NAM);//записать в блок управления файлом реальное имя файла на диске REWRITE(F);// открыть файл для на запись. (создать новый или уничтожить старый) FOR I:=1 TO 100 Do BEGIN // записать в файл 100 элементов вещественного типа R:=I*8.5; WRITE(F,R); END; Close(F);// закрыть файл END; ***************************************** 9) Записи (структуры) TYPE T_MOI=RECORD // пример описания сложного типа X,Y:INTEGER;// два поля целого типа ST:STRING[20];// строка 20 символов (в Record применяют только ограниченные строки) R:REAL;// поле вещественного типа M:ARRAY[1..100]OF BYTE;// массив байтов END; VAR // переменные K:T_MOI; переменная типа T_MOI MM:ARRAY[1..20]OF T_MOI;массив типа T_MOI FF:File of T_MOI;файл типа T_MOI BEGIN K.X:=5; пример записи в переменную "К" поле "Х" MM[5].R:=3.1416; пример записи в вещественное поле пятого лемента масива // работа с файлом ASSIGN(FF,"BASIA.DAT"); REWRITE(FF); WRITE(FF,K);// запись структуры Close(FF);