Программирование на языке Turbo Pascal

Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 16:41, курсовая работа

Описание работы

Целью курсовой работы является написание программ на языке Turbo Pascal.
Для достижения цели были поставлены следующие задачи:
• Обзор и анализ литературы по темам «Массивы» и «Записи и файлы»;
• Разработка алгоритма программы;
• Написание программы на языке Turbo Pascal;
• Отладка программы;
• Тестирование программы со всевозможными исходными данными;
• Оформление курсовой работы.

Содержание работы

Введение
Часть 1.
1.1 Теоретический материал по теме «Массивы»
1.2 Решение задачи
Часть 2
2.1 Теоретический материал по теме «Записи и файлы»
2.2 Решение задачи
Заключение
Список использованных источников

Файлы: 1 файл

курсовая.doc

— 287.00 Кб (Скачать файл)

end;

end;

end;

BEGIN

clrscr;

randomize;

for i:= 1 to 7 do

for j:= 1 to 6 do

a[i,j]:=random (30*30+50);

Writeln ('Ischodnii massiv');

for i:= 1 to 7 do begin

for j:= 1 to 6 do begin

write (a[i,j]:4);

end;

writeln;

end;

NazvanieUslug(a);

END.

Результат работы программы

UCXODHUY MACCUB

470

360

460

581

317

124

70

885

915

166

443

169

737

887

915

166

443

169

219

160

895

674

694

450

203

327

38

432

948

274

16

286

503

868

240

424

96

38

385

631

690

183

1811

2943

3980

3521

4026

1757


5- видеотелефония

3- цветной факс

4 – передача файлов

2 – поиск документов

1 – телефония

6 – поиск видео

UCXODHUY MACCUB

412

299

69

800

849

21

524

420

444

411

630

59

684

738

335

134

206

449

364

584

925

36

320

96

314

168

460

391

419

855

762

823

750

739

678

141

377

671

308

652

634

734

3437

3703

3291

3163

3736

2355


5- видеотелефония

2 – поиск документов

1 – телефония

3- цветной факс

4 – передача файлов

6 – поиск видео

 UCXODHUY MACCUB

938

888

533

193

454

900

843

431

311

632

287

24

511

892

27

624

706

340

787

921

743

497

508

9

97

507

646

636

122

239

949

618

894

118

711

873

830

602

109

736

855

612

4955

4859

3263

3163

3643

2997


1 – телефония

2 – поиск документов

5- видеотелефония

3- цветной факс

4 – передача файлов

6 – поиск видео

 

Часть 2.

2.1 Теоретический материал по теме «Записи и файлы»

 

Запись - это стpуктуpа  данных, котоpая может содеpжать инфоpмацию pазных типов, объединенную под одним  названием.   Компоненты записи называются полями. Их фиксиpованное число. Описание записей имеет следующую стpуктуpу:

Имя типа = RECORD

список полей 1 : тип 1;

- - - 

список полей N : тип N;

CASE поле выбора : тип OF

значение 1 : (полей 1 : тип 1 )

END;

Типы полей записи могут быть любыми. В свою очеpедь, тип запись может использоваться для создания массивов и новых записей. Степень вложенности не огpаничена.

Список полей может  состоять из двух pазделов: постоянной и ваpиантной части. В постоянной части идет пеpечисление полей  записи (идентификатоpов) с указанием  их типов. Синтаксис такой же, как  в pазделе var.

ПРИМЕР: Пример объявления типа запись.

type Men = Record

        FIO,Adress : string;

        Year : byte;

     End;

var A,B : Men;

Для обpащения к полям  записи указывается имя пеpеменной  типа запись, точка, имя поля, напpимеp:

begin

A.FIO:='Иванов И.И.';

A.Adress:='пp. Ленина, д. 40, кв. 10';

A.Year:=1981;

end.

После описания постоянных полей может следовать ваpиантная  часть, котоpая может быть только одна и имеет вид

CASE поле выбоpа : тип   OF

значение 1 : (список полей 1);

- - -

значение N : (список полей N);

 

Поле выбоpа может  отсутствовать. Если оно есть, то его  воспpинимают как постоянное поле записи. Если его нет, указывается  только тип, котоpый должен быть поpядковым, но он не влияет ни на количество пеpечисленных ниже значений, ни на типы этих значений.

Все ваpианты pасполагаются в одном и том же месте памяти, котоpой выделяется столько, сколько  тpебуется для максимального по pазмеpу ваpианта. Это пpиводит к  тому, что изменение одного ваpиантного поля оказывает влияние на все  остальные. Это увеличивает возможности пpеобpазования типов, ПРИМЕР: Запись с вариантами.

var R = Record

        rem : string;

        Case byte of

        3   : (n:integer);

        5   : (x,y,z:char);

        'a' : (i,j:byte);

    end;

begin

R.rem:='запись с ваpиантами';

R.n:=25000;

write(R.i,R.x,R.j,R.y); {168и97a} 

{ord('и')=168,  ord('a')=97,  168+97*256=25000}

end.

Значения выбоpа могут  повтоpяться. Имена полей записи не являются пеpеменными и, следовательно, могут повтоpяться, но только на pазных  уpовнях, напpимеp:

var Rec:Record

        x : real;

        Sr : Record a : real; x,y : integer; end;

        I : byte;

    end;

Для удобства обpащения к  полям записей может использоваться опеpатоp пpисоединения

WITH пеpеменная DO опеpатоp;

Здесь пеpеменная - это  запись, за котоpой может следовать список вложенных полей, напpимеp следующие тpи опеpатоpа эквивалентны:

With Rec,Sr Do a := x / y;

With Rec.Sr Do a := x / y;

Rec.Sr.a := Rec.Sr.x / Rec.Sr.y;

 

2.2 Решение  задачи

 

Задача. А.Создать файл, содержащий сведения об ассортименте игрушек(Например: кукла, кубики, мяч, конструктор ит.п.) в магазине. Структура записи – Название игрушки , цена, количество, возрастные границы(например  2..5, т.е. от двух до пяти). Количество записей -25

Б. Получить следующие  сведения:

  • название игрушек, которые подходят как  детям  4 лет, так и детям 10 лет.
  • Вывести цены для  всех кубиков в рублях и копейках и  страну изготовителя. Например:

1. Кубик 25 руб. 50 коп. Китай 

  • Определить название игрушек, которые не превышает Х рублей и подходит ребенку в возрасте  А  лет

 Значения Х, А  - ввести с терминала.

Решение:

В задании ко второй части  курсовой работы необходимо разработать  алгоритм и программу создания файла  записей, содержащий сведения о количестве изделий категории А, В, С, собранных работником за месяц.

Структура записи приведена  на рис. 9.


 

 

 

 

 

Рис. 9 - Структура записи ZAP

В таблице 2 приведены  пояснения идентификаторов записи ZAP.

Таблица 2

Идентификатор

Пояснение

Тип

Fam

Фамилия

String [50]

Cex

Наименование цеха

String [20]

Kol_a

Количество изделий  категории А

Integer

Kol_b

Количество изделий  категории В

Integer

Kol_c

Количество изделий  категории С

Integer


В таблице 3 приведены  исходные данные, которые будут записывайся  в файл.

Таблица 6

Сведения о личной коллекции книголюба

п/п

Фамилия

Цех

Кол-во изделий А

Кол-во изделий В

Кол-во изделий С

1

Иванов

Цех 1

125

200

300

2

Петров

Цех 2

200

300

150

3

Сидоров

Цех 3

150

400

200

4

Смирнов

Цех 3

500

100

250

5

Григорьев

Цех 1

400

350

400

6

Горохов

 Цех 2

450

200

700

7

Приказчиков

Цех 1

120

450

450

8

Степанов

Цех 2

450

450

800

9

Прохоров

Цех 3

500

450

450

10

Семенов

Цех 1

120

1000

120

11

Орлов

Цех 3

50

100

150

12

Кузнецов

Цех 2

250

150

300

13

Кривошеев

Цех 1

450

200

400

14

Спиридонов 

Цех 3

450

350

500

15

Ильин

Цех 1

500

700

200

16

Сергеев

Цех 2

450

120

850

17

Николаев

Цех 2

780

700

150

18

Петросов

Цех 1

800

500

100

19

Шорохов

Цех 1

450

150

850

20

Шумилин

Цех 2

470

600

50

21

Герасимов

  Цех 3

500

610

300

23

Платонов

 Цех 1

450

320

100

24

Сердюков

 Цех 3

120

90

50

25

Самсонов

 Цех 2

90

180

380

26

Кругов

 Цех 1

100

120

450

27

Квадратов

 Цех 2

200

400

500

28

Трешкин

 Цех 3

500

700

50

29

Пяткин

 Цех 3

200

300

100

30

Примаков

 Цех 2

250

150

50


На  рис. 10 приведена  схема алгоритма создания файла. В схеме сначала выполняется открытие файла. Затем организуется цикл ввода 25 записей. В  этом цикле вводятся поля записи организовывается запись в файл. После выхода из цикла файл закрывается.


 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

Рис. 10 Схема алгоритма создания файла

Текст программы создания файла:

program z1;

type

zap=record

Fam:string[50];

cex:string [20];

kol_a: integer;

kol_b: integer;

kol_c: integer;

end;

var

f: file of zap;

x:zap;

i: integer;

begin

assign (f,'new.txt');

rewrite (f);

writeln ('Vvedite svedeniy o 30 zapicych');

for i:= 1 to 25 do begin

write ('Familiy');

readln (x.fam);

write ('Cex');

readln (x.cex);

write ('kolichestvo isdelii A');

readln (x.kol_a);

write ('kolichestvo isdelii B');

readln (x.kol_b);

write ('kolichestvo isdelii C');

readln (x.kol_c);

write (f,x);

end;

close (f);

end.

По индивидуальному  заданию надо разработать алгоритм, который позволит подсчитать:

- общее количество  изделий категорий А, В, С,  собранных рабочим цеха;

- ведомость заработной  платы рабочих цеха Х,

- Средний размер заработной  платы работников этого цеха.

Алгоритм приведен на рис. 11. По алгоритму сначала открывается  файл и организуется цикл чтения информации из файла. Затем происходит сравнение введенной фамилии, цеха, производится расчет зарплаты (количество изделий различных категорий умножается на соответствующие расценки, которые описаны в разделе констант), после чего выводятся данные в виде списка работников и  их данных, в том числе и зарплаты по введенному цеху, выводится количество изделий, произведенных работником, фамилия которого запрашивается в начале программы, а также средняя зарплата по введенному цеху.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 11. Схема алгоритма обработки  файла


 

Текст программы приведен ниже:

Program z2;

uses crt;

const

Sa=5.5;

Sb=10.75;

Sc=12;

type zap=record

fam:string[50];

cex:string [20];

kol_a:integer;

kol_b: integer;

kol_c:integer;

end;

var

f: file of zap;

x: zap;

kol,k: integer;

zp,s,sr: real;

f1,C: string;

begin

assign (f,'new1.txt');

reset (f);

writeln ('vvedite familiu rabochego');

readln (F1);

writeln ('vvedite cex');

readln (C);

writeln ('*************************************');

writeln ('|Familia     |Cex       |Kol A       |Kol B     |Kol C      | Zarplata  ');

writeln ('_________________________________________________________________________');

While not eof (f) do

begin

read (f,x);

if (x.fam=F1) then kol:=x.kol_a+x.kol_b+x.kol_c;

If (x.cex=C) then begin

zp:=x.kol_a*Sa+x.kol_b*Sb+x.kol_c*Sc;

writeln (x.fam:13,'|',x.cex:10,'|',x.kol_a:12,'|',x.kol_b:10,'|',x.kol_c:11,'|', zp:6:2);

Информация о работе Программирование на языке Turbo Pascal