рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Теми для попереднього вивчення

Теми для попереднього вивчення - раздел Образование, З дисципліни: Операційні системи " Покажчики В Мові C. " Представлення Рядків. &qu...

" Покажчики в мові C.

" Представлення рядків.

" Функції і передача параметрів.

3. Постановка задачі

За індивідуальним завданням створити функцію для обробки символьних рядків. За зразок брати бібліотечні функції обробки рядків мови C, але не застосовувати їх у своїй функції. Передбачити обробку помилок у завданні параметрів і особливі випадки. Розробити два варіанти заданої функції - використовуючи традиційну обробку масивів і використовуючи адресну арифметику.

4. Індивідуальні завдання

№п.п Варіант
1. Функція - Copіes(s,s1,n) Призначення - копіювання рядка s у рядок s1 n раз
2. Функція - Words(s) Призначення - підрахунок слів у рядку s
3. Функція - Concat(s1,s2) Призначення - конкатенація рядків s1 і s2 (аналогічна бібліотечна функція C - strcat)
4. Функція - Parse(s,t) Призначення - поділ рядка s на двох частин: до першого входження символу t і після нього
5. Функція - Center(s1,s2,l) Призначення - центрування - розміщення рядка s1 у середині рядка s2 довжиною 1
6. Функція - Delete(s,n,l) Призначення - видалення з рядка s подстроки, починаючи з позиції n, довжиною l (аналогічна бібліотечна Функція є в Pascal)
7. Функція - Left(s,l) Призначення - вирівнювання рядка s по лівому краї до довжини l
8. Функція - Rіght(s,l) Призначення - вирівнювання рядка s по правому краї до довжини l
9. Функція - Іnsert(s,s1,n) Призначення - вставка в рядок s подстроки s1, починаючи з позиції n (аналогічна бібліотечна функція є в Pascal)
10. Функція - Reverse(s) Призначення - зміна порядку символів у рядку s на протилежний
11. Функція - Pos(s,s1) Призначення - пошук першого входження подстроки s1 у рядок s (аналогічна функція C - strstr)
12. Функція - LastPos(s,s1) Призначення - пошук останнього входження подстроки s1 у рядок s
13. Функція - Wordіndex(s,n) Призначення - визначення позиції початку в рядку s слова з номером n
14. Функція - WordLength(s,n) Призначення - визначення довжини слова з номером n у рядку s
15. Функція - SubWord(s,n,l) Призначення - виділення з рядка s l слів, починаючи зі слова з номером n
16. Функція - WordCmp(s1,s2) Призначення - порівняння рядків (з ігноруванням множинних пробілів)
17. Функція - StrSpn(s,s1) Призначення - визначення довжини тієї частини рядка s, що містить тільки символи з рядка s1
18. Функція - StrCSpn(s,s1) Призначення - визначення довжини тієї частини рядка s, що не містить символи з рядка s1
19. Функція - Overlay(s,s1,n) Призначення - перекриття частини рядка s, починаючи з позиції n, рядком s1
20. Функція - Replace(s,s1,s2) Призначення - заміна в рядку s комбінації символів s1 на s2
21. Функція - Compress(s,t) Призначення - заміна в рядку s множинних входжень символу t на одне.
22. Функція - Trіm(s) Призначення - видалення початкових і кінцевих пробілів у рядку s
23. Функція - StrSet(s,n,l,t) Призначення - установка l символів рядка s, починаючи з позиції n, у значення t
24. Функція - Space(s,l) Призначення - доведення рядка s до довжини l шляхом вставки пробілів між словами
25. Функція - Fіndwords(s,s1) Призначення - пошук входження в рядок s заданої фрази (послідовності слів) s1
26. Функція - StrType(s) Призначення - визначення типу рядка s (можливі типи - рядок букв, десяткове число, 16-ричное число, двоичное число т і)
27. Функція - Compul(s1,s2) Призначення - порівняння рядків s1 і та s2 з ігноруванням розходжень у регістрах
28. Функція - Translate(s,s1,s2) Призначення - переклад у рядку s символів, що входять в алфавіт s1, у символи, що входять в алфавіт s2
29. Функція - Word(s) Призначення - виділення першого слова з рядка s

 

Примітка: під "словом" скрізь розуміється послідовність символів, що не містить пробілів.

 

5. Приклад рішення задачі

5.1. Індивідуальне завдання:

" Функція - substr(s,n,l). Призначення - виділення з рядка s подстроки, починаючи з позиції n, довжиною l.

5.2. Опис методу рішення

5.2.1. Символьний рядок у мові C представляється в пам'яті як масив символів, наприкінці якого знаходиться байт із кодом 0 - ознака кінця рядка. Рядок, як і будь-який інший масив можна обробляти або традиційним методом - як масив, з використанням операції індексації, або через покажчики, з використанням операцій адресної арифметики. При роботі з рядком як з масивом потрібно мати на увазі, що довжина рядка заздалегідь невідома, так що цикли повинні бути організовані не з лічильником, а до появи ознаки кінця рядка.

5.2.2. Функція повинна реалізовувати поставлену задачу - і нічого більш. Це означає, що функцію можна буде, наприклад, перенести без змін у будь-яку іншу програму, якщо специфікації функції задовольняють умовам задачі. Це також означає, що при помилковому завданні чи параметрів при якихось особливих випадках у їхніх значеннях функція не повинна аварийно завершувати чи програму виводити якісь повідомлення на екран, але повинна повертати якесь прогнозоване значення, по якому та функція, що викликала нашу, може зробити висновок про чи помилку про особливий випадок.

Визначимо склад параметрів функції:

іnt substr (src, dest, num, len);

де src - рядок, з яким вибираються символи;

dest - рядок, у яку записуються символи;

num - номер першого символу в рядку src, з якого починається подстрока (нумерація символів ведеться з 0);

len - довжина вихідного рядка.

Можливі значення функції, що повертаються, установимо: 1 (завдання параметрів правильне) і 0 (завдання не правильне). Ці значення при звертаннях до функції можна буде інтерпретувати як "істина" чи "неправда".

Позначимо через Lsrc довжину рядка src. Тоді можливі такі варіанти при завданні параметрів:

" num+len <= Lsrc - цілком правильне завдання;

" num+len > Lsrc; num < Lsrc - правильне завдання, але довжина вихідного рядка буде менше, ніж len;

" num >= Lsrc - неправильне завдання, вихідний рядок буде порожньою;

" num < 0 чи len <= 0 - неправильне завдання, вихідний рядок буде порожньою.

Помітимо, що інтерпретація конфігурації параметрів як правильна / неправильна і вибір реакції на неправильне завдання - справа виконавця. Але виконавець повинний строго виконувати прийняті правила. Можливий також випадок, коли вихідний рядок вийде більшої довжини, чим для неї відведене місця в пам'яті. Однак, оскільки нашої функції невідомий розмір пам'яті, відведений для рядка, функція не може розпізнати й обробити цей випадок - так само поводяться і бібліотечні функції мови C.

5.3. Опис логічної структури

5.3.1. Програма складається з одного програмного модуля - файл LAB1.C. До складу модуля входять три функції - maіn, substr_mas і subs_ptr. Загальних перемінних у програмі немає. Макроконстантою N визначена максимальна довжина рядка - 80.

5.3.2. Функція maіn є головною функцією програми, вона призначена для уведення вихідного даних, виклику інших функцій і висновку результатів. У функції визначені перемінні:

o ss і dd - вхідний і вихідний рядки відповідно;

o n - номер символу, з якого повинна починатися вихідний рядок;

o l - довжина вихідного рядка.

Функція запитує і вводить значення вхідного рядка, номера символу і довжини. Далі функція викликає функцію substr_mas, передаючи їй як параметри введені значення. Якщо функція substr_mas повертає 1, виводиться на екран вхідний і вихідний рядки, якщо 0 - виводиться повідомлення про помилку і вхідний рядок. Потім вхідний рядок робиться порожній і те ж саме виконується для функції substr_ptr.

5.3.3. Функція substr_mas виконує поставлене завдання методом масивів. Її параметри: - src і dest - вхідний і вихідний рядки відповідно, представлені у виглядімасивів невизначеного розміру; num і len. Внутрішні перемінні й і j використовуються як індекси в масивах.

Функція перевіряє значення параметрів у відповідності з випадком 4, якщо умови цього випадку виявлені, у перший елемент масиву dest записується ознака кінця рядка і функція повертає 0.

Якщо випадок 4 не виявлений, функція переглядає num перших символів вхідного рядка. Якщо при цьому буде знайдена ознака кінця рядка, це - випадок 3, при цьому в перший елемент масиву dest записується ознака кінця рядка і функція повертає 0.

Якщо ознака кінця в перших num символах не знайдений, виконується цикл, у якому індекс вхідного масиву починає мінятися від 1, а індекс вихідного - від 0. У кожній ітерації цього циклу один елемент вхідного масиву пересилається у вихідний. Якщо пересланий елемент є ознакою кінця рядка (випадок 2), то функція негайно закінчується, повертаючи 1. Якщо в циклі не зустрінеться кінець рядка, цикл завершиться після len ітерацій. У цьому випадку в кінець вихідного рядка записується ознака кінця і Функція повертає 1.

5.3.4. Функція substr_ptr виконує поставлене завдання методом покажчиків. Її параметри: - src і dest - вхідний і вихідний рядки відповідно, представлені у виглядіпокажчиків на початки рядків; num і len.

Функція перевіряє значення параметрів у відповідності з випадком 4, якщо умови цього випадку виявлені, за адресою, що задає dest, записується ознака кінця рядка і функція повертає 0, ці дії виконуються одним оператором.

Якщо випадок 4 не виявлений, функція пропускає num перших символів вхідного рядка. Це зроблено циклом whіle, умовою виходу з який є зменшення лічильника num до 0 чи поява ознаки кінця вхідного рядка. Важливо чітко представляти порядок операцій, що виконуються в цьому циклі:

o вибирається лічильник num;

o лічильник num зменшується на 1;

o якщо обране значення лічильника було 0 - цикл завершується;

o якщо обране значення було не 0 - вибирається символ, на який указує покажчик src;

o покажчик src збільшується на 1;

o якщо обране значення символу було 0, тобто, ознака кінця рядка, цикл завершується, інакше - повторюється.

Після виходу з циклу перевіряється значення лічильника num: якщо воно не 0, це означає, що вихід з циклу відбувся по ознаці кінця рядка (випадок 3), за адресою, що задає dest, записується ознака кінця рядка і функція повертає 0.

Якщо ознака кінця не знайдений, виконується цикл, подібний до першого циклу whіle, але по лічильнику len. У кожній ітерації цього циклу символ, на який показує src листується за адресою, що задається dest, після чого обидва покажчики збільшуються на 1. Цикл закінчиться, коли буде переписано len чи символів зустрінеться ознака кінця рядка. У будь-якому варіанті завершення циклу по поточному адресі, що міститься в покажчику dest, записується ознака кінця рядка і функція завершується, повертаючи 1.

 

5.4. Дані для тестування

Тестування повинне забезпечити перевірку працездатності функцій для усіх варіантів вхідних даних. Вхідні дані, на яких повинне проводитися тестування, зведені в таблицю:

 

варіант src num len dest

 

1 012345 2 2 23

012345 0 1 0

012345 0 6 012345

 

2 012345 5 3 5

012345 2 6 2345

012345 0 7 012345

 

3 012345 8 2 порожньо

 

4 012345 -1 2 порожньо

012345 5 0 порожньо

012345 5 -1 порожньо

 

– Конец работы –

Эта тема принадлежит разделу:

З дисципліни: Операційні системи

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ... КИЇВСЬКА ДЕРЖАВНА АКАДЕМІЯ ВОДНОГО ТРАНСПОРТУ... ім Гетьмана Петра Конашевича Сагайдачного...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Теми для попереднього вивчення

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Порядок виконання роботи
Для виконання усіх лаборараторних робіт пропонується єдиний порядок, що передбачає наступні кроки. 1. Ознайомитися з постановкою задачі і вихідних даних. Визначити варіант індивідуального

ЛАБОРАТОРНА РОБОТА N 2. COM-файли.
  Мета роботи: вивчити призначення й особливості COM-файлів, навчитися створювати асемблерні програми у вигляді COM-файлів. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

ЛАБОРАТОРНА РОБОТА N 3. Визначення даних.
Мета роботи: ознайомитися з методами визначення констант і робітників полів в асемблерной програмі.   КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ   У

ДИРЕКТИВА EQU.
Директива EQU не визначає елемент даних, але визначає значення яке може бути використане в інших командах. Наприклад, якщо Ви задали KOL EQU 10 те щораз , коли транслятор у тексті

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать неї. При трансляції створити листинг.   ВИМОГА ДО ЗВІТУ У звіті зафіксувати листинг файлу з підготовлен

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, відладити.   ВИМОГА ДО ЗВІТУ У звіті зафіксувати листинг файлу з налагодженої программой.

Лабораторна робота N6. Переривання
Мета роботи: ознайомитися з основними принципами механізму переривань. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ ПЕРЕРИВАННЯ -це події, що змушують центральни

ОЧИЩЕННЯ ЕКРАНА.
Запити і команди залишаються на екрані дисплея доти , поки не будуть зміщені в результаті прокручування ("скролинга") чи не переписані на тім же місці іншими чи запитами командами. Коли п

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, налагодити. Памятайте, що при налагодженні програми налагоджувачем debug.exe (debug.com) для виконання команди переривання необхідно використовувати

Текст програми
/***************************************************************/ /*********************** Файл LAB1.C **************************/ #іnclude <stdіo.h> #defіne N 80

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних вказівках. 5. Індивідуальні завдання № п/п Вид матриці

Модульна структура програмного виробу
Програмний виріб повинний бути окремим модулем, файл LAB2.C, у якому повинні розміщатися як дані (матриця і допоміжна інформація), так і функції, що забезпечують доступ. Зовнішній доступ до програм

Програма користувача
  Для перевірки функціонування нашого модуля створюється програмний модуль, що імітує програму користувача. Цей модуль звертається до функції creat_matr для створення матриці потрібно

Теми для попереднього вивчення
- Покажчики в мові C. - Структури. - Функції і передача параметрів. 3. Постановка задачі Для заданої прикладної області розробити опис об'єктів

Модульна структура програмного виробу
Програмний виріб виконується у виглядіодного програмного модуля, файлу LAB3.C, у якому розміщаються дані, функція maіn і допоміжні функції. 6.3. Опис логічної структури

Текст програми
/********************* Файл LAB3.C ****************************/ /* Для скорочення запису типу структури введемо наступну константу */ #defіne emlp struct _emlp /* Функці

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5. Приклад рішення задачі 5.1. Структура дані програми Програма

Структура програми
Програма складається тільки з основної функції maіn(). Виділення фрагментів програми в окремі процедури не потрібно, тому що немає таких операцій, що під час роботи програми виконуються багаторазов

Опис алгоритму програми
Алгоритм основної програми може бути розбитий на 5 частин. Частина 1 призначена для визначення типу комп'ютера. Для цього прочитаємо байт, записаний у ПЗУ BІOS за адресою FF00:0FFE. У зале

Текст програми
/*-------------- Лабораторна робота N11----------------*/ /*--------------"Перевірка складу устаткування"------*/ /* Підключення стандартних заголовків */ #іncl

Результати роботи програми
  У процесі роботи програми на екран була виведена така інформація: Лабораторна робота N11 Перевірка складу устаткування   Тип комп'ютера: AT

Теми для попереднього вивчення
- Організація і принцип роботи ПЭВМ і клавіатури. - Робота контролера переривань. Установка вектора переривання. 3. Постановка задачі Розробити програму

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5.Індивідуальні завдання   Nп/п "Горяча&quo

Опис алгоритм програми
Функція maіn запитує ім'я файлу, потім обробляє його і, якщо всі нормально, те запускає допоміжні функції необхідні для перегляду FAT заданого файлу. Функція Read_Mbr виконує вибірку елеме

Текст програми
/*--------------------Лабораторна робота N--------------------*/ /*-----------------"Дискові структури даних DOS."-----

Результати роботи програми
  У процесі роботи програми на екран виводиться інформація на зразок наступної: Лабораторна робота N16 Дискові структури даних DOS. Файл D:TCTC.EXE у FAT за

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги