Телефониий довідник (Turbo Pascal)
Телефониий довідник (Turbo Pascal)
План:
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:\tp7\bgi') – команда ініціалізує графічний режим і програма переходить в нього.
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
728645Gryunvaldska 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:\tp7\bgi');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.