русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Tarif, dn: real


Дата добавления: 2014-11-28; просмотров: 678; Нарушение авторских прав


end;

var x:vr; y:array [1..5] of vr;

 

ФАЙЛЫ

Информация в компьютере хранится в файлах (обычно на диске). Файловая система состоит из двух уровней: физического файла и логического файла. Физический файл – это собственно файл данных на диске, порт, принтер, любое устройство. Логический файл – файловая переменная (типа String), описанная в программе в разделе переменных. В зависимости от способа объявления формируется один из следующих типов файлов:

1. Типизированные файлы. Состоят из данных одного, объявленного типа.

Объявление файла: [имя]: file of [тип];Примеры: A: file of string[80]; F1: file of char; F2: file of real;

2. Текстовые файлы. Состоят из символов. Объявление текстового файла: [имя]: text;.Пример: f3: text;

В типизированных файлах информация хранится в двоичном виде, а в текстовых – в естественном. Элемент файла – запись (не путать с понятием record). Обычно, это строка файла.

Подлинное имя дискового файла используется только чтобы связать его с внутренним именем в программе, с которым она далее и работает. Для работы с файлами всех типов используется ряд процедур и функций:

assign(фп, файл) Связывает файл с файловой переменной (ФП).
reset(фп) Открывает существующий файл для чтения из него.
rewrite(фп) Создает и открывает файл для записи в него.
close(фп) Закрывает файл.
erase(фп) Стирает файл (файл должен быть закрыт).
eof(фп) Признак конца файла (True, если конец).

Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:

read(f,x1,x2,…xn)илиreadln(f,x1,x2,…xn) – чтение информации х1,х2,…,xn из логического файла f.

write(f,x1,x2,…xn)илиwriteln(f,x1,x2,…xn) – запись информации х1,х2,… хn в логический файл f.

Для управления текстовыми файлами используется процедуры и функции:



append(фп) Открывает файл для дополнения.
eoln(фп) Признак конца строки (True, если конец).
read(фп,переменные) Считывает данные из файла.
readln(фп,переменные) Считывает данные из файла, переходит на следующую строку.
write(фп,переменные) Записывает данные в файл.
writeln(фп,переменные) Записывает данные в файл, переходит на следующую строку.

Для нетекстовых файлов:

filesize(фп) Число записей в файле.
filepos(фп) Номер текущей записи.
seek(фп,номер) Устанавливает указатель на запись с заданным номером.
truncate(фп) Усекает файл до текущей позиции.

 

Различают два способа доступа к файлам. Последовательный, когда к конкретной записи можно перейти, только перебрав все предыдущие, и прямой (или произвольный) доступ к любой записи по ее номеру. Текстовые файлы могут иметь в каждой строке записи произвольной длины и поэтому реализуют только последовательный доступ. Другие типы файлов имеют записи фиксированной длины. В виду этого здесь можно вычислить положение любой записи на диске, т.е. организовать прямой доступ.

Задача 9-1. а). Вычислить по точкам функцию y=x/2 для x=0,0.5,1.0,…..4 и записать результаты в текстовый файл с именем func. Текстовый файл удобен тем, что его можно просмотреть в любом текстовом редакторе и, при желании откорректировать данные. Файлу не обязательно иметь расширение. Мы придали ему расширение txt с тем, чтобы проще было его просматривать в Проводнике или WinCommander (эти программы для файлов с расширением txt автоматически вызывают Блокнот). Физическому файлу дадим имя func.txt, а логическому имя f, и именно с ним будем работать.

б). Cоставить программу чтения из файла func.txt записанной ранее в него информации.

program 9_1a;{запись вычисленной функции в файл} var f:text;{объявлен текстовый логический файл f} x,y:real; begin {логический файл f связывается с физическим func.txt} assign(f,'func.txt'); rewrite(f);{файл f открывается для записи в него} x:=0; while x<=4 do begin{вычисление в цикле функции} y:=x/2; x:=x+0.5; writeln(f,x:3:1,y:4:1);{запись в файл переменных х и у} end; close(f);{закрытие файла} end. program 9_1b;{чтение записанных ранее данных из файла} var f:text;{объявлен текстовый файл f} x,y:real; i:integer; begin assign(f,'func.txt'); reset(f);{открытие файла для чтения} for i:=1 to 9 do begin read(f,y,x);{чтение из файла в память} {вывод на монитор, считанной из файла информации} writeln('y=',y:3:1,' x=',x:4:1); end; close (f);{закрытие файла} end.
файл Vir       файл Ved    
tab im tarif dn   im zar nalog vid
таб имя тариф дни   имя зарплата налог выдать
Иван   Иван    
Петр   Петр    
Олег   Олег    

Задача 9-2.Посчитать зарплату рабочих. Сведения об их меся­чной выработке находятся в типизированном (типа record) файле VIR: табельный номер tab, имя im (длиной до 4-х знаков), дневной тариф tarif работника, число отработанных им за месяц дней dn. Эти данные вводятся оператором. На основании их компьютером подсчитывается и заполняется файл ведомости VED, содержащий имя im, зарплату zar (=tarif*dn), налог nalog (=13%*zar) и сумму к выдаче vid (=zar-nalog). Далее содержимое файла выводится с подсчетом итоговых сумм. Здесь придется написать две программы. Программой Vvod выполняется следующая последовательность действий: 1). Заполняется файл Vir. 2). Считывается содержимое Vir в массив V. 3). Выполняются все расчеты и заносятся в массив R. 4). Данные из R сохраняются в файле Ved. Программа Vivod реализует только два действия: вывод всей ведомости к оплате или вывод сведений только об одном работнике по запросу (по имени).

program Vvod;{ввод данных и сохранение результата} uses crt;{к задаче 9-2} const n=3; type vr=record{объявление записи для Выработки} tab: integer;{табель} im: string[4];{имя} tarif, dn: real; end; vd=record{объявление записи для Ведомости} im: string[4]; zar, nalog, vid: real; end; var vir: file of vr;{объявление файла Выработки} ved: file of vd;{объявление файла Ведомости} v: array[1..n] of vr;{массив V для ввода} r: array[1..n] of vd;{массив R для расчета} i: integer; begin clrscr; {связывание логического и физического файлов} assign(vir,'vir'); assign(ved,'ved'); rewrite(vir);{открытие файла Vir для записи} writeln('введите!'); writeln('табель, имя, тариф, дни'); for i:=1 to n do begin readln(v[i].tab); readln(v[i].im); readln(v[i].tarif); readln(v[i].dn); writeln(v[i].tab:2, v[i].im:6, v[i].tarif:3:0, v[i].dn:4:0); write(vir,v[i]);{занесение в файл Vir очередной записи} end; reset(vir);{открытие файла Vir для чтения} rewrite(ved);{открытие файла Ved для записи} for i:=1 to n do begin{вычисления} read(vir,v[i]);{чтение записи из файла Vir} r[i].im:=v[i].im; r[i].zar:=v[i].tarif*v[i].dn; r[i].nalog:=0.13*r[i].zar; r[i].vid:=r[i].zar-r[i].nalog; write(ved,r[i]);{занесение записи в файл Ved} end; reset(ved);{открытие файла Ved для чтения} for i:=1 to n do begin{печать} read(ved,r[i]);{чтение записи из файла Ved} writeln(r[i].im:4, r[i].zar:5:0, r[i].nalog:7:2, r[i].vid:8:2); end; close(ved);close(vir);{закрытие файлов} end. program Vivod; {вывод данных по запросу} uses crt;{к задаче 9-2} const n=3; label m; type vd=record{объявление записи для Ведомости} im: string[4]; zar, nalog, vid: real; end; var ved: file of vd;{объявление файла Ведомости} r: array[1..n] of vd;{массив R для вывода} xz,xn,xv:real;{итоги: зарплата, налог, выдать} i: integer; x:string[4];{искомое имя} begin clrscr; assign(ved,'ved.txt'); write('показать всех (0) или одного (имя)? '); readln(x); writeln(' имя зарплата налог выдать'); reset(ved);{открытие файла Ved для чтения} if x='0' then begin{вывод всех работников} for i:=1 to n do begin read(ved,r[i]);{чтение записи из Ved} writeln(r[i].im:4, r[i].zar:9:0, r[i].nalog:7:2, r[i].vid:8:2); {подсчет итогов} xz:=xz+r[i].zar; xn:=xn+r[i].nalog; xv:=xv+r[i].vid; end; writeln('Итог',xz:9:0,xn:7:2,xv:8:2) {вывод итогов} end; if x<>'0' then begin{поиск и вывод одного имени} for i:=1 to n do begin read(ved,r[i]); if x=r[i].im then begin{если найдено - вывод и конец} writeln(r[i].im:4, r[i].zar:9:0, r[i].nalog:7:2, r[i].vid:8:2); goto m{выход из цикла поиска} end; end; writeln('Не найдено имя: ',x); m:end; close(ved) end.    

Задача 9-3.Положим, в течение месяца работники бригады выполняли различные виды работ (пусть три), сведения о которых хранятся в трех файлах с именами Rab1, Rab2, Rab3. Кроме того, имеется справочный файл тарифов работников Tarif. Необходимо создать файл Ved ведомости на оплату, где будут собраны сведения о всех работниках и сделаны необходимые вычисления. Последовательность действий:

1. Предварительно создать на диске и заполнить файлы с именами Rab1, Rab2, Rab3 и Tarif.

2. Последовательно считать все три файла в массив Mr[1..15].

3. Отсортировать массив по табельному номеру (по полю mr.tb). Повторяющиеся номера объединить (часы суммиру­ются) в одну строку.

4. Считать файл Tarifв массив Mt[1..6]. Исходя из индивидуальных тарифов, рассчитать зарплату, налог и сумму к выдаче каждого и записать это в файл Ved.

5. Вывести из Ved полученные данные на экран вместе с общей суммой зарплат бригады.

Исходные данные и результаты показаны ниже. Над колонками приведены названия полей, принимающих соответствующие данные.

 

файл Tarif     файл Rab1   файл Rab2   файл Rab3   файл Ved        
tb im tr   tb ch   tb ch   tb ch   tb im ch zr nl vd
таб № имя тариф   таб № часы   таб № часы   таб № часы   таб № имя часы заработок налог выдать
Иван         Лена 390,0 2610,0
Петр         Олег 130,0 870,0
Лена             Вася 227,5 1522,5
Вася               Иван 390,0 2610,0
Олег                     Петр 78,0 522,0
  Ü           Ü             всего 1215,5 8134,5
массив MT         массив MR                    
tb im tr         tb ch                    

 

 

Программа Vedom реализует процесс обработки данных. Программу занесения данных в фалы Rab1, Rab2, Rab3, Tarifнапишите сами.

program VEDOM;{программа к задаче 9-3}

uses crt;

type{создание типов записей}

rab=record tb,ch:integer end;{тип записи Работы}

tar=record tb,tr:integer; im:string[4] end; {тип записи Тарифы}

ved=record tb,ch,zr:integer; im:string; nl,vd:real end;{тип записи Ведомость}

var{создание файлов, рабочих записей и переменных}

r1,r2,r3:file of rab;{файлы Работ}

mr:array [1..15] of rab;{массив записей для приема данных из файлов Работ}

x: rab; {запись типа Rab, необходимая для сортировки}

t:file of tar;{файл тарифов}

mt:array [1..6] of tar; {массив записей для приема данных из файла Тарифов}

v:file of ved;{файл Ведомости}

mv:ved; {запись Ведомости}

sch,szr:integer; snl,zvd:real; {переменные для накопления итоговых сумм в Ведомости}



<== предыдущая лекция | следующая лекция ==>
Задания. | M,i,j,k:integer;


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.114 сек.