Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример составления программы в соответствии с принципами структурного программирования




Описание простейших модулей.

Basic Pascal
Первый признак - первый оператор всегда имеет метку. <метка>: <оператор> ……… Второй признак - исполнение модуля всегда заканчиваетс оператором RETURN Если не использовать безусловный переход, то всё равно RETURN Чтобы обратиться к программе GOSUB <метка> Этот модуль вместе с вызываемым модулем образует один файл.   Используется специальный описатель: Procedurе – описание процедуры: Procedurе <имя>; Var <описание локльных переменных> (оказывают действие только внутри данной процедуры) Переменные, описанные в программе Var основного модуля являются глобальными, то есть их можно использовать внутри описанной процедуры. Однако если имя глобальной переменной совпадает с именем локальной переменной, описанной в процедуре, то внутри процедуры используется локальная переменная. [label] [type] Begin <операторы>; end; Передача данных через глобальные переменные как и в Basic.
Глобальные переменные
Все переменные, которые используются в этой программе, являются глобальными, то есть их значение можно использовать в любом модуле, их действие распространено на все модули системы.

 

REM Программа начисления зарплаты

REM Описание структур данных – записей файлов

TYPE StrRab `Структура – рабочий

TabN AS STRING * 3 `табельный номер

KodK AS STRING * 3 `код качества

END TYPE

TYPE StrIsd `Cтруктура – изделие

Kod AS STRING * 3 `код изделия

Kol AS INTEGER `количество изделий

END TYPE

TYPE ZapZ `Запись файла заявок

Rab AS StrRab `рабочий

Izd AS StrIzd `изделие

END TYPE

TYPE ZapR `Запись файла таблицы расценок

KodI AS STRING * 3 `код изделия

StrIz AS DOUBLE `стоимость изделия

END TYPE

TYPE ZapV `Запись файла ведомости по зарплате

TabN AS STRING * 3 `табельный номер рабочего

Zarpl AS DOUBLE `зарплата рабочего

END TYPE

REM Описание переменных

DIM Punkt AS INTEGER

DIM NameFZ AS STRING

DIM NameFR AS STRING

DIM NameFV AS STRING

DIM KolStr AS INTEGER

DIM Zajavka AS ZapZ

DIM Rastcen AS ZapR

DIM Vedom AS ZapV

DIM fz AS INTEGER

DIM fr AS INTEGER

DIM fv AS INTEGER

DIM i AS INTEGER

DIM st AS DOUBLE

DIM sum AS INTEGER

REM Основная программа

NameFZ = «Заявки.dat»

NameFR = «Расцен.dat»

NameFV = «Ведом.dat»

fz = 1

fr = 2

fv = 3

DO

CLS

PRINT «Главное меню»

PRINT «1. Ввод заявок табеля учета работ»

PRINT «2. Просмотр табеля учета работ»

PRINT «3. Ввод таблицы расценок»

PRINT «4. Просмотр таблицы расценок»

PRINT «5. Расчет заработной платы»

PRINT «6. Просмотр ведомости по зарплате»

PRINT «7. Выход»

PRINT

PRINT

PRINT «Выбери пункт меню от 1 до7 и нажми <Enter>»

INPUT Punkt

SELECT CASE Punkt

CASE 1: GOSUB vvod1

CASE 2: GOSUB look1

CASE 3: GOSUB vvod2

CASE 4: GOSUB look2

CASE 5: GOSUB calculate

CASE 6: GOSUB look3

CASE 7: EXIT DO

CASE ELSE: PRINT «Ошибка в работе пункта»; Punkt

END SELECT

LOOP

STOP

vvod1:

REM Подпрограмма ввода заявок табеля учета работ

PRINT «Работает подпрограмма ввода заявок табеля учета работ»

PRINT

OPEN NameFZ FOR OUTPUT AS #fz

PRINT «Укажи количество заявок:»

INPUT KolStr

REM ввод заявки (Zajavka) и ввод ее в файл

FOR i = 1 TO KolStr

PRINT «Введи реквизиты»; i; «-й заявки:»

INPUT «табельный номер-», Zajavka.Rab.TabN

INPUT «код изделия-», Zajavka.Izd.Kod

INPUT «количество изделий-», Zajavka.Izd.Kol

INPUT «код качества-», Zajavka.Rab.KodK

WRITE #fz, Zajavka.Rab.TabN, Zajavka.Izd.Kod, Zajavka.Izd.Kol, Zajavka. Rab.KodK

NEXT i

REM Конец ввода, закрытие файла

CLOSE #fz

PRINT

PRINT «Конец подпрограммы. Нажмите <Enter>.»

Pause$ = INPUT (1)

RETURN

look1:

REM Подпрограмма просмотра табеля учета работ

PRINT «Работает подпрограмма просмотра табеля учета работ»

PRINT

OPEN NameFZ FOR INPUT AS #fz

REM Вывод заявок

PRINT «табельный код количество код»

PRINT «номер изделия изделий качества»

WHILE NOT EOF (fz)

INPUT #fz, Zajavka.Rab.TabN, Zajavka.Izd.Kod, Zajvka.Izd.Kol, Zajavka.Rab.KodK

PRINT Zajavka.Rab.TabN, Zajavka.Izd.Kod, Zajavka.Izd.Kol, Zajavka.Rab.KodK

WEND

REM Конец вывода

CLOSE (fz)

PRINT

PRINT «Конец подпрограммы. Нажмите <Enter>.»

Pause$ = INPUT (1)

RETURN

vvod2:

REM Подпрограмма ввода таблицы расценок

PRINT «Работает подпрограмма ввода таблицы расценок»

PRINT

OPEN NameFR FOR OUTPUT AS #fr

PRINT «Укажите количество строк в таблице расценок:»

INPUT KolStr

REM ввод заявки (Rastcen) и вывод ее в файл

FOR i = 1 TO KolStr

PRINT «Введи реквизиты»; i; «-го изделия:»

INPUT «код изделия-», Rastcen.KodI

INPUT «стоимость изделия-», Rastcen.StIz

WRITE #fr, Rastcen.KodI, Rastcen.StIz

NEXT i

REM Конец ввода

CLOSE fr

PRINT

PRINT «Конец подпрограммы. Нажмите <Enter>.»

Pause$ = INPUT$ (1)

RETURN

look2:

REM Подпрограмма просмотра таблицы расценок

PRINT «Работает подпрограмма просмотра таблицы расценок»

PRINT

OPEN NameFR FOR INPUT AS #fr

REM Вывод строк таблицы

PRINT «код стоимость»

PRINT «изделия изделия»

WHILE NOT EOF (fr)

INPUT #fr, Rastcen.KodI, Rastcen.StIz

PRINT Rastcen.KodI, Rastcen.StIz

WEND

REM Конец вывода

CLOSE (fr)

PRINT

PRINT «Конец подпрограммы. Нажмите <Enter.»

Pause$ = INPUT$ (1)

RETURN

calculate:

REM Подпрограмма расчета заработной платы

PRINT «Работает подпрограмма расчета заработной платы»

PRINT

OPEN NameFZ FOR INPUT AS #fr

OPEN NameFV FOR RANDOM AS #fv

KolZapV = 0

WHILE NOT EOF (fz)

INPUT #fz, Zajavka.Rab.TabN, Zajavka.Izd.Kod, Zjavka.Izd.Kol, Zajavka.Rab.KodK

OPEN NameFR FOR INPUT AS #fr

WHILE NOT EOF (fr)

INPUT #fr, Rastcen.KodI, Rastcen.StIz

IF Zajavka.Izd.Kod = Rastcen.KodI THEN st = Rastcen.StIz

WEND

CLOSE fr

REM Вычисление стоимости заявки

Stoim = st * Zajavka.Izd.Kol

IF Zajavka.Rab.KodK = «001» THEN Stoim = 1.5 * Stoim

IF Zajavka.Rab.KodK = «002» THEN Stoim = 1.25 * Stoim

REM Конец вычисления стоимости одной заявки

REM Формирование строки ведомости

SEEK #fv, 1

sum =0

FOR i = 1 TO KolZapV

GET #fv, i, Vedom

IF Zajavka.Rab.TabN = Vedom.TabN THEN

Vedom.Zrpl = Vedom.Zrpl + Stoim

PUT #fv, i, Vedom

END IF

NEXT i

IF sum = 0 THEN

Vedom.TabN = Zajavka.Rab.TabN

Vedom.Zrpl = Stoim

KolZapV = KolZapV + 1

PUT #fv, KolZapV, Vedom

END IF

WEND

CLOSE fz

CLOSE fv

PRINT

PRINT «Конец подпрограммы. Нажмите <Enter>.»

Pause$ = INPUT$ (1)

RETURN

look3:

REM Подпрограмма просмотра ведомости по зарплате

PRINT «Работает подпрограмма просмотра ведомости по зарплате»

PRINT

OPEN NameFV FOR RANDOM AS #fv

REM Вывод ведомости

PRINT «табельный заработная»

PRINT «номер плата»

WHILE NOT EOF (fv)

GET #fv,,Vedom

PRINT Vedom.TabN, Vedom.Zrpl

WEND

REM конец вывода

CLOSE fv

PRINT

PRINT «Конец подпрограммы. Нажмите<Enter>.»

Pause$ = INPUT (1)

RETURN

END

 

 

Литература

 

1. Барышева И.В., Городецкий С.Ю., Гергель В.П., Гришагин В.А., Кастосов И.В., Кулакова А.П. Информатика: от школы к вузу. По материалам конкурсных экзаменов в ННГУ. - Н.Новгород: ННГУ, 2000.

2. Барышева И.В., Городецкий С.Ю., Громницкий В.С., Малыженков В.И., Маркина М.В. Задачи по информатике. / По материалам выпускных экзаменов подготовительного факультета и вступительных экзаменов в ННГУ в 2004 году. - Н.Новгород: ННГУ, 2004.

3. Гришагин В.А., Карпенко С.Н. Контрольные задания по информатике для учащихся подготовительных курсов. - Н.Новгород: ННГУ, 2002.

4. Гуденко Д.А., Петроченко Д.В. Сборник задач по программированию. -СПб.: Питер, 2003.

5. Зеленяк О.П. Практикум программирования на Тuгbo Раsсаl. Задачи, алгоритмы и решения. - К.: ДиаСофт, 2001.

6. Иванова Г.С. Основы программирования: Учебник для вузов. - М.: МГТУ им. Н.Э. Баумана, 2002.

7. Информатика: Учебник / Под ред. проф. Н.В. Макаровой.- М.: Финансы и статистика, 1997.

8. Информатика. Базовый курс / Симонович С.В. и др. - СПб: Питер, 2000.

9. Информатика для юристов и экономистов. / Симонович С.В. и др. - СПб: Питер, 2002.

10. Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ.-М.: Наука, 1986.

11. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Бейсик, Си, Паскаль. Самоучитель. - СПб.: БХВ - Петербург, 2002.

12. Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф.-СПб.: Питер, 2002.

13. Романовский И.В. Дискретный анализ. - СПб.: Невский Диалект; БХВ - Петербург, 2003.

14. Ставровский А.Б. Турбо Паскаль 7.0. Учебник. - К:ВНУ, 2000.

15. Фигурнов В.Э. IBM PC для пользователя. Изд. 7-е, перераб. И доп. - М.: ИНФРА - М, 1997.

16. Экономическая информатика./Под ред. Косарева В.П.-М.: Финансы и статистика, 2002.

17. Юркин А.Г. Задачник по программированию. - СПб.: Питер, 2002.

 




Поделиться с друзьями:


Дата добавления: 2015-01-03; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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