Основы программирования на языке Паскаль
predmet:string; kst:array[1 6] of byte;
procedure rea_ocenki(fio:string;Var oc:mo);
Label M1,M2,M3,M4;
Var i:integer;
begin
for i:=1 to 5 do
Begin
case i of
1:predmet:='основыинформатики';
2:predmet:='высшейматематике';
3:predmet:='
философии';
4:predmet:='архитектуреЭВМ';
5:predmet:='историиУкраины'; end;
writeln('введитеоценкустудента ',fio,' no ',predmet);
M1: readln(oc[i,1]);
if (oc[i,1]<2) or (oc[i,1]>5) then
Begin writeln('введите правильно оценку'); goto M1; end;
if oc[i,1]>2 then Begin oc[i,2]:=0; oc[i,3]:=0; goto M4; end else
M2: writeln('введите вторую оценку студента ',fio,' по ',predmet);
readln(oc[i,2]);
if (oc[i,2]<2) or (oc[i,2]>5) then
Begin writeln('введите правильно оценку'); goto M2; end;
if oc[i,2]>2 then begin oc[i,3]:=0; goto M4; end else
M3: Writeln('введите третью оценку студента ',fio,' по ',predmet);
readln(oc[i,3]);
if (oc[i,3]<2) or (oc[i,3]>5) then
begin writeln('введите правильно оценку'); goto M3; end;
M4: end; end;
BEGIN { начало блока ввода оценок студентов}
writeln('при вводе оценки набираются: 5, если экзамен');
writeln('сдан на 5 и, если были пересдачи, то 2,2,3 ');
z: writeln('до первой положительной оценки');
writeln('задайте количество групп, не более 6 ');
readln(kgr);
for i:=1 to kgr do { установка индекса группы }
begin case i of { определяем группу по i }
1:n:=610;
2:n:=611;
3:n:=612;
4:n:=613;
5:n:=614;
6:n:=615;
else writeln('неправильно задано количество групп'); goto 2; end; end;
writeln('задайте количество студентов в группе ',n);
readln(kst[i]);
for j:=1 to kst[i] do { установка номера студента i в группе }
begin with gr[i,j] do { работать без составных имен }
begin namb:=n; writeln('введитефамилию',j,' студента гр. ',namb);
readln(fio);
for k:=1 to 5 do { обнуляеммассивоценок }
for l:=1 to 3 do
o[k,l]:=0;
writeln('введите оценки студентов ',fio);
rea_ocenki(fio,o); end;end;end;
{ конец ввода оценок студентов }
{ отображение на экране введения оценок }
for i:=1 to kgr do
for j:=1 to kst[i] do
Begin with gr[i,j] do
Begin for k:=1 to 5 do
write(o[k,1],o[k,2],o[k,3],' '); writeln; end; end;
{ конец вывода на экран оценок }
{ начало блока анализа успеваемости студентов }
for i:=1 to kgr do { индексгруппы }
for j:=1 to kst[i] do { номерстудента }
Beginkol_dvoek:=0; v:=0; { работать без составных имен }
with gr[i,j] do
Begin
for k:=1 to 5 do { номерпредмета }
Begin
{ итак, анализируем состояние успеваемости студента, информация }
{ о котором хранится в записи gr[i,j]; так как мы работаем под уп-}
{равлением оператора with gr[i,j], то можно пользоваться не }
{ составными именами полей }
case k of { определить название предмета j }
1:predmet:='основы информатики';
2:predmet:='высшая математика ';
3:predmet:='философия';
4:predmet:='архитектура ЭВМ';
5:predmet:='историяУкраины'; end;
if o[k,1]=2 then if o[k,2]=2 then if o[k,3]=2 then begin
writeln('студент ',fio,' группы ', namb,' подлежит отчислению так как');
writeln('имеет три двойки по предмету ',predmet);
v:=1; readln; goto w; end { на новый предмет }
else Begin kol_dvoek:=kol_dvoek+2; goto w; end
else Begin kol_dvoek:=kol_dvoek+1; goto w; end;
w: end;
if v=1 then goto u { кновомустуденту }
else if kol_dvoek=0 then goto u
else Begin
writeln('студент ',fio,' группы ',namb,' является разгильдяем так как');
writeln('имеет в зимнюю сессию ',kol_dvoek,' двоек и является');
writeln('кандидатом на отчисление в весеннем семестре');
readln; end; end;
u: end; END.
Программа снабжена комментариями, поэтому при внимательном рассмотрении читается легко. Трудности могут возникнуть при разборе блока анализа результатов, поэтому мы приведем блок-схему логической части этого блока (рис. 9.1).
9.1. Комплексные данные
При работе с комплексными данными удобно пользоваться записями с двумя полями, первое содержит информацию о действительной части данного, а второе – о мнимой части данного.
Program Prim45;
Type complex=record
deistv:real; mnim:real;
end;
Var a,b,c:complex;
BEGIN
a.deistv:=6.3;
a.mnim:=1.9; END.
|
9.2. Запись с вариантами
Записи, описанные выше, имеют строго определенную структуру. однако есть возможность создавать записи, имеющие несколько вариантов одного и того же поля. Вариантные поля записываются после описания безвариантных полей с помощью оператора Case.
ТУРЕ
zap=record
описание безвариантных полей;
Case имя поля: тип имени поля of
список констант выбора: (поле, . тип); .
список констант выбора: (поле, . тип);
end;
Пример:
Туре zap=record
Nomer: byte; {фиксированные поля}
Articul: integer;
Case Flag: boolean of {вариантные поля}
TRUE: (cena l: integer);
FALSE: (cena 2; real);
end;
Var P, Si Zap;
поле Cena l доступно только тогда, когда Flag=TRUE
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности