
- •Лабораторна робота №10
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (варіант 3, завдання №7)
- •Void ChangeStr(char **s1,int m)
- •3.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №11
- •Тема: Особливості роботи з одномірними динамічними масивами
- •Мета роботи: Отримання практичних навиків у роботі з одномірними динамічними масивами в мові c
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main()
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.2. Визначення змінних програми
- •3.3. Розробка тексту програми Крім файлів:
- •Int main(void) {
- •3.4. Налагодження програми
- •3.5. Результати роботи програми
- •Контрольні запитання
- •2. Теоретичні відомості
- •Int**array;
- •Void quart(int n, float * х)
- •Void main()
- •Void quart (int n, float X [ ])
- •3. Приклад розв’язання задачі на еом (варіант №30)
- •3.1. Розробка алгоритму вирішення
- •3.2. Представлення матриці в пам'яті
- •3.3. Визначення змінних програми (варіант 1)
- •Int size;
- •3.4. Розробка тексту програми (варіант 1)
- •Void fill(int *, int);
- •Void fill(int *a, int s) {
- •3.5. Відмінності для варіанту реалізації 3
- •Void fill(int far **, int);
- •Void fill(int far **a, int s) {
- •3.6. Налагодження програми
- •3.7. Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання роботи
- •1. Варіанти завдання Завдання 1
- •2. Теоретичні відомості
- •Void main( )
- •Void main( )
- •Void main( )
- •3.Стандартні функції для роботи зі стрічками (бібліотека string.H)
- •4. Приклади використання стандартних функцій для роботи зі стрічками
- •Функція аналогічна до stpcpy, strcpy, strncat
- •Функція аналогічна до strcspn, strrchr, strspn, strstr
- •Int far _fstrcmp(const char far *s1, const char far *s2);
- •Функція аналогічна до stpcpy, strncpy
- •- Size _t maxlen - максимальне число символів, які копіюємо з вихідної стрічки в результуючу.
- •Приклад: /*strncpy/cpp*/
- •5. Приклад розв’язання задачі на еом (варіант 2)
- •5.1. Розробка алгоритму вирішення
- •5.2 Розробка тексту програми
- •Int main()
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання роботи
- •1. Варіанти завдання
- •2. Теоретичні відомості
- •Void main( )
- •Приклади розробки функцій для обробки текстової інформації
- •Int len (char e[ ])
- •Int len (char *s)
- •Void invert(char e[ ])
- •Void main( )
- •Int index(char [ ], char [ ]);
- •Int row(char c1[ ], char c2[ ])
- •Void cone(char *c1, char *c2)
- •Void substr(char *c1, char *c2, int n, int k)
- •3. Приклад розв’язання задачі на еом (завдання 2, варіант 7)
- •Void ChangeStr(char **s1,int m)
- •4.3 Результати роботи програми
- •Контрольні запитання
- •Лабораторна робота №15
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості
- •Int pole2 ;
- •Приклад розв’язання задачі на еом (варіант №30)
- •Розробка алгоритму розв’язання задачі
- •Визначення змінних програми
- •Розробка тексту програми Текст програми починаємо з підключення файлу stdio.H.
- •Int main(void) {
- •If (!strcmp(mm[n].Name,"***")) break;
- •Контрольні запитання
- •Лабораторна робота №16
- •Порядок виконання роботи
- •1. Варіанти завдання
- •Теоретичні відомості Читання і запис текстових файлів
- •Int main ()
- •Приклад розв’язання задачі на еом (варіант 6)
- •Контрольні запитання
- •Лабораторна робота №17
- •Порядок виконання роботи
- •Варіанти завдання
- •Теоретичні відомості Читання і запис двійкових файлів
- •Відкриття двійкових фалів
- •Файли з послідовним доступом
- •Запис даних у файл c послідовним доступом
- •Int main()
- •If ( ! outf)
- •Int array[100];
- •Int main()
- •If ( ! inpf)
- •Int array[100];
- •Файли з довільним доступом
- •Int main()
- •If ( ! inpf)
- •Int main()
- •If ( ! outf)
- •Передача файлів між комп’ютерами.
- •Програмне підтвердження зв’язку
- •Перекачування файлу
- •Void send_file(fname)
- •Void wait(port)
- •Int port;
- •Прийом файлу
- •Void rec_file()
- •If(ferror(fp)) {
- •Void get_file_name(f)
- •Приклад розв’язання задачі на еом (варіант 10)
- •Контрольні питання
- •Література
Вступ
Мова програмування Сі створена в 1972 р. співробітником фірми Bell Laboratories Деннісом Річчі (Dennis M. Ritchie) при розробці операційної системи UNIX. Мова проектувалася як інструмент для системного програмування з орієнтацією на розробку добре структурованих програм. Вдале поєднання лаконічності конструкцій і багатства можливостей дозволило мові Сі швидко розповсюдитися і стати найпопулярнішою мовою прикладного і системного програмування. Компілятори мови Сі працюють майже на всіх типах сучасних ЕОМ в операційних системах UNIX, MS-DOS, Mac OS, OS/2, Windows, Windows NT, Solaris.
На відміну від багатьох мов програмування (Ада, Алгол-60, Алгол-68 і т.д.), які набували чинності після ухвалення відповідних національних і міжнародних стандартів, мова Сі спочатку була створена як робочий інструмент, що не претендує на широке використання. Стандарту на мову Сі до 1989 р. не існувало, і як формальний опис розробники компіляторів використовували перше видання книги Б.Кернігана і Д.Річчі, що вийшло в США в 1978 р. (перекладена на російську мову в 1985 р.). Роль неформального стандарту мови Сі збереглася за цією книгою і в даний час. Не випадково в літературі і документації по компіляторах посилання на цю роботу позначається спеціальним скороченням К&R.
Друге видання книги Б.Кернігана і Д.Річчі описує мова Сі в стандартизованому Американським інститутом національних стандартів вигляді (стандарт ANSI мови Сі). В даний час, окрім стандарту ANSI С, розроблений міжнародний стандарт ISO С (International Standard Organization С). Обидві версії стандарту близькі одна до одної, і на відмінностях між стандартами немає необхідності зупинятися до виникнення розбіжностей в тлумаченні тієї або іншої мови або при оцінці стандартності конкретного компілятора. Ці ситуації виходять за рамки курсу по програмуванню на мові Сі. У разі потреби отримання довідок за стандартами мови Сі слід звертатися до спеціальних публікацій, наприклад до "Тлумачного словника стандарту мови Сі" Р. Жешке. Неформальне використання книги K&R як стандарт до 1989 р. і подальша її переробка авторами відповідно до прийнятого стандарту ANSI призвели до того, що її і зараз можна розглядати як достовірне джерело при отриманні довідок по мові Сі.
Метою справжнього посібника є викладення методики і принципів коректного, структурованого програмування на мові Сі. Програми, що ілюструють конструкції і можливості мови, написані максимально зрозуміло для читача. Автори ніде не бігли за ефективністю коду в збиток його структурованості і простоти. Можливості сучасних компіляторів мови Сі такі, що вони дозволяють генерувати вельми ефективний код по тексту добре структурованої програми без спеціальних хитрощів програміста, направлених на підвищення швидкодії або незначну економію пам'яті.
Матеріал посібника відповідає учбовій програмі дисципліни "Алгоритмічні мови і програмування". Вивчення вказаної дисципліни, зокрема мови Сі, служить основою для курсів по математичному забезпеченню ЕОМ і мереж, по операційних системах, побудові компіляторів і системному програмуванню.
Автори сподіваються, що книга допоможе ліквідувати розрив між широко публікованим технічним керівництвом по реалізації мови Сі і потребами в методичному забезпеченні учбового процесу. Для читання книги достатньо знати основи інформатики. Тому допомогу можна використовувати як у вузі, так і в курсах інформатики шкіл, гімназій, ліцеїв і технікумів. Необхідною умовою освоєння матеріалу книги є виконання приведених в ній прикладів і рішення задач практикуму на будь-якій ЕОМ, забезпеченій транслятором з мови Сі.
Лабораторна робота №10
Тема: Основи структурного програмування. Особливості розробки функцій користувача
Мета: набуття навичок створення функцій користувача
Порядок виконання роботи
-
Ознайомитись з теоретичними відомостями.
-
Розробити описовий алгоритм, схему алгоритму та програму для виконання завдання 1.
-
Розробити описовий алгоритм, схему алгоритму та програму для виконання завдання 2.
-
Для правильної роботи програм розробити 4-6 тестів.
-
Скласти звіт за результатами лабораторної роботи.
-
Зробити висновки.
1. Варіанти завдання
Завдання 1
Варіант 1. Розробити функцію та програму, яка її використовує для визначення кількості цифр в рядку, введеному з клавіатури, і тести, що підтверджують правильність роботи програми.
Варіант 2. Розробити функцію та програму, яка її використовує для інвертування заданого рядка і тести, що підтверджують правильність роботи програми.
Варіант 3. Розробити функцію та програму, яка її використовує для визначення кількості слів у тексті, що вводиться з клавіатури і тести, що підтверджують правильність роботи програми.
Варіант 4. Розробити функцію та програму, яка її використовує для поділу рядка на підстроки довжиною в 5 символів кожна, не враховуючи пробіл, і тести, що підтверджують правильність роботи програми.
Варіант 5. Розробити функцію та програму, яка її використовує для копіювання з заданого тексту даної частини в рядок і тести, що підтверджують правильність роботи програми.
Варіант 6. Розробити функцію та програму, яка її використовує для злиття заданих рядків з тексту, що вводиться з клавіатури, і тести, що підтверджують правильність роботи програми.
Варіант 7. Розробити функцію та програму, яка її використовує для визначення рядка максимальної довжини в тексті, що вводиться з клавіатури, і тести, що підтверджують правильність роботи програми.
Варіант 8. Розробити функцію та програму, яка її використовує для пошуку в рядку STR кількість входжень підстроки STR1 і тести, що підтверджують правильність роботи програми.
Варіант 9. Розробити функцію та програму, яка її використовує для знаходження кількості однакових символів у слові, що вводиться з клавіатури, і тести, що підтверджують правильність роботи програми.
Варіант 10. Розробити функцію та програму, яка її використовує для перевірки, чи є заданий рядок паліндромом (таким, що читається в обох напрямках однаково), і тести, що підтверджують правильність роботи програми.
Завдання 2
Варіант 1. Дано масив стрічок. Розробити функцію та програму, яка її використовує, для визначення елементів масиву, що не перевищують задану довжину, і тести, що підтверджують правильність роботи програми.
Варіант 2. Розробити функцію, яка записує даний масив в зворотному порядку та програму, яка її використовує, і тести, що підтверджують правильність роботи програми.
Варіант 3. Розробити функцію, яка визначає довжину кожної стрічки та додає в кінець стрічки її довжину, та програму, яка її використовує, і тести, що підтверджують правильність роботи програми.
Варіант 4. Розробити функцію, яка визначає максимальну і мінімальну довжини стрічок в масиві і міняє їх місцями, та програму, яка її використовує, і тести, що підтверджують правильність роботи програми.
Варіант 5. Розробити функцію та програму, яка її використовує, для визначення кількості входжень даного символу в кожен елемент(строку) масиву і тести, що підтверджують правильність роботи програми.
Варіант 6. Розробити функцію, яка відсортовує масив стрічок в порядку спадання, при чому, якщо є стрічки однакової довжини, то одна із них видаляється, та програму, яка її використовує, і тести, що підтверджують правильність роботи програми.
Варіант 7. Розробити функцію, яка міняє і-ту стрічку з і+1, де і змінюється від 1 до N, N–кількість елементів масиву, та програму, яка її використовує, і тести, що підтверджують правильність роботи програми.
Варіант 8. Дано два масиви стрічок. Розробити функцію та програму, яка її використовує, яка порівнює довжини відповідних стрічок і у випадку, коли довжина певної стрічки в одному масиві перевищує довжину відповідної їй стрічки в іншому масиві, то на місце довшої записати меншу, а на місце меншої – XYZ, і тести, що підтверджують правильність роботи програми.
Варіант 9. Розробити функцію яка її використовує, яка визначає довжину стрічки, яка кратна 3 та замінює її на перші 5 символів наступної стрічки, і тести, що підтверджують правильність роботи програми.
Варіант 10. Розробити функцію та програму, яка її використовує для поділу кожного рядка масиву на підстроки довжиною в 4 символи кожна, не враховуючи пробіл, і тести, що підтверджують правильність роботи програми.