Program KURS;{Название прога}
Uses Crt;{подключаемые библиотеки}
Type{раздел описания типов}
STUDENT=Record{сообственно тип СТУДЕНТИК}
FIO:String[30];{Фамилия Имя Отчество - Тип строка ограниченная 30 символами}
G:longint;{Группа тип БОЛЬШОЕ ЦЕЛОЕ ЧИСЛО}
U:array[1..5] of byte;{массив оценок с 5 элементами типа "байт"}
End;{конец описания СТУДЕНТИКА}
Var{РАЗДЕЛописания переменных}
SF:File Of STUDENT;{переменная содержащая дескриптор файла, с которым будем работать}
stud:STUDENT;{переменная типа СТУДЕНТИК}
Procedure pause;{Описание процедуры паузы, тупо тормозит и выводит сообщение}
BEGIN{начало (далее не буду коментить, т.к. всегда означает НАЧАЛО)}
writeln;{переход на следующую строку}
WriteLn('Для продолжения нажмите любую клавишу');{выводсообщения и переход на следующую строку}
if readkey=#0 then readkey;{вот она сама пауза. Ждет нажатия любой клавиши. Такая конструкция из-за того, что некоторые кнопки имеют 2 байта кода, а большинство только 1, но нам нужно учитывать все}
END;{конец (далее не буду коментить, т.к. всегда означает КОНЕЦ)}
{}
Function GetP(a,b:byte):byte;{описание функции, возвращает значение типа байт}
{а - начальный, b -конечный. воспринимает только числа от 0 до 9, и тупо ждет их нажатия, соответственно возвращает его}
Var{}
k:char;{тип "символ", будем хранить код нажатой кнопки}
c:byte;{сообственно будующий результат}
Begin{}
While True Do Begin{цикл бесконечный, выход только один - команда Break}
k:=readkey;{прога виснет тут, пока не нажмешь кнопку, а затем получаем её код}
if k=#0 ThenBegin{Вообщен все двух байтовые коды, в первом байте содержит 0, вот мы тогда и читаем второй байт}
readkey;{сообственно читаем его, чтоб в буфере клавы не оставался второй байт. Не сделав этого, в будущем можем получить ошибку}
continue;{так как нас не интересуют эти кнопки, возвращаемся в начало цикла и снова ждем}
End;{}
c:=Ord(k)-48;{код нуля 48, единицы 49 и т.д. Ord - получает код символа,отняв 48 получим число}
if (c>=a)AND(c<=b) Then Break;{если число попадает в наш диапозон, то выходим из цикла}
End;{конец цикла}
GetP:=c;{возвращаем значение туда, где вызвали функцию}
End;{}
{}
Function GetS(a,b:byte;c:string):String;{Функция "красиво" получает строку. а - минимальня длина, b - максимальная}
Var{}
k:char;{}
i,X,Y:Byte;{}
Begin{}
X:=WhereX;{получениекоординаты X курсора, запоминаем, для того чтоб потом вернуть его на место}
Y:=WhereY;{}
write(c:b);{форматированный вывод "(что-то):X" - выделяет место в размере X квадратиков для (что-то)}
While True Do Begin{}
k:=readkey;{}
if k=#0 Then Begin{}
readkey;{}
continue;{}
End;{}
if (k=#13)AND(length(c)>=a) Then Break;{}
If (k<#32)AND(k<>#8) Then Continue;{}
if(length(c)<b) Or (k=#8) Then Begin{}
If (k=#8) And (c[0]>#0) Then c[0]:=Chr(Ord(c[0])-1) Else c:=c+k;{}
GotoXY(X,Y);{}
Write(c:b);{}
GotoXY(1,Y+1+((length(c)+X-2) div 80));{}
End;{}
End;{}
GetS:=c;{}
End;{}
{}
Function GetI(a,b,c:longint):longint;{Функция получает число в заданном диапазоне и начальном значении. "Похож на калькулятор)))"}
Var{}
X,Y,i,n:byte;{}e:longint;{}
k:char;{}
Begin{}
X:=WhereX;{}
Y:=WhereY;{}
n:=0;{}
e:=b;{}
while e<>0 do begin n:=n+1; e:=e div 10; end; {}
write(c:n);{}
While True Do Begin{}
k:=readkey;{}
if k=#0 Then Begin{}
readkey;{}
continue;{}
End;{}
if (k=#13)AND(c>=a) Then Break;{}
if (k<>#8)AND((k<'0')OR(k>'9')) Then Continue;{}
if k=#8 Then c:=(c div 10) Elsec:=c*10+(Ord(k)-48);{}
if c>b then c:=b;{}
GotoXY(X,Y);{}
Write(c:n);{}
End;{}
writeln;{}
GetI:=c;{}
End;{}
{}
function fExist:boolean;{Проверяет, существует ли файл}
begin{}
{$I-}{}
Reset(SF);{}
{$I+}{}
if ioresult=0 then fExist:=true else fexist:=false;{}
end;{}
{}
function fExit:boolean;{проверяет и выводит сообщуху, что файла нет,...
Uses Crt;{подключаемые библиотеки}
Type{раздел описания типов}
STUDENT=Record{сообственно тип СТУДЕНТИК}
FIO:String[30];{Фамилия Имя Отчество - Тип строка ограниченная 30 символами}
G:longint;{Группа тип БОЛЬШОЕ ЦЕЛОЕ ЧИСЛО}
U:array[1..5] of byte;{массив оценок с 5 элементами типа "байт"}
End;{конец описания СТУДЕНТИКА}
Var{РАЗДЕЛописания переменных}
SF:File Of STUDENT;{переменная содержащая дескриптор файла, с которым будем работать}
stud:STUDENT;{переменная типа СТУДЕНТИК}
Procedure pause;{Описание процедуры паузы, тупо тормозит и выводит сообщение}
BEGIN{начало (далее не буду коментить, т.к. всегда означает НАЧАЛО)}
writeln;{переход на следующую строку}
WriteLn('Для продолжения нажмите любую клавишу');{выводсообщения и переход на следующую строку}
if readkey=#0 then readkey;{вот она сама пауза. Ждет нажатия любой клавиши. Такая конструкция из-за того, что некоторые кнопки имеют 2 байта кода, а большинство только 1, но нам нужно учитывать все}
END;{конец (далее не буду коментить, т.к. всегда означает КОНЕЦ)}
{}
Function GetP(a,b:byte):byte;{описание функции, возвращает значение типа байт}
{а - начальный, b -конечный. воспринимает только числа от 0 до 9, и тупо ждет их нажатия, соответственно возвращает его}
Var{}
k:char;{тип "символ", будем хранить код нажатой кнопки}
c:byte;{сообственно будующий результат}
Begin{}
While True Do Begin{цикл бесконечный, выход только один - команда Break}
k:=readkey;{прога виснет тут, пока не нажмешь кнопку, а затем получаем её код}
if k=#0 ThenBegin{Вообщен все двух байтовые коды, в первом байте содержит 0, вот мы тогда и читаем второй байт}
readkey;{сообственно читаем его, чтоб в буфере клавы не оставался второй байт. Не сделав этого, в будущем можем получить ошибку}
continue;{так как нас не интересуют эти кнопки, возвращаемся в начало цикла и снова ждем}
End;{}
c:=Ord(k)-48;{код нуля 48, единицы 49 и т.д. Ord - получает код символа,отняв 48 получим число}
if (c>=a)AND(c<=b) Then Break;{если число попадает в наш диапозон, то выходим из цикла}
End;{конец цикла}
GetP:=c;{возвращаем значение туда, где вызвали функцию}
End;{}
{}
Function GetS(a,b:byte;c:string):String;{Функция "красиво" получает строку. а - минимальня длина, b - максимальная}
Var{}
k:char;{}
i,X,Y:Byte;{}
Begin{}
X:=WhereX;{получениекоординаты X курсора, запоминаем, для того чтоб потом вернуть его на место}
Y:=WhereY;{}
write(c:b);{форматированный вывод "(что-то):X" - выделяет место в размере X квадратиков для (что-то)}
While True Do Begin{}
k:=readkey;{}
if k=#0 Then Begin{}
readkey;{}
continue;{}
End;{}
if (k=#13)AND(length(c)>=a) Then Break;{}
If (k<#32)AND(k<>#8) Then Continue;{}
if(length(c)<b) Or (k=#8) Then Begin{}
If (k=#8) And (c[0]>#0) Then c[0]:=Chr(Ord(c[0])-1) Else c:=c+k;{}
GotoXY(X,Y);{}
Write(c:b);{}
GotoXY(1,Y+1+((length(c)+X-2) div 80));{}
End;{}
End;{}
GetS:=c;{}
End;{}
{}
Function GetI(a,b,c:longint):longint;{Функция получает число в заданном диапазоне и начальном значении. "Похож на калькулятор)))"}
Var{}
X,Y,i,n:byte;{}e:longint;{}
k:char;{}
Begin{}
X:=WhereX;{}
Y:=WhereY;{}
n:=0;{}
e:=b;{}
while e<>0 do begin n:=n+1; e:=e div 10; end; {}
write(c:n);{}
While True Do Begin{}
k:=readkey;{}
if k=#0 Then Begin{}
readkey;{}
continue;{}
End;{}
if (k=#13)AND(c>=a) Then Break;{}
if (k<>#8)AND((k<'0')OR(k>'9')) Then Continue;{}
if k=#8 Then c:=(c div 10) Elsec:=c*10+(Ord(k)-48);{}
if c>b then c:=b;{}
GotoXY(X,Y);{}
Write(c:n);{}
End;{}
writeln;{}
GetI:=c;{}
End;{}
{}
function fExist:boolean;{Проверяет, существует ли файл}
begin{}
{$I-}{}
Reset(SF);{}
{$I+}{}
if ioresult=0 then fExist:=true else fexist:=false;{}
end;{}
{}
function fExit:boolean;{проверяет и выводит сообщуху, что файла нет,...
Поделиться рефератом
Расскажи своим однокурсникам об этом материале и вообще о СкачатьРеферат