Рефераты. Основы программирования на языке Паскаль

          i,j,k,l,kol_dvoek,v,kgr,n:integer;

          md:mo; ch:char;

          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: endend;

   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          { номер студента }

    Begin   kol_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.1

 

 
 


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

поле Cena 2 доступно только тогда, когда Flag=FALSE

При использовании записей с вариантами необходимо придерживаться следующих правил:

-                   все имена полей должны отличаться друг от друга, даже если они встречаются в различных вариантах;

-                   запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце её;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.