Главная страница
Навигация по странице:

  • Interface

  • Compile/Destination Disk

  • {Модуль должен размещаться в файле Summa.pas} Unit

  • IOresult

  • Seek(BookFile, 0)

  • Eof(BookFile)

  • NumRec

  • Maska

  • Rez_Find и CountRec

  • CountRec

  • Основная программа, использующая ресурсы модуля telephon

  • ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ

  • программирование. Сборник методических указаний по выполнению практических работ по учебной дисциплине основы алгоритмизации и программирования структурное программирование


    Скачать 0.68 Mb.
    НазваниеСборник методических указаний по выполнению практических работ по учебной дисциплине основы алгоритмизации и программирования структурное программирование
    Анкорпрограммирование
    Дата01.10.2021
    Размер0.68 Mb.
    Формат файлаpdf
    Имя файлаm_prog.pdf
    ТипСборник
    #239861
    страница6 из 6
    1   2   3   4   5   6
    Interface
    {Интерфейсная часть}
    Implementation
    {Раздел реализации}
    Begin
    {Раздел инициализации модуля}
    End.
    Примечания:

    Имя модуля должно совпадать с именем файла и не должно содержать более 8 символов

    В разделе Interface объявляются все ресурсы, которые будут в дальнейшем доступны программисту при подключении модуля.

    В разделе Implementation описываются все подпрограммы, которые были ранее объявлены.

    Раздел инициализации содержит операторы, которые должны быть выполнены сразу же после запуска программы, использующей модуль. Может быть пустым.
    При разработке модуля рекомендуется следующий порядок:
    1.
    Спроектировать модуль, то есть определить основные и вспомогательные подпрограммы и другие ресурсы;
    2.
    Описать компоненты модуля;
    3.
    Отладить каждую программу отдельно, после чего «вклеить» в текст модуля
    4.
    Откомпилировать модуль. Для этого в меню системы Паскаль выбрать Compile/Destination
    Disk, а затем – Compile/Build
    5.
    Подключить разработанный модуль к программе, где планируется его использование. Для подключения модулей используется служебное слово Uses
    Пример 3. Разработать модуль, содержащий подпрограмму суммирования элементов массива.

    65
    Разбиваем текст программы на две части: подпрограмму размещаем в модуле, а тестирующую программу оставляем в качестве основной программы. Так как все структурные типы параметров должны быть предварительно объявлены, описываем тип массива в модуле.
    {Модуль должен размещаться в файле Summa.pas}
    Unit Summa;
    Interface {объявление внешних ресурсов}
    Туре mas=array[1..10] of integer;
    Function sum(b:mas; n:integer):integer;
    Implementation
    Function sum; {описание функции}
    Var s, i: integer; begin s:=0; for i:=1 to n do s:=s+b[i]; sum:=s; end;
    Begin
    end.
    Программа использует из модуля два ресурса: описание типа mas для объявления массива А и функцию Sum.
    Program Ex;
    Uses summa; {указание используемого модуля}
    Var a: mas; {используем ресурс mas} i, n: integer; s:real;
    Begin
    Writeln('Введите размерность массива:');
    Readln(n);
    Writeln('Введите элементы массива:');
    For I:=1 To n do read(a[i]); s:=sum(a,n); {используем ресурс sum из модуля Summa}
    Writeln('summa=',s:5:2); end.
    Программа использует из модуля два ресурса: описание типа mas для объявления массива А и функцию Sum.
    Задание.
    1. Составить модуль по заданным подпрограммам (процедурам) для работы с телефонным справочником. Процедуры выполняют следующие действия:

    66 1.
    Создание нового файла, который содержит данные: фамилию абонента, и его номер телефона;
    2.
    Просмотр списка справочника;
    3.
    Изменение записи справочника;
    4.
    Поиск абонента по фамилии.
    Доработать телефонный справочник, добавить в модуль и основную программу процедуру для поиска абонента по номеру телефона. Составить блок-схемы для основной программы и для любой подпрограммы.
    1.
    Procedure Create_Book_Phone – процедура формирования телефонного справочника
    Procedure Create_Book_Phone;
    Var
    Ind, Count: integer;
    Begin write('Введите имя файла телефонного справочника');
    Readln(Name);
    Assign(BookFile, Name);
    Rewrite(BookFile); {Открыть новый файл для записи}
    Writeln('Создание записей файла',Name);
    Write ('Введите число записей в файле');
    Readln(Count); for Ind:=1 to Count do begin writeln('Ввод записи №', FilePos(Bookfile)+1); with work do begin write('Введите фамилию: '); readln(FIO);
    {Ввод фамилии в файл}
    write(' Введите номер телефона: '); readln(Phone);
    {Ввод номера телефона в файл}
    Write(BookFile, Work);
    {Записать в файл фамилию и номер
    телефона}
    end; end;
    Writeln('Создание файла справочника завершено');
    Writeln('Файл данных имеет ', FileSize(BookFile), 'записей');
    Close(BookFile); end;
    Пояснение: Для сокращения записи при обращении к полям FIO и Phone переменной типа запись Work используем предложение with work do. В окончании процедуры организуем вывод сообщения о результатах создания файла. Для измерения размера файла в записях используем функцию FileSize.
    2.
    Procedure OutputAllRec – процедура просмотра списка телефонного справочника
    Procedure OutputAllRec; begin
    Writeln('Введите имя файла');
    Readln(Name);
    Assign(BookFile, Name);

    67
    Reset(BookFile);
    If IOResult = 0 then begin
    Seek(BookFile,0);
    Writeln('***Вывод телефонного справочника из файла ', Name, '***');
    While (not Eof(Bookfile)) do begin
    Read(BookFile, work);
    With work do begin
    Write ('Zapis N', FilePos(BookFile), ':');
    Writeln('Фамилия Имя Отчество:', FIO, 'Телефон: ',
    Phone); end; end; end; end;
    Пояснение: для вывода на экран всех записей файла сначала, используя функцию IOresult, выполним проверку наличия данного файла на диске. Если функция IOresult возвращает значение, отличное от 0, то на экран выводится сообщение о том, что требуемого файла нет на диске. В противном случае разместить указатель так, чтобы он указывал на первую запись:
    Seek(BookFile, 0), не забывая, что первый компонент имеет номер 0. Затем, используя оператор
    while, вызвать процедуру вывода на экран одной записи. Условием окончания цикла while будет выражение Eof(BookFile). Как только оно выполнится, цикл завершится. Данные всех записей файла выводятся на экран. Для вывода на экран номера записи применим функцию
    FilePos(BookFile).
    3.
    Procedure UpDateRec – процедура изменения записи телефонного справочника
    Procedure UpDateRec; var
    NumRec:LongInt; begin
    Writeln('Введите имя файла');
    Readln(Name);
    Assign(Bookfile, Name);
    Reset(BookFile);
    If IOResult = 0 then begin
    Write('Укажите номер изменяемой записи: ');
    Readln(NumRec);
    Seek(BookFile, NumRec-1);
    {Установка файловой позиции по указанному номеру}
    Writeln('—старое значение записи:');
    {Вывод записи на экран и переход на следующую}
    Read(BookFile, work);
    With work do begin
    Write ('Запись №', FilePos(BookFile), ':');
    Writeln('Фамилия Имя отчество:', FIO, ' Телефон: ', Phone); end;
    Seek(BookFile, NumRec-1);
    {Возврат на прежнюю позицию}

    68
    Writeln('Задаем новое значение', NumRec, 'записи'); begin writeln('Вводим запись №', FilePos(Bookfile)+1); with work do begin write('Введите фамилию: '); readln(FIO); write('Введите номер телефон: '); readln(Phone);
    Write(BookFile, Work); end; end;
    Close(BookFile); end; end;
    Пояснение: для изменения записи файла сначала, используя функцию IOResult, проверим, есть ли данный файл на диске. Дальше выводится запрос о номере изменяемой записи. После считывания номера записи переместим указатель к данной записи и выведем данные этой записи из файла на экран. Затем задаем новые значения полей этой записи. В разделе описания переменных опишем локальную переменную NumRec типа LongInt (длинное целое), которая будет принимать значение номера изменяемой записи.
    4.
    Procedure FindFIO – процедура поиска абонента по фамилии
    Procedure FindFIO; var
    Bookfile: file of RecBook;
    Work: RecBook;
    Maska: StFIO;
    CountRec'>Rez_Find: boolean;
    CountRec: integer;
    Begin
    Writeln('Укажите имя файла');
    Readln(name);
    Assign(BookFile, Name);
    Reset(BookFile); if IOresult = 0 then begin write('Введите фамилию для поиска:');
    Readln(Maska);
    Rez_Find:=False;
    CountRec:=0;
    While (not Eof(BookFile)) do begin
    Read(BookFile, Work);
    With work do if Pos(Maska, FIO)<>0 then begin
    Rez_Find:=True;
    Inc(CountRec);
    Writeln('Фамилия:' , FIO, 'Телефон:', Phone);

    69 end; end; if Rez_Find then
    Writeln('Число записей для ', Maska, ' = ', CountRec) else writeln('Нет абонентов с фамилией ', Maska);
    Close(BookFile); end;
    Пояснение: в процедуре поиска номера телефона опишем локальные переменные: Maska типа
    stFio, которая будет хранить фамилию искомого абонента; Rez_Find типа Boolean, которая будет принимать значения True (истина) и False (ложь) в зависимости от результата поиска;
    CountRec , значение которой будет равно числу записей с такой фамилией.
    После запроса имени файла данных телефонного справочника и проверки его наличия на диске сделаем запрос фамилии искомого абонента. Перед поиском присвоим переменным
    Rez_Find и CountRec значения false и 0 соответственно.
    Просмотр всех записей файла данных при поиске реализуем при помощи оператора цикла while. Условием завершения поиска является Eof(BookFile) – достяжение конца файла.
    Для сокращения обращения к именам полей записи используем предложение with Work
    do.При совпадении значения поля FIO очередной записи со значением переменной Maska переменной Rez_Find присваивается значение True (абонент с заданной фамилией найден), значение переменной CountRec увеличивается на 1 и выводится сообщение о фамилии и номере телефона найденного абонента.
    Описываем глобальные переменные, которые будут нужны в процессе работы процедур
    (Блок описания модуля) type
    StFio = string[20];
    StPhone = string[10];
    RecBook = record
    {запись сведений об абоненте}
    FIO: StFio;
    {поле фамилия}
    Phone: StPhone
    {поле номер телефона} end; var
    BookFile: file of RecBook; {Описание файловой переменной, компонентами, которой явл. запись}
    Work: RecBook;
    {Переменная для доступа к записям}
    Name: string;
    {переменная, которая содержит имя внешнего файла на диске}
    Основная программа, использующая ресурсы модуля telephon
    Program Tel_spravochnik; uses crt, telephon; var
    Vid:byte;
    {переменная, которая позволяет выбрать вид операции работы со справочником}
    End_Menu: boolean;
    Begin clrscr;
    End_Menu:=False;
    Repeat

    70 writeln('***Телефонный справочник***');
    Writeln('Выберите вид работ с телефонным справочником:');
    Writeln('1 – создание нового файла');
    Writeln('2 – просмотр списка справочника);
    Writeln('3 – изменение справочника');
    Writeln('4 – поиск абонента по фамилии'); writeln('0 – завершение работы') ;
    Writeln('Ваш выбр:');
    Readln(Vid);
    Case vid of
    1: Create_Book_Phone;
    2: OutputAllRec;
    3: UpDateRec;
    4: FindFIO;
    0: End_Menu:=True; end;
    Writeln('Для продолжения Enter');
    Readln;
    Clrscr; until End_Menu=true; end.
    ЗАДАНИЕ
    Реализовать в виде модуля набор подпрограмм для выполнения следующих операций:
    1.
    перевод из кг в граммы
    2.
    перевод из кг в тонны
    3.
    перевод из кг в центнер
    4.
    перевод из кг в миллиграммы
    Создать программу, в которой необходимо будет обратиться к ресурсам разработанного модуля.
    КОНТРОЛЬНЫЕ ВОПРОСЫ
    1.
    Когда необходимо использовать модуль?
    2.
    Чем модуль отличается от подпрограмм?
    3.
    Из каких разделов состоит модуль?
    4.
    Дайте характеристику разделов модуля?

    71
    ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ
    Основные источники:
    1. Семакин И.Г. Основы программирования и баз данных : учебник для студ. учреждений сред. проф. образования / И.Г.Семакин М. : Издательский центр
    «Академия», 2014.
    2. Семакин, И. Г. Основы алгоритмизации и программирования [Текст] : учебник для среднего профессионального образования/ И .Г. Семакин, А.П. Шестаков —
    3-е изд., стер. — М. : Изд-во «Академия», 2012.
    Дополнительные источники:
    1.
    Семакин И.Г. Основы алгоритмизации и программирования. Практикум: учеб. пособие для студ. учреждений сред. проф. Образования / И.Г. семакин, А.П.
    Шестаков. — М. Издательский центр «Академия», 2013.
    2.
    Фаронов В.В. Delphi 2005. Разработка приложений для баз данных и
    Интернета. — СПб.: Питер, 2006 3.
    Немнюгин С.А. Turbo Pascal. Практикум. 2-е изд. / СПб.: Питер, 2007 4.
    Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня:
    Учебник для вузов. 2-е изд. — СПб.: 2006 5. Попов, В. Б. Паскаль и Дельфи. Самоучитель [Текст] — СПб. : Питер,
    2005.
    1   2   3   4   5   6


    написать администратору сайта