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

        insert(st1,st2,10);    writeln(st2);

        str(1500:6,st1); writeln(st1);

        str(4.8e+03:10,st1); writeln(st1);

        str(-46854:3,st1); writeln(st1);

             readln;END.

 

8.3.2. Функции обработки строк

Сору (st, Poz, N) выделяет из st подстроку длиной N символов, начиная с позиции Poz.

stl:='absdefg'; writeln (Сору (stl, 2, 3));

результат bсd

Const (stl, st2,..., stn) выполняет сцепление строк stl... stn. Длина суммарной строки не должна превышать 255 символов.

Length (st) определяет длину строки, результат – integer.

Pos (stl, st2) обнаруживает первое появление строки stl в строке st2. Результат – целое число, определяющее номер позиции, в которой находится первый символ подстроки st1. Если st1 не содержится в строке st2, то результат равен 0.

UpCase (ch) преобразует строчную букву в прописную.

Параметр и результат имеют литерный тип.

ch:=a'; UpCase (ch) имеет результат 'A'.

Program Prim 41, Prim 42, Prim 43 иллюстрируют работу вышеописанных функций.

        Program Prim41;     var st1,st2:string[30];  s:char;  BEGIN st1:='отдел № 256';        writeln(copy(st1,7,5));        st2:='находится в НИИ 5';

        writeln(concat(st1,st2));

        writeln(length(st2));

        st2:='n 256';

        writeln(pos(st2,st1));

        s:='a';

        writeln(upcase(s));

             readln;END.

       Program Prim42;   {программа удаляет все пробелы в строке, стоящие в строке слева, если они имеются}

         Var  str:string[255];          { Var  str: string; будет работать так же}       function del(stroka:string):string;

         Var dlina:byte;

      Begin  dlina:=Ord(stroka[0]);

             while ((dlina>0)and(copy(stroka,1,1)=' '))do

             delete(stroka,1,1);

             del:=stroka;

      end;

      BEGIN  writeln('введите строку');

             readln(str);

             writeln(del(str));  readln;

      END.

             Program Prim43;   { Даны три исходные строки A,B,C. В строке А определить первую бук } { ву; Затем заменить первую букву строки А со строчной на заглавную; } { объединить в одну строку A,B,C; Определить длины строк A,B,C} { и в результирующей строке вставить '-' между составляющими ее}{ строками. В результирующей строке найти номер позиции, в которой } { буква "а" встречается первый раз; определить длину результирующей } { строки. После каждого действия печатать результаты. }      Var A,B,C:string[14]; str:string[50]; ch:string[1];          d1,d2,d3:integer;

   Begin  A:='электронная'; B:='вычислительная'; C:='машина';          ch:=copy(A,1,1);             writeln(ch);

          delete(A,1,1);               writeln(A);

          writeln(upcase(ch[1]));

          insert(upcase(ch[1]),A,1);   writeln(A);

          str:=concat(A,B,C);          writeln(str);

          d1:=length(A); d2:=length(B); d3:=length(C);

          writeln('длины строк ' ,d1:6,d2:6,d3:6);          insert('-',str,d1+1); insert('-',str,d1+d2+2);

                                writeln(str);

          writeln('первый раз буква "а"стоит в результирующей строке ',                   'в позиции ',pos('а',str));          writeln('общая длина строки  =',length(str));

          readln;   END.

9. Записи


Ранее мы рассматривали структурированные данные, состоящие из компонент одного типа (массивы). Однако на практике часто необходимо иметь под одним именем совокупность данных различного типа. Например, информация о студенте может состоять из данных: фамилия, имя, отчество (тип string), домашний адрес (тип string), пол (тип char), номер группы (тип integer), номер комнаты проживания в общежитии (тип integer), изучаемые предметы (тип, массив строк) и т.д.

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

Записьпоименованный структурированный тип данных, состоящий из фиксированного количества различных компонент. Определение (описание) данного типа "запись" начинается атрибутом record и заканчивается end.

Между record и end заключается список компонент записи, называемых полями, с указанием их имен и типа каждого поля. Туре имя типа=record         идентификатор поля: тип компоненты;          идентификатор поля: тип компоненты;

         end;

Var идентификатор: имя типа; Возможно и «прямое» описание записи, без предварительного описания типа. Пример описания записи с помощью предварительного задания типа:Туре Car=record      Nomer: integer; {номер}      Marka: string [20]; {марка автомобиля}     FIO: string [40], {ф.и.о. владельца}      adres: string [60]; {адрес владельца}end;Var M, V: Car;Либо «прямое» описание:Var М, V: Record       Nomer: integer;       Marka: string [20];

FIO: string [40];      adres: string [60]; end;     Идентификатор поля должен быть уникален только в пределах записи, однако во избежание ошибок лучше его делать уникальным в пределах программы.

Объем памяти, выделяемый в разделе Var, для хранения записи складывается из объемов памяти – суммы длин полей.       Значения полей записи могут использоваться в выражениях, при этом в них должны указываться составные (уточненные) имена, так как имена полей в различных записях могут совпадать. Например, чтобы получить доступ к полям записи Саr, необходимо пользоваться именами М. FIO, М. NOMER для записи М, а для записи V - именами V. FIO, V. NOMER. Эти имена можно использовать везде, где применяются обычные имена, например, в операторах присваивания:

М. Nomer:=1678;

V. Nomer:=3789;

М. Marka:'газ–24';

V. Marka:='Таврия';

В операторах ввода-вывода:

writeln (м. marka);

Допускается применение операторов присваивания к записям в целом, если они имеют одинаковые структуры. Так, для приведенного выше описания записей М и V допустимо M:=V;

После выполнения этого оператора значения полей записи V станут равными значениям полей записи М.

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

Туре Person=record

     FIO: string [30];

     Prof: string [30); end;

          Var List: array [1..50] of Person;

Здесь массив List будет состоять из 50 записей типа Person.

Сама запись может иметь поля любого известного нам типа, в том числе и массивного. Допускается, чтобы поле записи само было записью. Обращение к полям записи с помощью составных имен имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более 5 символов. Для облегчения этой ситуации в языке Pascal есть оператор with, который имеет следующий формат:

with имя переменной типа запись do

begin ···················· end.

Один раз указав в операторе with переменную типа запись, затем – в пределах begin... end, стоящих после with, можно работать с именами полей этой записи как с обычными переменными, т.е. без указания перед именем поля имени записи. Например:

без применения оператора with:

М. NOM:=5543;

M.MARKA:='гa3-24';

М. FIO:='Петров П. П.';

М. Adres:='ул. Чкалова, 7, кв.32';

end;

Составить программу учета успеваемости студентов курса, состоящего из шести групп до 30 студентов в каждой группе. Каждый студент сдавал экзамены по пяти дисциплинам: высшая математика, основы информатики, философия, история Украины, архитектура ЭВМ. По каждому предмету можно получить оценки 2, 3, 4, 5. Каждый экзамен можно сдавать до трех раз. Произвести анализ: если у студента имеется три двойки по одному предмету или три непересданные двойки по трем предметам, то он должен быть отчислен; если студент все двойки пересдал, то его нужно поругать.

              Program Prim44;

     label u,w;

     type  mo=array[1..5,1..3] of 0..5;

          st=record

             namb:integer;

             fio:string[20];

             o:mo; end;

     var

          gr:array[1..6,1..30] of st;

Страницы: 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 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.