Программирование на Turbo Pascal





Содержание:
  • Массивы
  • Записи
  • Файловые типы


  • Массивы

    Для обработки больших объёмов однотипных данных удобно в программах использовать массивы. При объявлении массива, в памяти компьютера выделяется блок размером равным произведению числа элементов массива умноженному на число ячеек памяти заданного типа. Доступ к каждому элементу массива осуществляется физически по адресу в памяти, а в программе по порядковому номеру элемента массива. Массивы на Pascal задаются следующим образом:
    var
    имя массива : array [начальный индекс .. конечный индекс] of тип данных;

    Имя массива задаётся так же, как и имя любой переменной; начальный индекс и конечный индекс - числа (от и до) задающие число элементов массива. Например:
    var
    my_sym : array [1..100] of char; {задано 100 элементов типа char}
    my_digits :array [0..20] of integer; {задан 21 элемент типа integer}

    В массивы можно, как записывать, так и считывать данные. Доступ к элементам массива осуществляется по индексу в произвольном порядке. Например:
    uses crt;
    var
      my_sym : array [1..100] of char;
      my_digits: array [0..20] of integer;
      c : char;
      x : integer;
    begin
      clrscr;
      Write('Wwedite symbol: '); readln(c); {Считываем символ с клавиатуры}
      my_sym[33]:= c; {Присваиваем 33 элементу символьного массива}
      Writeln('33 element= ',my_sym[33]); {Выводим 33 элемент на экран}
      Write('Wwedite chislo: '); readln(x); {Считываем число с клавиатуры}
      my_digits[2]:= x; {Присваиваем 2-му элементу массива значение Х}
      Writeln('2 element= ', my_digits[2]); {Выводим 2 элемент на экран}
      readln;
    end.
    Массивы удобно обрабатывать в циклах, так как счётчик цикла может быть индексом массива.
    Кроме линейных массивов, где задан ряд элементов, можно задавать массивы в виде плоских и объёмных матриц (многомерных массивов). Например, зададим плоскую матрицу 3 х 3 элемента:
    matrix1 : array [1..3,1..3] of real;
    или объёмную матрицу 3 х 3 х 3 элемента:
    matrix2 : array [1..3, 1..3, 1..3] of integer;
    Доступ к элементам многомерных массивов осуществляется по индексам объявленного массива. Например, для массива matrix1[2,1]:= 3.6435; для массива matrix2[1,3,2]:= 12;.

    Записи.


    В Turbo Pascal можно создавать собственные типы данных, например записи состоящие из разнотипных элементов. Создание нового типа осуществляется следующим образом:
    type <эимя типа> = record
    <эимя поля 1>: <этип 1>;
    <эимя поля 2>: <этип 2>;
    ....
    <эимя поля n>: <этип n>;
    end;

    Для использования переменных типа "запись" следует объявить их в разделе переменных, например, краткая анкета сотрудника:
    uses crt;
    type man = record {Создаём запись типа man}
      name: string;
      age: integer;
      zarplata: real;
    end; {type}
    var
      m : man; {Объявляем переменную m типа man}
    begin
      clrscr;
    {Доступ к полям записи: переменная, точка, имя поля}
      write('Wwedite name: '); readln(m.name);
      write('Wwedite god: '); readln(m.age);
      write('Wwedite zarplata: '); readln(m.zarplata);
      writeln('Dannye na: ',m.name, '; God: ', m.age, '; Zarplata: ',m.zarplata);
      readln;
    end.

    Файловые типы.


    Файловые типы в Turbo Pascal предназначены для чтения-записи и хранения данных. В Turbo Pascal различают три типа файлов:
    • Файлы определённого типа - типизированные файлы (задаются предложением file of тип файла);
    • Текстовые файлы Паскаля(определяются типом text);
    • Нетипизированные файлы Паскаля(определяются типом file).
      Под файлом в Паскале подразумеваются как физические файлы, так и устройства ввода-вывода, например клавиатура, экран (файлы Input / Output). Все файловые операции могут производиться лишь с элементами (компонентами) файлов.
      Для работы с файлами следует связать файловую переменную с файлом, например на жёстком диске. Для этого служит оператор Assign(файловая переменная, имя дискового файла); Так как имя дискового файла величина строковая, то имя файла (и путь к нему) следует заключить в апострофы. Например:
      Var
        Tf: file of integer;
        ...
      Begin
        ...
        Assign(Tf, 'C:\file1.dat');
      После окончания работы с файлами на Паскале, они должны быть закрыты:
      Close(файловая переменная);
      Для записи данных в файл следует вызвать оператор Rewrite(имя файловой переменной);
      Непосредственная запись на диск осуществляется оператором Write(имя файловой переменной, записываемые значения); Например, нужно записать в файл 5 чисел типа integer:
      uses crt;
      var
        nf: file of integer; {Объявляем файловую переменную}
        n:array [1..5] of integer;
        z: integer;
      begin
        clrscr;
      {Заполняем массив значениями}
        for z:= 1 to 5 do
        begin
        write('Wwedi n',z, ':') ;readln(n[z]);
        end;
      assign(nf, 'C:\data.dat'); {Связываем файловую переменную с физическим файлом}
      rewrite(nf); {Включаем режим записи}
        for z:= 1 to 5 do write(nf, n[z]); {Записываем значения массива в файл}
        close(nf); {Закрываем файл}
        readln;
      end.

      Для чтения данных из файла следует использовать оператор Reset(имя файловой переменной);
      Непосредственно чтение из файла осуществляется оператором Read(имя файловой переменной, переменные);
      Например, программа чтения чисел из файла, созданного в предыдущей программе будет выглядеть так:
      uses crt;
      var
      nf: file of integer;
      n:array [1..5] of integer;
      z: integer;
      begin
      clrscr;
      assign(nf, 'C:\data.dat');
      reset(nf);
      for z:= 1 to 5 do read(nf, n[z]);
      for z:= 1 to 5 do writeln(n[z]);
      close(nf);
      readln;
      end.





       ©Гуков Константин Михайлович 2006 - 2011     Почта: [email protected]