|
Тема :Програмування задач з використанням файлів .
Мета : 1. Ознайомитись з файловим типом даних у TURBO PASCAL . 2. Навчитись створювати та читати текстові файли . 3. Набути навиків формування та опрацювання типованих файлів .
Вивчити: · основну термінологію, пов’язану з файловими структурами даних: фізич- пис кінця файлу; · запис даних уфайл з послідовною організацією; · читання із файлу; · редагування записів файлу; · можливості мови програмування по опрацюванню файлів. Рекомендована література 1.В.Е.Алексеев,А.С.Ваулин,А.В.Петрова , Вычислительная техника и программирование.Практикум по программированию. M.:Высш.шк.1991г. 400с. Стор.340-351 2.Довгаль С.И, Литвинов Б.Ю.Сбитнева А.И Персональные ЕОМ: Турбо Паскаль V 6.0, 1993г. 3. В.Я.Сердюченко, Розробка алгоритмiв та програмування мовою Turbo-Pascal. Харків,1995г. 270с Постановка задачі
Скласти програму для обчислення суми ряду по заданому вигляду загального члена з заданною точністю 0.001 . Елементи ряду, їх порядкові номера та загальну суму вивести у текстовий файл rezult.txt . Варіанти задач згідно таблиці № 9 Скласти програму для формування типованого файлу, що містить відомості про студентів : прізвище, ім’я, шифр групи, номер телефону, результати 4-ох екзаменів сесії . Кількість записів довільна . Скласти програму для опрацювання сформованого типованого файлу . Виконати обчислення згідно варіанту таблиці .2
Методичні вказівки . Текстовий файл можна формувати декількома способами : · посимвольно формувати рядок файлу, використовуючи змінну типу CHAR і формуючи в циклі рядок поки не натиснена клавіша ENTER ; · використовуючи масив символів, що містить інформацію одного рядка VAR X : ARRAY[1..80] of CHAR ; · використовуючи готові рядки, дані типу String Приклад програми 1: Скласти програму формування текстового файлу прізвищ
uses crt ; const ob=’gruppa5.txt’; var fam:string[30]; spisok:text ; simv:char; begin assign (spisok, ob); rewrite(spisok); repeat writeln(’введіть наступне прізвище’ ); readln(fam); writeln(spisok,fam); writeln(’для продовження роботи введіть будь-який символ’); writeln(’для закінчення - треба ввести символ -N’); readln(simv); until simv=’N’; close(spisok); reset(spisok); writeln; writeln(‘зміст файлу’); while not eof (spisok) do begin readln(spisok,fam); writeln(fam); end; end. Приклад виконання завдання 2 Завдання : скласти програму створення типованого файлу, що містить відомості про здачу студентами сесії . Структура запису містить поля : індекс групи, прізвище студента, оцінки з п’яти екзаменів . Кількість записів у файлі довільна .
PROGRAM LR15A(INPUT,OUTPUT); TYPE
ZAP= RECORD INDEX:STRING[6]; FAM:STRING[20]; MARKER:PACKED ARRAY[1..5] OF CHAR; END; VAR SESSYA:FILE OF ZAP; K:INTEGER; FLAG:BOOLEAN; X:ZAP; BEGIN K:=0; FLAG:=TRUE; ASSIGN(SESSYA,’SESSYA.dat’); REWRITE(SESSYA); REPEAT WRITELN(‘ ВВЕДІТЬ ПОТОЧНИЙ ЗАПИС : ІНДЕКС ГРУПИ , ФАМІЛІЮ І’); WRITELN(‘5 ОЦІНОК ЗА ЕКЗАМЕНИ ’); WRITELN(‘ДЛЯ ЗАКІНЧЕННЯ РОБОТИ ВВЕДІТЬ ЗАМІСЬ ІНДЕКСА ’); WRITELN(‘ГРУПИ СИМВОЛІВ # # # # # #’); READ(X.INDEX,X.FAM,X.MARKER[1], X.MARKER[2], X.MARKER[3], X.MARKER[4], X.MARKER[5]); IF X.INDEX<>’# # # # # # ‘ THEN BEGIN K:=K+1; WRITE(SESSYA,X) END ELSE FLAG:=FALSE UNTIL FLAG; WRITELN(‘B ФАЙЛІ ‘,K,’ ЗАПИСІВ’); CLOSE(SESSYA); RESET(SESSYA); WHILE NOT EOF(SESSYA) DO BEGIN READ(SESSYA,X); WRITELN(X.INDEX,X.FAM,X.MARKER[1], X.MARKER[2], X.MARKER[3], X.MARKER[4], X.MARKER[5]); END; WRITELN(‘КОНЕЦ ФАЙЛА’); END.
Приклад виконання завдання 3 Завданння :Написати програму обчислення стипендії студентів групи Х. Розмір звичайної стипендії 10 грн. Студенту, який отримує всі п’ять оцінок “5” , призначається стипендія, підвищена на 50% ; отримавшому 1-2 оцінки ”4” i решта ”5” -підвищена на25% ; студенту,який отримав хоча б одну оцінку ”3”, стипендія не призначається . В інших випадках призначається звичайний розмір стипендії .
PROGRAM LR15; LABEL 2; TYPE ZAP=RECORD INDEX:STRING[6] ; FAM:STRING[20]; MARKER:ARRAY[1..5] OF CHAR; END; VAR SESSYA:FILE OF ZAP; Y:ZAP; X:STRING[6]; I,K4,K5,N:INTEGER; S:REAL; BEGIN ASSIGN (SESSYA,’SESSYA’);RESET(SESSYA); WRITELN(‘ВВЕДІТЬ ІНДЕКС ГРУПИ ’);READLN(X); WRITELN(‘ВІДОМІСТЬ ЗАЧИСЛЕННЯ НА СТИПЕНДІЮ’); WRITELN(‘СТУДЕНТІВ ГРУПИ’,Х); N:=0; 2:WHILE NIT EOF (SESSYA) DO BEGIN READ(SESSYA, Y); IF Y.INDEX=X THEN BEGIN K4:=0; K5:=0; FOR I:=1 TO 5 DO BEGIN IF Y.MARKER[i] =’2 ‘ OR Y.MARKER[i] =’3’ THEN GOTO 2; IF Y.MARKER[i] =’5 ‘ THEN K5:=K5+1; IF Y.MARKER[i] =’4 ‘ THEN K4:=K4+1; END; S:=10.0; N:=N+1; IF K5=5 THEN S:=15.0; IF (K5>2)AND(K4<=2) THEN S:=12.5;Writeln(n,Y.FAM:20,’ s=’,s5:2); END;CLOSE(SESSYA);WRITELN(‘КОНЕЦ ФАЙЛА’); END. Таблиця 10.
Таблиця 2.Варіанти завдань. 1. Роздрукувати анкетні дані студентів - вдмінників. 2. Роздрукувати анкетні данні студентів які навчаються на 4 і 5. 3. Роздрукувати анкетні дані студентів які мають одну оцінку 3. 4. Роздрукувати анкетні дані студентів як отримали за останній екзамен 2. 5. Роздрукувати анкетні дані студентів які отримали за перший екзамен оцін- ку 5. Роздрукувати анкетні дані студентів які отримали одну оцінку 4, а всі інші 5. 6. Роздрукувати анкетні список студентів прізвище яких починається на літе- ру А, і їх оцінки. 8. Роздрукувати анкетні список студентів прізвище яких починається на літе- ру Б, і їх дати народження. Роздрукувати оцінки студентів прізвища яких починаються з літер В і Г. Роздрукувати прізвище і дату народженя студентів які не отримали жодної оцінки 3. Обчислити середній бал групи і роздрукувати список студентів які мають середній бал більше середнього балу групи. Обчислити середній бал групи і роздрукувати список студентів які мають середній бал менше середнього балу групи. Роздрукувати список студентів впорядкований по алфавіту. 9. Роздрукувати список студентів впорядкований по році народження. Роздрукувати список студентів впорядкований по даті народження.
ПРАКТИЧНА РОБОТА №9. ТЕМА: ПРОГРАМУВАННЯ ЗАДАЧ З ВИКОРИСТАННЯМ СИМВОЛЬНИХ ДАННИХ.
МЕТА: Оволодiти навиками pоботи з символьними даними, особливостями їх вводу та виводу на ЕОМ. Набути навиків програмування задач з використанням стандартних підпрограм для опрацювання символьної інфор- мації. ЗАВДАННЯ ДЛЯ САМОСТIЙНОЇ ПIДГОТОВКИ 1.Вивчити способи описання символьних данних на мові програмування. 2.Вивчити способи вводу та виводу данних. 3.Визначити алгоритми опрацювання данних. 4.Скласти програму для розв”язання задачі відповідно з варіантом завдання,вказаним в таблиці 11. ВИКОНАННЯ РОБОТИ Приклад задачі. Заданий текст слова , слова якої розділені символом “пропуск”. 1.1.Знайти кількість слів у тексті. 1.2. Надрукувати окремо з нового рядка кожне слово тексту. 1.3. Знайти і надрукувати найдовше слово тексту. Program strings; Uses Crt; Var s, t: string; I, k: Integer; Procedure kol(s: string; var k: Integer); {процедура знаходження кількості слів у} {тексті, текст містить хоча б одно слово} var i, n: Integer; begin k := 1; n := length(s); for i := 1 to n do if s[i]=’’ then k:= k +1; end; procedure druk(s:string); {процедура друкування слів тексту} var n: integer; s1:string; begin n:=pos(‘’,s); while n<>0 do begin s1:= copy(s,1,n-1); writeln(s1); delete(s,1,n); n:=pos(‘ ’,s); end; writeln(s) end; procedure max_word(s:string; var s1:string); {процедура знаходження} {найбільшого слова тексту} var m, n, max: integer; s2: string; begin s1:=’ ’; max :=0; n:=pos(‘ ’,s); while n<>0 do begin s2:=copy(s,1,n-1); m:=length(s2); if m>max then begin max:=m; s1:=s2; end; m:=length(s); if m>max then s1:=s end; begin {Основна програма} write(‘Введіть рядок:’); readln(s); writeln; writeln(‘Результати: ‘); kol(s, k); writeln(‘Кількість слів у тексті k=’, k); writeln; writeln(‘Слова тексту:’); druk(s); writeln; writeln(‘Найдовше слово тексту’); max_word(s, t); writeln(t); end. ЗАВДАННЯ: 1.СКЛАСТИ ПРОГРАМУ, ВВЕСТИ ПРОГРАМУ В ЕОМ НАЛАГОДИТИ ЇЇ.Таблиця 8.
Оформити звіт до роботи. Практична робота №10. Тема:Програмування задач з використанням комбінованих типів даних. Мета:1.Отримати навики в організації вводу/виводу значень комбінованих типів даних. 2.Отримати практичні навики програмування задач з використанням записів. Постановка задачі. Дані назви 15 ЕОМ. Для кожної ЕОМ відомо об’єм пам’яті, вартість, швидкодія і рік випуску. Скласти програму яка вводить дані про всі ЕОМ в масив записів. Інформацію про кожну ЕОМ оформити у вигляді запису. Введену інформацію вивести у вигляді таблиці а також виконати обчислення згідно варіанту. Методичні вказівки. Символьні дані в програмі вводити даними типу STRING,по можливості для цілих даних використовувати типи WORD,BYTE і т.д. Варіанти завдань. 1. Вивести параметри ЕОМ по заданій назві ЕОМ. Вивести параметри ЕОМ з найбільшим об’ємом пам’яті. Вивести параметри ЕОМ з найбільшою вартістю. 2. Вивести параметри ЕОМ з найбільшою швидкодією. Вивести параметри ЕОМ з найменьшим об’ємом пам’яті. 3. Вивести параметри ЕОМ з найменьшою вартістю. Вивести параметри ЕОМ з найменьшою швидкодією. Вивести параметри ЕОМ з найбільшим роком випуску. 4. Вивести параметри ЕОМ з найменьшим роком випуску. 5. Обчислити сумарну вартість ЕОМ. Для кожної ЕОМ обчислити відношення вартість/швидкодія. Вивести перелік ЕОМ вартість яких більша 2000. 6. Вивести перелік ЕОМ вартість яких меньша 1500. Вивести перелік ЕОМ з об’ємом пам’яті меньше 4Мб. 7. Вивести перелік ЕОМ з об’ємом пам’яті більше 4 Мб. Оформити звіт. Тема. Мета. Постановка задачі.Програма. Результати роботи.Висновки. Практична робота № 11. Тема: Програмування задач з використанням процедур та функцій модуля CRT . Мета: 1.Набути навиків алгоритмізації та програмування задач з використанням підпрограм модуля CRT. Виконання роботи 1.Завдання для самостійної підготовки - вивчити: - способів звернення до підпрограм різних типів ; - способи передавання параметрів в підпрограму; - правила запису програм , де використовують підпрограми різних типів. - порядок виконання підпрограм , що містять підпрограми .
2.Постановка задачі: 2.1 Написати програму ,яка обчислює значення заданої в варіанті функції. Програму оформити з використанням підпрограм керування кольром тексту , фону ,побудови вікон, звуковим супроводом. Вивід результату забезпечити в окремому вікні екрану. МЕТОДИЧНІ ВКАЗІВКИ 1.Модуль CRT рекомендують підключати в будь-якій програмі користувача. По-перше він прискорює виконання програми ,по -друге містить підпрограми керування курсором,кольором, звуком. Уважно прогляньте зразок програми ,зверніть увагу на особливості звертань до процедур та функцій,а також виводу результатів на екран текстового монітора. ПРИКЛАД ПРОГРАМИ: Program pr11; Uses Crt; Const a=0.2; b=0.8; h=0.1; Var x,y:Real; Begin Textbackground(4); ClrScr ; Gotoxy(30,2); TextColor(7); Writeln (‘ Р Е З У Л Ь Т А Т И З А Д А Ч І ‘); Textbackground(0); Window(10,6,70,16); ClrScr ; Gotoxy(10,2); TextColor(5); Writeln (‘ Значення функції: ‘); Writeln (‘ X’,’ Y ‘); x:=a; While x<=b do begin y:= ln(x)-sqr(cos(3*x)); Writeln ( X:6:2,Y:8:4); x:=x+h;end; Gotoxy(10,15); TextColor(12); Writeln (‘ Програму виконав Сидорів М.В. ,група Е-982); Repeat sound(random(900); delay(200); until keypressed; Nosound; END. ВАРІАНТИ ЗАВДАНЬ Таблиця 9.
Оформити звіт. Тема. Мета. Постановка задачі. Програма. Результати роботи. Висновки.
ПРАКТИЧНА РОБОТА № 12 ТЕМА: Програмуавння задач з використанням модуля GRAPH. МЕТА: Оволодіти навиками програмування задач з використанням стандарних модулів,вибір необхідних процедур і функхій,звертання до них. ВИКОНАННЯ РОБОТИ: · управління екраном , звуком, клавіатурою– модуль CRT; · процедури і функції графіки – модуль GRAPH; · ініціалізація графічного режиму; · скласти програму згідно варіанть, забезпечити музичний супровід при виконанні програми.
· Налагодити порограму; · Оформити звіт. Оформити звіт. Тема. Мета. Постановка задачі.Програма. Результати роботи.Висновки.
ПРАКТИЧНА РОБОТА №13. ТЕМА: ПРОГРАМУВАННЯ МОДУЛІВ КОРИСТУВАЧА. МЕТА: Набути навиків програмування модулів з використанням стандартних підпрограм ,створення бібліотеки власних модулів та підключення їх до основної програми.
ЗАВДАННЯ ДЛЯ САМОСТIЙНОЇ ПIДГОТОВКИ 1.Вивчити структуру оформлення модуля. 2.Вивчити способи звертання до стандартних підпрограм. 3.Визначити сукупність підпрограм власного модуля. 4.Скласти програму для розв"язання задачі з використанням підпрограм створеного власного модуля.
ВИКОНАННЯ РОБОТИ 1. СКЛАСТИ МОДУЛЬ МАТЕМАТИЧНИХ ПРОЦЕДУР ТА ФУНКЦІЙ ТА ВВЕСТИ В ЕОМ , НАЛАГОДИТИ ЙОГО. 2.ВВЕСТИ ПРОГРАМУ З ВИКОРИСТАННЯМ ПІДПРОГРАМ СТВОРЕНОГО МУДУЛЯ В ЕОМ , НАЛАГОДИТИ ЇЇ.
ПРИКЛАД МОДУЛЯ: UNIT VicArt; INTERFACE FUNCTION ART(X:REAL):REAL; PROCEDURE AGS(K,L:integer) ; IMPLEMENTATION FUNCTION ART(X:REAL):REAL; BEGIN ART:= 2*X+5- ABS(X); END; PROCEDURE AGS(K,L:integer) ; VAR A:Integer; BEGIN FOR A:=K TO L DO WRITELN('A=',A,' КВ.числа А=',SQR(A)); END; BEGIN { пустий роздiл iнiцiалiзацi• } END. ОСНОВНА ПРОГРАМА : PROGRAM MGVP; USES VicArt,Crt; BEGIN Clrcrt; { очищення екрану } WRITELN('РЕЗУЛЬТАТ=',ART(20.5)); { вивiд результатiв FUNCTION} AGS(3,10); { звертання до PROCEDURE модуля VicArt } END.
МЕТОДИЧНІ ВКАЗІВКИ. В модуль необхідно записати підпрограми, які відсутні в стандартній бібліотеці ПАСКАЛЯ: 1.Функцію піднесення в цілу додатню степінь; 2.Функцію обчислення факторіала; 3.Процедуру обчислення тангенса; 4.Процедуру обчислення котангенса. 5.Десяткового логарифму.
В основній програмі забезпечити звертання до підпрограм власного модуля. Вираз для обчислення вибрати самостійно. Вивести результати обчислень.
3.Оформити звіт до роботи.
1.Тема. 2.Мета. 3.Постановка задачі. 4.Текст модуля. 5.Програма. 6.Результати роботи. 7.Висновки.
ПРАКТИЧНА РОБОТА № 14 ТЕМА: ПРОГРАМУВАННЯ ЗАДАЧ З ВИКОРИСТАННЯМ АСЕМБЛЕРА МЕТА: Навчитись з’єднувати програму на мові ПАСКАЛЬ з АСЕМБЛЕРНИМИ вставками, програмувати задачі з використанням можливостей АСЕМБЛЕРА. ПОСТАНОВКА ЗАДАЧІ: Скласти програму обчислення виразу з виконанням арифметичних операцій на мові АСЕМБЛЕРА.
МЕТОДИЧНІ ВКАЗІВКИ: В програмі використовувати різні типи поєднань ПАСКАЛЯ з АСЕМБЛЕРОМ, а саме: · оператор АSM....END; · процедура на мові АСЕМБЛЕРА.
Бажано не викоритовувати команду АСЕМБЛЕРА M UL , а оформити операцію множення цілих чисел у вигляді підпрограми типу процедури на мові АСЕМБЛЕРА.
Загрузка...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|