План: 1. Вступ 3ст. 2. Завдання 4ст. 3. Вхідний файл 5-8ст. 3.1 Програма формування вхідного файлу .5-6ст. 3.2 Команди програми Vhidnuy .6-7ст. 3.3 Виконання програми .7ст. 3.4 Блок схема .8ст. 4. «Телефонний довідник» .8-16ст. 4.1 Опис програми «Телефонний довідник» 8-9ст. 4.2 Команди програми 9-12ст. 4.3 Виконання програми .12-14ст. 4.4 Блок схема 15-16ст. 5 Висновок .17ст. 6 Використана література 18ст. 7 Додатки .19-25ст. 7.1 Додаток №1 .19-23ст. 7.2 Додаток №2 .24ст. 7.3 Додаток №3 .25ст. 1.Вступ: В наш час, в століття інформаційний технологій потрібно завжди мати всебічний доступ до інформації. Найбільший її обсяг можливо почернути в новітніх базах даних. Прикладом такої бази даних може стати програма «Телефонний довідник». Ця програма завжди допоможе за прізвищем і адресою абонента знайти легко телефон потрібного абонента. Ця програма написана на мові програмування TURBO PASCAL 7.0. Я вибрав цю мову програмування з багатьох причин. По перше цю мову програмування я знаю ліпше всього, а по друге вона має усі можливості більш складних мов програмування, а також вона проста своєю наочністю. Отримана в результаті програма, виконана в Pascal має зрозумілий, доступний та наочний вигляд, легко піддається обробці та змінам. Також програму «Телефонний довідник» можливо зробити в багатьох програмах. Для прикладу підходять такі програмні продукти компанії Microsoft як: Microsoft Office Excel i Microsoft Office Access. 2.Завдання Моє завдання полягає в тому щоб за допомогою алгоритмічних конструкцій у мові Turbo Pascal яка за допомогою вхідних даних(прізвища і адреси) знайти необхідний телефон. 3.Вхідний файл 3.1Програма формування вхідного файлу Програма «Телефонний довідник» складається з двох програм: Перша програма формує типізований файл (див. додаток № 1 в текстовому вигляді). Типізований файл можливо переглянути тільки програмно. Оголошення типізованого файлу е специфічна синтаксична структура наприклад f: file of real. Також у цій програмі використовуються записи. Запис – це структурований тип даних який складається з визначеного числа компонентів, які мають назву поля запису. Вони можуть мати різний тип даних. Оголошення змінної типу запис починається за допомогою слова reacord, після якого починається список полів з виказанням їх типів. Закінчується опис даних за допомогою службового слова end. Наприклад: var Name=reacord a,b: string[15]; c: real; ef:array[1 20] of byte; end. Також записи можуть містити в собі масиви даних. Масив – це структурований тип даних, який складається з фіксованого числа елементів одного типу. Для оголошення масиву існує службове слово array of. Сама процедура створення масиву може виконуватися таким чином: var z , x: array[1 20] of real; Програма також містить у собі один цикл. Цикл – це повторення одних і тих же дій. Послідовність дій, які повторюються в циклі називають тілом цикла.І снує декілька видів циклів. В цій програмі я обрав цикл з параметром. Тому що цей цикл дуже гнучкий у своїй конструкції. Цикл описується наприклад таким чином: var: i: integer; begin for i:=1 to 10 do begin … Програма Vhidnuy потрібна для того щоб завести 150 записів з них: 50 телефонів, 50 адрес і 50 прізвищ абонентів(див додаток № 2 список в текстовому форматі). 3.2. Команди програми Vhidnuy: Program vhidnuy- ця команда оголошує назву програми. uses crt – оголошення модуля crt дає змогу використовувати кольори тексту і затримку. Цей модуль використовується щоб надати програмі дружелюбного вигляду. type – оголошення нового типу даних. dovidnuk=reacord – ця команда дає змогу описати записи. Записи можуть мати різні типи даних. pr:string[30] – це поле запису означає, що буде вводитися прізвище абонента у форматі string[30] і максимальна довжина прізвища 30 символів. tel:real – це поля запису означає номер телефону, який записується у форматі real. vyl:string[30] - поле запису означає, що буде вводитися адреса абонента у форматі string[30] і максимальна адреси прізвища 30 символів. Після опису полів запису вводиться команда end, яка закінчує опис даних. var – відкриття опису даних. f: file of dovidnuk – оголошення формування файлу f який має назву у програмі. Файл f має формат dovidnuk який описаний вище. a:array[1 50] of dovidnuk – програма формує масив на 50 значень і має формат даних dovidnuk i: integer- змінна і вводиться як лічильник циклу у форматі integer. Далі починається програма begin – оголошення початку програми. assign(f,’dani’) – відкриття файлу який має назву у програмі f, а на диску зберігається під назвою dani. rewrite(f) – за допомогою цієї команди ми відкривачем файл для запису в нього вхідних даних. for i:=1 to 50 do begin – в цій програмі використовується цикл з параметром. За допомогою цього циклу програма запитає 50 разів прізвище абонента, 50 разів телефон абонента і 50 разів адресу абонента. write(‘prizvushe’,i) – ця команда пише на екран слово ‘prizvushe’ і його номер у файлі. Слово ‘prizvushe’ означає, що потрібно ввести прізвище абонента. readln(a[i].pr) – за допомогою цієї команди ми можемо ввести прізвище абонента. write(‘tel’,i) - ця команда пише на екран слово ‘tel’ і його номер у файлі. Слово ‘tel’ означає, що потрібно ввести телефон абонента. readln(a[i]. tel) - за допомогою цієї команди ми можемо ввести телефон абонента. write(‘vul’,i) - ця команда пише на екран слово ‘vul’ і її номер у файлі. Слово ‘vul’ означає, що потрібно ввести адресу абонента readln(a[i]. vul) - за допомогою цієї команди ми можемо ввести адресу абонента. end – ця команда закриває цикл у програмі. close(f) – за допомогою цієї команди ми закриваємо використання файлу f. end – ця команда закриваємо програму. 3.3.Виконання програми: Ця програма потрібна для того щоб сформувати вхідний файл даних. Запустивши програму «vhidnuy» нам потрібно ввести дані. Після вводу усіх потрібних даних програма збереже їх на жорсткому диску у типізованому файлі під назвою DANI. Результат виконання програми можливо подивитися за допомогою малюнка:
3.4Блок cхема
4.«Телефонний довідник» 4.1Опис програми «Телефонний довідник»: Програма «Телефонний довідник» (див. додаток № 2)- це база даних яка працює за допомогою вхідного типізованого файлу “DANI.txt”, в якому міститься інформація про абонентів. У програмі міститься цикл з параметром. щоб програма відкрила і Цикл потрібний для пошуку потрібної інформації у файлі “DANI.txt”. Параметри за якими проводиться пошук у файлі користувач вводить з клавіатури. Після цього програма за допомогою галуження if (a[i].pr=b)and(a[i].vyl=c) знаходить інформацію, порівнюючи введені прізвище і телефон абонента. Якщо введені параметри збігаються з інформацією у файлі “DANI.txt” тобі програма видасть користувачу номер телефону абонента. А якщо уведена інформація не підійде програма видасть повідомлення про те що номер не знайдено це повідомлення виводиться за допомогою іншого галуження іf p=0 then begin writeln('Abonent ne zareestrovanuy');. Для надання дружелюбного вигляду програмі я змінив текст кольору і місце друкування його на екрані. Місце друкування тексту на екрані змінюеться по координатам х та у за допомогою команди gotoxy наприклад gotoxy(30,11); - це означає що текст буде написаний на середині екрану. Далі в програмі я змінюю координати х та у щоб користувачеві було легше працювати з програмою. Програма провидить з користувачем діалог в якому пояснює що потрібно роботи для пошуку телефону потрібного абонента. 4.2.Команди програми: Program Telefonnyu dovidnuk; - ця команда оголошує назву програми. uses crt; - оголошення модуля crt дає змогу використовувати кольори тексту і затримку, а також цей модуль потрібний щоб очистити екран. Цей модуль використовується щоб надати програмі дружелюбного вигляду. uses graph – ця команда потрібна для оголошення модуля graph. Цей модуль потрібний для додавання в програму елементів графіки. Модуль graph працює тільки в повно екранному режимі. type - оголошення нового типу даних dovidnuk=record - ця команда дає змогу описати записи. Записи можуть мати різні типи даних. pr:string[30]; - це поле запису означає, що буде введене прізвище абонента у форматі string[30] і максимальна довжина прізвища 30 символів. tel:real; - це поля запису означає номер телефону, який записується у форматі real vyl:string[30] - поле запису означає, що буде введена адреса абонента у форматі string[30] і максимальна адреси прізвища 30 символів. end; - ця команда закриває оголошення записів. file of dovidnuk – оголошення формування файлу f який має назву у програмі. Файл f має формат dovidnuk який описаний вище. gd,gm:integer; - ці змінні потрібні для подальшого використання графіки. a:array[1 50] of dovidnuk – програма формує масив на 50 значень і має формат даних dovidnuk. i: integer- змінна і вводиться як лічильник циклу у форматі integer. р: integer- змінна у форматі integer. b,с: integer- змінні у форматі integer. На цьому кроці закінчується опис змінних і починається програма. begin – оголошення початку програми gd:=detect – ця команда потрібна для переходу в графічний режим. Initgraph(gd,gm,'D:tp7bgi') – команда ініціалізує графічний режим і програма переходить в нього. cleardevice; - команда повністю очищує екран від попередньої програми і є аналогом команди clrscr, але команда cleardevice працює тільки в графічному режимі. setbkcolor(10); - ця команда змінює колір тла екрану з чорного на зелений. directvideo:=false; - ця команда потрібна для відключення графічного режиму і переходу в текстовий. textcolor(red) – ця команда змінює колір тексту з білого на червоний. Я використовую ця команду для того щоб надати програмі дружелюбного вигляду. gotoxy(24,1); - ця команда переміщує текст зверху екрану середину. writeln('Vvedit bydlaska prizvushe i adresy abonenta'); - за допомогою цієї команди виводиться повідомлення щоб користувач ввів прізвище і адресу абонента gotoxy(30,11);- ця команда переміщує текст приблизно на середину екрана. writeln('Prizvushe:'); - команда виводить на екран слово прізвище. gotoxy(40,11) ; - ця команда переміщує текст напису на екрані. readln(b); - за допомогою цієї команди вводиться з клавіатури прізвище абонента. gotoxy(30,12);- ця команда переміщує текст напису на екрані. writeln('Adresa:'); - команда виводить на екран слово адреса. gotoxy(40,12);- ця команда переміщує текст напису на екрані. readln(c); - за допомогою цієї команди вводиться з клавіатури адреса абонента. gotoxy(35,12);- за допомогою цієї команди номер телефону абонента буде виведений на середині екрану. assign(f,'dani'); - ми відкриваємо файл який має назву у програмі f, а на диску зберігається під назвою dani. reset(f); - ця команда відкриває файл для читання. for i:=1 to 50 do begin – за допомогою цикл з параметром ми шукаємо у відкритому файлі потрібну інформацію. read(f,a[i]); - за допомогою цієї команди програма ми знову читаємо всі дані у файлі f для того щоб знайти потрібну інформацію if (a[i].pr=b)and(a[i].vyl=c) – за допомогою цього галуження ми шукаємо за введеними з клавіатури адресою і прізвищем номер телефони абонента. then – службове слово яке використовується у галуженні і логічно означає: якщо умова справджується робити подальші команди. begin – команда початку виконання подальших дій. p:=1; - у цій програмі я використовую змінну р і присвоюю значення 1 для того щоб якщо умова справджується тоді виводився телефон один раз. gotoxy(33,13); - за допомогою цієї команди номер телефону буде виведений на середину екрану. textcolor(9+blink); - за допомогою цієї команди текст буде виводиться в синьому кольорі, а також буде мигати. write('Telefon: ',a[i].tel:7:0) – за допомогою цієї команди номер телефону абоненту виводиться на екран. end; - ця команда закриває виконання галуження. if p=0 – за допомогою цього галуження якщо телефон абонента не буде знайдений програма видасть відповідне повідомлення. І це повідомлення буде написане на екрані один раз. writeln('Abonent ne zareestrovanuy'); - ця команда виводить повідомлення що номер телефону не знайдено. end; - ця команда закриває виконання галуження. close(f); - за допомогою цієї команди програма закриває файл для використання. gotoxy(28,14); - за допомогою цієї команди номер подяка користувачеві буде виведена на середині екрана. writeln('Dekyemo za korustyvannya programouy'); - ця команда виводь повідомлення про подяку користування цією програмою. readln;- ця команда потрібна щоб затримати результат виконання програми на екрані. end. – команда повністю закриває програму. 4.3.Виконання програми: Натиснувши Ctrl+F9 ми побачимо що програма запропонує ввести прізвище абонента. Малюнку які ви побачете пізніше зроблені за допомогою клавіши «Print Screen» і програми «Paint». Також малюнки зроблені без модуля graph і командами потрібними для його використання.
Якщо ми введемо прізвище і натиснемо клавішу Enter з’явитися повідомлення що потрібно ввести адресу абонента:
Ввівши адресу абонента потрібно натиснути клавішу Enter і програма почне шукати номер телефону абоненту у базі даних. Якщо номер буде знайдений програма нам покаже його:
Але може бути випадок коли абонент відсутній у базі даних тоді програма видасть повідомлення проте що абонент не зареєстрований:
Для того щоб вийти з програми потрібно натиснути клавішу Enter. 4.4.Блок схема:
5.Висновок: Програма телефонний довідник це елементарна база даних. Ця програма може бути пристосована для реального використання, якщо замінити вхідний файл з реальними даними і відредагувати текст програми. Ця програма дуже легка у своєму використанні і нею може користуватися людина з малими навичками роботи з комп’ютером. На основі цієї програму я вдосконалив навички роботи у мові Turbo Pascal, вивчив нові алгоритмічні конструкції і підвищив рівень роботи з типізованими файлами. 6.Використана література: 1) Алексіїв Є.Р. Турбо Паскаль 7.0” - Москва. :НТ Пресс,2005. – 314,[6]с. 2) Шост Д.М. Основи інформатики та обчислювальної техніки. Turbo Pascal. 10-11 кл. – Тернопіль: „Навчальна книга – Богдан”, 1999. – 192 с. 3) Конспект з лекції. 7.Додатки: 7.1 Додаток №1: Вхідний файл в текстовому форматі: Soltus 2393836 Horodotska 173 kv 150 Ctecziv 2345677 Batalna 15 kn 60 Ivanenko 2226542 Shevchenka 88 kv 51 Pavliv 2371312 Benderu 92 kv 187 Barbanyuk 626116 Patoha 4 kv 44 Bygpim 2985488 Bogyna 2 kv 9 Shunkarenko 728645 Gryunvaldska 77 kv 32 Dushleva 760412 Aralska 4 kv 2 Gladyn 2377841 Konovalcza 23 kv 16 Masley 639134 Haykova 88 kv 46 Doroshenko 2378727 Horodotska 173 kv 103 Danczev 624989 Kaxovska 32 kv 34 Smagin 755678 Zaliznuchna 34 kv 78 Chernushuk 2982299 Benderu 45 kv 11 Marchenko 2701501 Dozvilna 85 kv 30 Fauzylin 2377496 Benderu 25 kv 5 Kyznechov 743448 Kropuvnuczkogo 12 kv 45 Chelyadinov 2401276 Lyublyanska 67 kv 34 Kapeban 2345555 Cyauvo 55 kv 23 Kokotko 2402121 Zelena 146 kv 200 Kyhecz 2380189 Zaliznyaka 67 kv 78 Dmutrovuch 741542 Valova 21 kv 89 Medvediva 2934431 Sugnivka 1 kv 1 Xoloshyak 2986080 Ryashivska 62 kv 12 Danulova 2213945 Shereczka 21 kv 60 Chernenko 2374006 Konovalcza 4 kv 32 Onuczko 2313231 Petlyuru 32 kv 78 Caviczkuy 2387890 Mazepu 15 kv 43 Skrupkina 2374024 Sheptuczkix 42 kv 78 Masyak 2263023 Horodotska 173 kv 116 Mishuna 2453701 Bugovskogo 57 kv 31 Xmuz 2393826 Horodotska 171 kv 200 Slobodyan 2383032 Turgeniva 34 kv 71 Pavluykov 628949 Patova 31 kv 80 Melnuk 2389090 Horbachevskogo 12 kv 60 Bondrovskiy 2223149 Krakivska 54 kv 23 Kuruchenko 643434 Boczenka 64 kv 38 Tereshenko 23901104 Zamkova 35 kv 31 Agapov 2345129 Antonovucha 12 kv 62 Aleksiev 2356212 Kotlyarevskogo 43 kv 69 Torba 2225124 Stelmaxa 12 kv 37 Vityuk 2374120 Sheptuczkux 15 kv 73 Mazypuk 2389095 Mateyka 17 kv 83 Voukiv 2123421 Shashkevucha 25 kv 70 Syl 2389040 Bilinskogo 12 kv 70 Grunko 2345679 Saxarova 90 kv 102 Bernadskuy 2390603 Sagaydachnogo 90 kv 12 Moroz 2345555 Dovbusha 13 kv 65 Martunyuk 2367876 Gryshevskogo 15 kv 89 Ilnuzkiy 2345678 Bushni 89 kv 34 7.2 Додаток №2 Текср програми: Program P1; uses crt,graph; type dovidnuk=record pr:string[30]; tel:real; vyl:string[30] end; var f:file of dovidnuk; gd,gm:integer; a:array[1 50] of dovidnuk; i,p:integer; b,c:string; begin gd:=detect;Initgraph(gd,gm,'D:tp7bgi');cleardevice;setbkcolor(2); directvideo:=false; textcolor(red); gotoxy(24,1); writeln('Vvedit bydlaska prizvushe i adresy abonenta'); gotoxy(30,11); writeln('Prizvushe:'); gotoxy(40,11);readln(b); gotoxy(30,12); writeln('Adresa:'); gotoxy(40,12); readln(c); assign(f,'dani'); reset(f); for i:=1 to 50 do begin read(f,a[i]); if (a[i].pr=b)and(a[i].vyl=c) then begin p:=1; textcolor(red+blink); write('Telefon: ',a[i].tel:7:0) end; end;if p=0 then begin writeln('Abonent ne zareestrovanuy'); end; close(f);gotoxy(28,14); textcolor(red); writeln('Dekyemo za korustyvannya programouy'); readln;end. 7.3 Додаток №3 Текст програми вхідного файлу: Program vhidnuy; uses crt; type dovidnuk=record pr:string[30]; tel:real; vyl:string[30] end; var f:file of dovidnuk; a: array[1 50] of dovidnuk; i:integer; begin assign(f,'dani'); rewrite(f); for i:=1 to 50 do begin write('prizvushe',i);readln(a[i].pr); write('tel',i);readln(a[i].tel); write('vul',i);readln(a[i].vyl); write(f,a[i]); end; close(f);end. |