Звіт з інформатики p>
на тему p>
«Робота з базами даних» учениці 11 «б» класу ліцею ТМОЛ при ТРТУ p>
Шаповаловою Юлії p >
Таганрог, 2001 р. p>
Зміст. p>
Зміст ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2
Мета роботи ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
Про мови програмування. ... ... ... ... ... ... ... 3
Робота з файлами ... ... ... ... ... ... ... ... ... ... ... ... ... 4
Робота з рядками. ... ... ... ... ... ... ... ... ... ... ... ... 5
Основні проблеми ... ... ... ... ... ... ... ... ... ... ... ... 5
Несуттєві зауваження ... ... ... ... ... ... ... ... 6
Додаток ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 7 p>
Мета роботи: написати на мові Turbo Pascal програму, що створює базуданих - список певної конкретної групи людей (в даному випадку) ззазначенням їх імені, прізвища, статі та короткої характеристики, а потімпрограму, що витягає ці відомості зі списку шляхом введення якийськонкретної характеристики потрібної людини (декількох людей). p>
Трохи про мови програмування. p>
Всі сучасні мови поділяються на дві групи: інтерпретують ікомпілюються. В основі роботи мов першого типу лежить порядковий перекладв біти - інтерпретація. У результаті програма існує лише у виглядітекстового файлу. Компілюються мови вважаються в даний час більшперспективними. Спочатку вихідний текст обробляється компілятором, ввнаслідок чого з'являється об'єктний файл, що обробляється в наслідкупрограмою-компонувальником, після чого з'являється виконуваний файл - кінцевийпродукт роботи. До компілюються мов відносять і Pascal. P>
Власне, програма. P>
Програма, як вже сказано являє собою список деякогокількості людей, який можна оновлювати, а також з якого можнавитягати дані на будь-якої людини, задавши попередньо одну з йогохарактеристик (прізвище, ім'я або стать). Так, наприклад, за допомогою цієїпрограми можна отримати список всіх осіб чоловічої або жіночої (за вибором)статі, з повною характеристикою кожного, дані на людину із заданоюпрізвищем і т. д. p>
Робота з файлами. p>
Для роботи з файлами мною були використані наступні функції: p>
> Assign - функція, асоціюються ім'я файлу з деякої змінної, з якою і йде подальша робота. p>
> Reset - функція, що відкриває вже існуючий файл для читання з нього. p>
> Rewrite - функція, що створює новий файл, або перезаписуються старий . p>
> Readln - читання з вказаного файлу рядки з переходом на наступний рядок. p>
> Writeln - запис у вказаний файл рядки з переходом на наступний рядок.
Взагалі, файл розглядається не просто як кілька рядків, а як запис
(record), що значно спрощує роботу з файлами. p>
Робота з рядками. p>
Для роботи з рядками у файлі я використовувала дві основні функції:pos і copy. Функція pos призначена для пошуку будь-якого елемента взаданої рядку, я її використовувала для пошуку спецсимволів, якимирозділені дані на людину. Функція copy копіює з одного рядка віншу деякий задану кількість символів. За допомогою функції pos я шукаюзнак, яким закінчується певний параметр, за допомогою функції copyкопіюю в допоміжну рядок всі символи до цього знака, а потімпорівнюю з введеним критерієм. p>
Проблеми, з якими я зіткнулася при написанні програми. P>
> Поділ параметрів при зберіганні даних у файлі. P>
Зіткнувшись з цією проблемою, я пішла по шляху найменшого опору,і просто примусово розділила параметри спеціальними символами (*, &,
$). Це дозволило легко організовувати перевірку закінчення розділу. Самособою, цей спосіб неефективний при великій кількості розділів і великомуобсязі інформації, що зберігається в них, але в даному випадку цілком зійде.
Є, правда, ще один недолік: користувач може випадково ввести ціспецсимволи в процесі використання програми, не підозрюючи про те, щоце якось позначиться на роботі програми. Але я порахувала ці недолікинесуттєвими. Був ще варіант: мати у своєму розпорядженні параметри кожного разу з новоюрядка. У цього способу є свої переваги (наприклад, спрощується процесзчитування і запису в базу даних), але є й недоліки: значноускладнюється перевірка переходу від одного параметра до іншого. p>
> Розташування даних у файлах.
Взагалі, рішень в цієї проблеми велика кількість. Одне з них полягаєв тому, щоб записувати дані на кожну людину записуються в окремийфайл, а у файлі записувати параметри кожен з нового рядка. Перевагицього способу: кажуть, що він ефективний (сама я не пробувала),недоліки: спосіб абсолютно неефективний при великій кількості людей, такяк кількість файлів не повинно бути занадто великим. Крім того, створеннякожного нового досьє тягне за собою виконання дуже складних для такоїпростий завдання операцій (вважати з особливого файлу число - кількість вжестворених файлів, потім, використавши його при створенні нового файлу (самочисло вноситься в ім'я файлу), збільшити на 1), і записати файл на місцепопереднього числа).
Є ще варіант: кожен параметр на всі елементи списку зберігається в одномуфайлі. Переваги: невелика кількість файлів і спрощення процесупошуку. Недоліки: запис у файли нового досьє стає доситьтрудомістким заняттям.
Обидва ці способи я порахувала громіздкими, тому всі дані на всіх людейзберігаються у мене в одному файлі, розділені, як уже говорилосявідповідними символами. Переваги: багато в чому спрощується робота зфайлами (не потрібно мучиться з їх відкриттям і закриттям). Правда, файл можевийти дуже великим. Інших недоліків у свого шляху я не бачу. P>
Несуттєві зауваження. P>
Хочу повиниться перед перевіряючим: всупереч наполегливе проханнянашого вчителя інформатики замість однієї програми я написала дві: першазаносить дані у файл, другий витягує їх звідти. Не вважаю це серйознимнедоліком своєї роботи, тому що при бажанні ці дві програми завждиможна об'єднати. Також хочу зауважити, що дана програма далеконедосконала щодо оформлення, але тому що переді мною не стоялазавдання малювати красиві картинки, я й не стала цього робити. p>
Результатом моєї роботи з'явилися дві програми, які я і наводжу ввисновок. p>
Додаток. p>
Program shit; uses crt; p>
var a, s, d: string; f: text; n, e, y, q: integer; p>
begin assign (f, 'iz.txt');
($ I-) reset (f); if IOResult> 0 then begin writeln ( 'Файл не знайдено') ; readln; halt; end;
($ I +) p>
(Ця вставка призначена на той випадок, якщо файлу зі списком немає на диску. Тоді програма видасть повідомлення і завершить свою роботу, а не просто вилетить .) writeln ( 'Введіть критерій'); readln (a); writeln ( 'Якщо це прізвище, введіть 1, ім'я - 2, підлога - 3'); readln (e); if e = 1 then begin repeat readln (f , s); n: = pos ('*', s); d: = copy (s, 1, n-1); if d = a then begin y: = 1; w: = pos ('*', s); r: = pos ('&', s); t: = pos ('$', s); p>
s: = copy (s, 1, w-1) + '' + copy (s, w 1, rw-1) + 'підлога' + s [r 1] + p>
'' + copy (s, t +1, length (s)-t - 1); p>
(Цей блок і всі наступні блоки такого типу служать для видалення спецсимволів при виведенні на екран рядки з файлу. Замість спецсимволів на екран виводяться пропуски і деякі пояснення.) writeln (s); end;
until eof (f); end; if e = 2 then begin repeat readln (f, s); n: = pos ('*', s); q: = pos ('&', s ); d: = copy (s, n +1, qn-1); if d = a then begin y: = 1; w: = pos ('*', s); r: = pos ('&', s); t: = pos ('$', s); s: = copy (s, 1, w-1) + '' + copy (s, w 1, rw-1) + '' + s [ r 1] + p>
'' + copy (s, t +1, length (s)-t-1); writeln (s); end; until eof (f); end; if e = 3 then begin if not ((a = 'м') or (a = 'ж')) then begin writeln ( 'Не виробляє. Я, звичайно знаю парочкугермафродитів, '); writeln (' але їх нема цьому списку. Сто пудів !!!!'); y: = 1; p>
(Перевірка на випадок не дуже розумного користувача.) end else repeat readln ( f, s); n: = pos ('&', s); if s [n +1] = a [1] then begin y: = 1; p>
(writeln (s);) w: = pos ('*', s); r: = pos ('&', s); t: = pos ('$', s); s: = copy (s, 1, w-1) + '' + copy (s, w 1, rw-1) + '' + s [r 1] + '
'+ copy (s, t +1, length (s)-t-1); writeln (s); end; until eof (f); if not ((e = 1) or (e = 2) or (e = 3)) then beginwriteln ( 'Слухай, робити нічого, вали з моєї програми'); y: = 2; p>
(Перевірка на випадок не дуже розумного користувача) end; if not (y = 1) or (y = 2 ) then writeln ( 'Таких тут нема, і, як на мене ніколи не було');end;readlnend. p>