Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Комп’ютеризовані системи
Кафедра:
Не вказано

Інформація про роботу

Рік:
2006
Тип роботи:
Інструкція до лабораторної роботи
Предмет:
Алгоритмічні мови та програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ. СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 4 З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ” для студентів спеціальності 6.0914 “Комп’ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” Затверджено на засiданнi кафедри “Автоматика і телемеханiка”, протокол №___ від __.__.200__ р. Львів – 2006 Робота з текстовими файлами. Символьні та рядкові змінні: інструкція до лабораторної роботи №4 з курсу “Алгоритмічні мови і програмування” для студентів спеціальності 6.0914 “Комп'ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” / Укл.: ____________, Б.Д.Будз, О.І.Гарасимчук - Львів: НУЛП, 2006.- 16 с. Укладачі: ______________________________, Б.Д. Будз, асистент, О.І. Гарасимчук, асистент. Відповідальний за випуск: __________________________________. Рецензент: __________________________________. Мета роботи - вивчити види файлів, стандартні процедури і функції мови Турбо-Паскаль для роботи з файлами, навчитися складати та відлагоджувати програми для роботи з тестовими файлами. Навчитись використовувати символьні і рядкові змінні для роботи з текстовими файлами. 1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ В тих випадках, коли даних багато або їх треба довго зберігати, застосовують файли. 1.1. Файл – це сукупність даних будь-якого типу. Таке визначення збігається з визначенням масиву, але, на відміну від останнього, файли розташовані на зовнішньому носії, кількість даних у файлі при його описуванні не вказується, елементи файлу не мають індексів, що ускладнює роботу з ними. Файл повинен мати ім’я. За іменем може іти розширення – послідовність до трьох дозволених символів. Розширення, якщо воно є, відділяється від імені крапкою. Якщо файл, який ви бажаєте редагувати вашою програмою, не знаходиться з нею в одній директорії, то для звернення до файлу перед його іменем необхідно вказати шлях до нього. Максимальна довжина імені разом з шляхом складає 79 символів. В мові Turbo Pascal є три види файлів: типовані, текстові та нетиповані. Кожен з них має свою область використання і свої особливості. 1.2. Файловий тип даних описують у розділі описів типів так: type <ім’я типу> = file of <базовий тип>; або безпосередньо у розділі оголошення змінних var <список змінних> : file of <базовий тип>; Приклад: Type f1 = file of integer; f2 = file of string [20]; var file1, file2: f1; file3:f2; zminni: file of Boolean; 1.3. Текстові файли. Текстові файли відрізняються від типованих тим, що їх можна редагувати або переглядати за допомогою звичайного текстового редактора. Такі файли описують одним словом Text, наприклад: var ft: text; Елементами текстового файлу є символи, організовані в рядки в загальному випадку різної довжини. В кінці кожного рядку стоїть ознака “кінець рядку”, а в кінці файлу – “кінець файлу”. Ознакою кінця рядку є символ #13 (це один з перших 32 символів таблиці ASCII, він має визначення CR). Він може бути об’єднаний з символом перенесення рядку #10 (його визначення LF). При введенні даних з клавіатури символ CR вводиться при натисканні клавіші Enter. Ознакою кінця файлу є символ #26. При введенні даних з клавіатури, цей символ записується при одночасному натисненні клавіш CTRL/Z. Ознака “кінець файлу” розпізнається функцією Eof, яка виробляє значення True, якщо досягнуто символу #26, в протилежному випадку вона виробляє значення False. Кінець рядку розпізнається функцією Eoln (скорочено від End of Line). Вона виробляє значення True, якщо досягнуто ознаки кінця рядку, в протилежному випадку – значення False. Файлова змінна текстового типу зв’язується з конкретним файлом на диску оператором Assign. Щоб записати інформацію в текстовий файл, його треба відкрити процедурою Rewrite, а процедура Reset відкриває його для читання. Для запису символів у файл використовують оператори Write або Writeln. Для читання інформації з текстового файлу використовують оператори Read та Readln, при цьому Read читає дане з файлу без переходу на наступний рядок, а оператор Readln забезпечує такий перехід. Особливістю роботи з текстовими файлами є те, що параметри, значення яких вводяться та виводяться з допомогою процедур Read або Write, можуть бути не обов’язково типу Char чи String, а й інших простих типів (цілих, дійсних типів при вводі; цілих, дійсних типів, типу Boolean – при виведенні). Ці процедури можуть також працювати і з ASCIIZ-стрічками. Текстовий файл можна створювати декількома способами, наприклад: посимвольно, використовуючи готові рядки (дані String) або їх можна створювати у будь-якому текстовому редакторі, тобто не програмним шляхом, а обробляти в самій програмі. Більш того, в такий файл можна записати числа і використовувати їх у програмі. Приклад програми посимвольного формування рядків файлу: uses crt; const n=5; var f1:text; i:integer; symb:char; Begin assign (f1, ‘G:\User\text.txt’); rewrite (f1); {відкрити файл для редагування} for i:=1 to n do begin repeat read (symb); {вводимо символ з клавіатури} write (f1, symb); {записуємо у файл f1} until (sim=#13); {до клавіші Enter} end; close (f1); {закрити файл f1} reset (f1); {відкрити файл для читання} while not eof (f1) do begin while not eoln(f1) do begin read (f1, symb); write (symb); end; readln(f1); writeln; end; End. 1.4. Основні процедури та функції для роботи з текстовими файлами. Процедури: Assign(F,<ім’я файлу>) – зв’язує логічний файл F з фізичним файлом, повне імя якого задано в рядку ,<ім’я файлу>. Reset (F) – відкриває логічний файл F для читання даних Rewrite(F) – відкриває логічний файл F для запису даних. Close(F) – закриває відкритий до цього логічний файл F. Виклик процедури Close необхідний при завершені роботи з файлом. Якщо по будь-якій причині процедура Close не буде виконана, файл все ж буде створений на зовнішньому пристрої, але вміст останнього буфера в нього не буде перенесено. Для вхідних файлів використання оператора закриття файлу не є обов’язковим. Rename(F, <нове ім’я файлу>) – дозволяє перейменувати фізичний файл на диску, зв’язаний з логічним файлом F. Перейменування можливе після закриття файлу. Erase(F) – знищує фізичний файл на диску, який був зв’язаний з файловою змінною F, файл до моменту виклику процедури Erase повинен бути закритий. Append(F) – відкриває файл для додавання в кінець файлу інформації. Відкривається існуючий файл, з яким зв’язана файлова змінна F, і вказівник поточної компоненти файлу встановлюється на кінець файлу. Read (F,<список вводу>) – читання інформації з файлу F. З файлу, з яким зв’язана файлова змінна F, читаються значення для однієї або декількох змінних списку вводу. Readln (F,<список вводу>) – читання рядку з файлу F. Те ж, що і процедура Read, але не прочитана частина рядка, включаючи ознаку кінця рядка, пропускається. Write (F,<список виводу>) – запис інформації у файл F. У файл з яким з яким зв’язана файлова змінна F, записуються значення виразів списку виводу. Writeln (F,<список виводу>) – запис рядка у файл F. Те ж що і процедура Write, але інформація що виводиться завершується ознакою кінця рядка. Функції: Eof(F) – логічна функція, яка повертає значення true коли при читанні досягнутий кінець файлу. Це означає, що вже прочитаний останній елемент у файлі або файл після відкриття виявився пустим. Eoln(F) – логічна функція, яка повертає значення true коли при читанні досягнутий кінець рядка файлу; 1.5. Символьні змінні. Символьний тип Char (від character - символ) – це тип змінних (даних), які складаються лише з одного символу (знаку, букви, цифри). Як і всі змінні, символьні змінні оголошуються в розділі Var: … Var Ch_1, Ch_2: Char; … В тілі програми їм можна присвоювати значення відповідного типу: … Ch_1:=’A’; Ch_2:=’?’; Ch_3:=’7’; … Кожному символу в комп’ютері відповідає одне ціле число з діапазону 0..255. це число, виражене в двійковій формі, є кодом машинного представлення символу. Всі символи зведені в таблицю кодів. Для кодування використовується стандартний американський код для обміну інформації – ASCII (American Standart Code for Information Interchange). Перша половина згаданої таблиці символів з кодами 0..127 відповідає стандарту ASCII. Друга половина символів таблиці – це національні алфавіти. Визначити номер будь-якого символу (або літери) в його десятковій формі можна за допомогою стандартної функції Ord: Ord(‘A’) = 65; Ord(‘a’) = 97; Функція Chr перетворює десятковий код символу в сам символ: Chr(65) = ‘A’; Chr(97) = ‘a’; Цю функцію можна замінити символом «#» (знак дієза): #65 = ‘A’; #97 = ‘a’; Тип змінних Char відносяться до порядкового типу. Дані порядкового типу мають кінцеве число можливих значень, ці значення певним чином впорядковані і кожен з них має свій порядковий номер. Для змінних цього типу застосовуються функції Pred і Succ: Pred(‘b’)=’a’; Pred(‘3’)=’2’; Pred(3)=2; Succ(‘a’)=’b’;` Succ(‘3’)=’4’; Succ(3)=4. Змінні цього типу можуть використовуватись також, наприклад, в циклі for: For Ch_1:=’a’ to ‘z’ do Writeln(‘Код літери’, Ch_1,’рівний’, Ord(Ch_1)); Дуже часто в задачах по обробці символів дуже ефективно застосовувати так звані множинні константи. Не будемо детально пояснювати їх властивості і спосіб задання, відмітимо лише що множини – це набір однотипних елементів порядкового типу, номер якого у відповідному типі не виходить за границі діапазону 0..255. Будь яка множинна змінна зберігає не самі значення її елементів, а всього лиш інформацію про те, чи є конкретний елемент в заданій множині чи його там нема. Як і у всіх змінних, в множинних є свої константи, вони визначаються шляхом перелічення в квадратних дужках через кому або з використанням інтервалу всіх елементів множини. В програмі можна, наприклад, так перевірити належність вибраного еклементу даній множині: … if ‘Ch’ in [‘a’..’p’,’r’,’s’,’u’,’w’] then … if x in [9,4..6] then … тут «in» - службове слово-оператор. 1.6. Рядкові змінні. Рядкові змінні – це одномірні упаковані масиви символів, для опису яких в Turbo Pascal введений тип String. Довжина рядка не може містити більше ніж 255 символів. Наприклад, якщо рядок містить до 30 символів, його тип буде визначений як: type s= String[30]; Рядок змінної довжини буде описуватись так: type s= String; Особливістю рядкових змінних є те, що до них можна звертатися як до скалярних змінних, так і як до масивів. У другому випадку застосовується конструкція “змінна з індексом”, що забезпечує доступ до окремих символів рядка, при цьому нижня границя індексу рівна 1. Окремі символи рядка сумісні з типом Char. В пам’яті ЕОМ рядок займає на кількість байтів, на 1 більше її довжини. Нульовий байт рядка містить її довжину. Для рядків визначені операції присвоєння, злиття і порівняння. Для порівняння рядків застосовуються всі операції відношення. Порівняння рядків відбувається посимвольно, починаючи з першого символу. Рядки рівні, якщо мають одинакову довжину і посимвольно еквівалентні. Рядки можуть бути елементами списку вводу-виводу, при цьому записується ім’я рядка без індексу. При вводі рядкових змінних кількість вводимих символів може бути менше. Ніж довжина рядка. В цьому випадку символи які вводяться розміщуються з початку рядка, а решту байтів заповнюються пробіли. Якщо кількість символів які вводяться перевершує довжину рядка, зайві символи відкидаються. Наведемо приклади оголошення типу string: … Var Str_1: String; {Рядок з максимальною довжиною в 255 літер} Str_2: String[3]; {Змінна, в якій може містити до трьох символів} Text_Isx: Array of Str_1; {Вихідний текст – масив рядків, кожен з яких може містити до 255 символів} … Після оператора присвоєння Str_1:=’Весна!’ довжина рядка Str_1 автоматично зменшиться з 255 до 6 символів – фактичної довжини рядка. Але після цього рядку Str_1 можна присвоїти рядок з любою довжиною до 255 символів: Str_1:=’Прийшла весна!’ В результаті присвоєння Str_2:=’Весна!’ в змінній Str_2 будуть знаходитись лише перші три символи слова Весна!. Доступ до окремих символів змінних типу string здійснюється так як і в масивах: Str_2[2]:=’у’; Str_2[3]:=’з’; Writeln(Str_2); до останнього в змінній Str_2 знаходилось слово «Вес», тому після заміни другої і третьої літери на «у» і «з» відповідно на екран дисплею виведеться слово «Вуз». Злиття рядків здійснює оператор кон’юнкції «+» або функція Concate: Str_1+Str_2+…+Str_n=Concate(Str_1,Str-2,…,Str_n); Стандартні процедури та функції для обробки рядків: Length(<рядкова змінна>) – функція, яка визначає довжину рядка. Pos(Str_1,Str_2) – функція, яка визначає номер першого символу рядка Str_1 при його першому появлені в рядку Str_2. Якщо Str_1 відсутній в Str_2, то функція повертає нуль. Copy(Str_x,p,n) – функція, яка копіює n символів рядка Str_x, починаючи з позиції p. Delete(Str_x,p,n) – процедура, яка видаляє n символів рядка Str_x починаючи з позиції p. Insert(Str_1,Str_2,p) – процедура, яка вставляє рядок Str_1 в рядок Str_2, починаючи з позиції p. Str(x[:<ширина>[:<дріб>]],Str_x) – процедура, яка перетворює число x в рядок, де <ширина> - ширина поля для всього числа, <дріб> - число знаків після десяткової коми. Val(Str_x,x,<помилка>) – процедура, яка здійснює перевід рядка Str_x в цілі або дійсні числа x, де <помилка> - змінна, в яку буде записано 0, якщо перетворення неможливо, і номер першого символу, який не може бути символом числа, в протилежному випадку. Кодова таблиця ASCII 2. ЗАВДАННЯ 2.1. Домашня підготовка до роботи 1. Ознайомитися з основними типами файлів і їх описом. 2. Вивчити основні процедури і функції для роботи з текстовими файлами. 3. Ознайомитись зі символьними і рядковими змінними. 4. Вивчити основні процедури та функції для роботи із символьними і рядковими змінними. 5. Дано текстовий файл, в якому міститься програма мовою Турбо Паскаль (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програми мовою Турбо-Паскаль для обробки текстового файлу з використанням розроблених процедур та функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови Турбо Паскаль. Дані для роботи беруться з табл.1 за вказівкою викладача. Таблиця 1 № п/п Завдання  1 Сформувати і вивести на екран текстовий файл, в якому вилучити символи “(” і “)”. Знайти кількість приголосних літер у кожному рядку.  2 Сформувати і вивести на екран текстовий файл, в якому всі символи “;” замінюються символом “!”. Обчислити суму цифр які зустрічаються в тексті.  3 Сформувати і вивести на екран текстовий файл, в якому містяться слова які починаються на голосні літери. Підрахувати кількість слів, в яких кількість символів більша трьох.  4 Сформувати і вивести на екран текстовий файл, в якому всі складені оператори “Begin” і “End” замінюються на “{” і “}” відповідно. Підрахувати кількість операторів циклу for і умовних операторів if.  5 Сформувати і вивести на екран текстовий файл, в якому після кожного рядка буде виведена цифра яка міститиме значення кількості літер в рядку. Замінити всі символи “(” і “)” на “[” і “]” відповідно.  6 Сформувати і вивести на екран текстовий файл, в якому символ “:=” замінити на символ “=”. Вивести список всіх зарезервованих слів використаних в програмі (без повторень).  7 Сформувати і вивести на екран текстовий файл, в якому пробіли замінюються символом підкреслення. Підрахувати кількість арифметичних операцій (+,-,*,/) у файлі.  8 Сформувати і вивести на екран текстовий файл, в якому символи “[” і “]” замінити на “(*” і “*)”. Вивести на екран номера рядків, в яких зустрічаються оператори циклів і умовний оператор.  9 Сформувати і вивести на екран текстовий файл, в якому залишити лише в одній кількості зарезервовані слова, решту замінити на символ “***”. Вивести на екран номери рядків, в яких зустрічаються цифри.  10 Сформувати і вивести на екран текстовий файл, в якому усі символи замінити на їх числове представлення в таблиці ASCII. Знайти суму усіх символів в кожному рядку.  11 Сформувати і вивести на екран текстовий файл зі стрічок, в яких вилучаються слова “for” та “then”. Вивести на екран номера рядків, в яких зустрічаються слова “PROCEDURE” та “FUNCTION”.  12 Сформувати і вивести на екран текстовий файл в якому не зустрічаються слова “for”, “then”, “іf”, “else”. Підрахувати кількість рядків, в яких кількість приголосних літер парна.  13 Сформувати і вивести на екран текстовий файл в якому усі голосні літери замінити на символ “*”. Вивести на екран кількість літер в кожному рядку файлу.  14 Сформувати і вивести на екран текстовий файл що містить лише послідовності символів, які містяться всередині операторних дужок “BEGIN” – “END”. Перевести в цих рядках символи в їх числове представлення і підрахувати їх суму.  15 Сформувати і вивести на екран текстовий файл в якому вилучити слова “do”, “to”, “for”. Вивести на екран рядки в яких містяться цифри і в кінці рядка дописати їх суму.  16 Сформувати і вивести на екран текстовий файл в якому всі приголосні літери замінити символом “@”. Вивести на екран рядки з парною кількістю символів.  17 Сформувати і вивести на екран текстовий файл в якому символи “+” замінюються словом “SUMA”, символи “-” замінюються символом “MULT”, символи “/” – замінюються символом “DIV”. Підрахувати і вивести на екран кількість символів “:=” у кожному рядку.  18 Сформувати і вивести на екран текстовий файл, в якому є лише слова які починаються на голосні літери. Вивести на кран всі числа які зустрічаються у файлі.  19 Сформувати і вивести на екран текстовий файл в якому голосні літери замінити на символ “1” а приголосні на симврол “0”. Підрахувати і вивести на екран кількість символів, які не являються символом “1” і “0”.  20 Сформувати і вивести на екран текстовий файл в якому видалити операторні дужки “BEGIN” і “END”. Підрахувати і вивести на екран кількість голосних і кількість приголосних літер в рядку.  21 Сформувати і вивести на екран текстовий файл в якому кожне число домножене на 10. Вивести на екран рядки з непарною кількістю літер.  22 Сформувати і вивести на екран текстовий файл в якому символи “;” замінені на “END_LINE”. Підрахувати кількість великих і малих літер у кожному рядку.  23 Сформувати і вивести на екран текстовий файл в якому усі літери які зустрічаються замінити послідовно на літери в алфавітному порядку. Вивести на екран непарні рядки файлу.  24 Сформувати і вивести на екран текстовий файл в якому симсвол “:=” замінити на “= =”. Підрахувати кількість непарних чисел у кожному рядку.  25 Сформувати і вивести на екран текстовий файл в якому замінити всі символи на їх числове значення в таблиці ASCII. Знайти і вивести на екран суму всіх чисел в кожному рядку.  26 Сформувати і вивести на екран текстовий файл в якому усі символи “+”, “-“, “*”, “/” замінити на числа в порядку зростання їх значень. Підрахувати і вивести на екран кількість літер в кожному рядку.  27 Сформувати і вивести на екран текстовий файл в якому видалити всі голосні літери. Підрахувати і вивести на екран кількість арифметичних операцій (+, -, *, /) у кожному рядку.  28 Сформувати і вивести на екран текстовий файл в якому присутні лиш стрічки з ключовими словами “FOR” і “THEN”. Підрахувати і вивести на екран кількість голосних літер в кожному рядку.  29 Сформувати і вивести на екран текстовий файл в якому усі малі літери замінити на великі. Підрахувати і вивести на екран кількість символів, які не є літерами у кожному рядку.  30 Сформувати і вивести на екран текстовий файл у якому вилучені рядки з парною кількістю символів. Вивести на екран суму усіх чисел у файлі.  31 Сформувати і вивести на екран текстовий файл в якому пробіл замінити символом “_”. Вивести на екран рядки з непарною кількістю символів.  32 Сформувати і вивести на екран текстовий файл в якому вилучені ключові слова “IF”, “THEN”, “FOR”. Вивести в кінці кожного рядка кількість голосних літер.  33 Сформувати і вивести на екран текстовий файл в якому видалити всі рядки, в яких непарна кількість символів. Вивести на екран суму голосних і суму приголосних літер в кожному рядку.  34 Сформувати і вивести на екран текстовий файл в якому видалити слово “FUNCTION” і “PROCEDURE”. Вивести на екран лише голосні літери в кожному рядку.  35 Сформувати і вивести на екран текстовий файл в якому заміть символів вивести їхнє числове представлення в таблиці ASCII. Вивести на екран кількість голосних і приголосних літер в кожному рядку.   2.2. Робота в лабораторії 1. Ввести в комп'ютер програми, написані мовою Турбо-Паскаль згідно з отриманим завданням. 2. Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками. 3. Остаточні версії блок-схем, програм та отримані результати занести у звіт з лабораторної роботи. 4. Здати звіт з лабораторної роботи. 3. ЗМІСТ ЗВІТУ 1. Номер і назва лабораторної роботи. 2. Повний текст завдання. 3. Остаточні версії блок-схем алгоритмів. 4. Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемах алгоритмів і програм, та їх пояснення. 5. Остаточні версії програм. 6. Результати роботи програм. 4. КОНТРОЛЬНІ ЗАПИТАННЯ СПИСОК ЛІТЕРАТУРИ Фаронов В.В. Программироаание на персональних ЗВМ а среде Тур-бо-Паскаль.- 2-е изд. - М.: Изд-во МГТУ, 1992. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.- М.: Финансы и статистика, 1982. 3. Сердюченко В.Я. Розробка алгоритмів та програмування на мові Turbo Pascal: Навчальний посібник для техн. вузів - X.: ВКП "Парітет" ЛТД, 1995. Навчальне видання Робота з текстовими файлами. Символьні та рядкові змінні: інструкція до лабораторної роботи №4 з курсу “Алгоритмічні мови і програмування” для студентів спеціальності 6.0914 “Комп'ютеризовані системи, автоматика і управління” та 6.1601 “Інформаційна безпека” Укладачі: ______________________________, Б.Д. Будз, асистент, О.І. Гарасимчук, асистент.
Антиботан аватар за замовчуванням

25.09.2012 01:09-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!