- •З дисципліни “Системне програмування”
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1
- •1 Короткі теоретичні відомості
- •1.4 Основні типи даних. Основні типи даних наведено в таблиці.
- •1.5 Операції.
- •Int printf (фороматний рядок, [, argument, ...]);
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Лабораторна робота № 2
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 3
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 4
- •1 Короткі теоретичні відомості
- •1.2 Опис масивів. Ім’я масиву це звичайний ідентифікатор. Він має бути унікальним, за ним іде розмірність. Розмір масиву може бути як літеральна константа, так і символьна.
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •1.5 Одновимірні масиви. Одномірні масиви. Одномірний масив має один індекс.. Індекс – це номер в квадратних дужках після імені масиву.
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •5 Питання вихідного контролю
- •Лабораторна робота № 5
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 6
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Лабораторна робота № 7
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 8
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Лабораторна робота № 11
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Практична робота № 1
- •1 Короткі теоретичні відомості
- •1.1 Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •Оператор виконує наступні дії:
- •Приклад: Написати програму, яка виводить на екран числа від 1 до 7.
- •Оператор while виконує наступні дії:
- •Приклад: Вивести на екран додатні числа менші від 10.
- •Оператор виконує наступні дії:
- •2 Питання вхідного контролю
- •3 Постановка завдання на використання оператора switch
- •4 Варіанти індивідуальних завдань на використання оператора switch
- •5 Варіанти індивідуальних завдань на оператори циклів
- •6 Методичні вказівки
- •7 Приклад розв’язку завдання
- •8 Питання вихідного контролю
- •Практична робота № 2
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи
- •5 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Список рекомендованої літератури
4 Методичні вказівки
1 Уважно прочитати умову задачі з індивідуального завдання. Визначити, що має бути отримано в результаті її розв'язку, які дані потрібно ввести.
2 Використати знання про вказівники, операції над ними, правила адресної арифметики.
3 Звернути увагу на типи даних, що будуть використані в програмі.
4 Ввести текст програми і запустити програму на компіляцію. У випадку необхідності виправити синтаксичні помилки.
5 Запустити програму на виконання, записати одержані результати.
5 Приклад розв’язку завдання
Описати і задати 2 масиви типу char і int розмірністю 4. Вивести значення елементів масивів з використанням адресної арифметики і без неї.
Описати і задати змінну data типу int. Описати і задати вказівник на неї. Вивести на екран адресу цієї змінної з допомогою операції взяття адреси і самої змінної-вказівника (операція посилання по вказівнику).
Текст програми
#include<stdio.h>
#include<conio.h>
char A[4]={3,7,6,3};
int B[4]={4,6,2,9},i,data=7,*p_data;
void main()
{
clrscr();
p_data=&data;
for(i=0;i<4;i++) printf("A[%d]=%d\t",i,*(A+i)); printf("\n");
for(i=0;i<4;i++) printf("A[%d]=%d\t",i,A[i]); printf("\n");
for(i=0;i<4;i++) printf("B[%d]=%d\t",i,*(B+i)); printf("\n");
for(i=0;i<4;i++) printf("B[%d]=%d\t",i,B[i]); printf("\n");
printf("p_data=%ld\t p_data=%ld\n",&data,p_data);
}
6 Питання вихідного контролю
Чи можна вказівники описувати разом зі змінними?
Що означає операція зміщення над вказівниками?
Що називається адресною арифметикою?
Що означає інкрементування вказівників?
Який зв’язок між елементами масиву і вказівниками.
Лабораторна робота № 7
Тема: Складання програм для опрацювання символьної інформації
Мета роботи: Навчитись описувати, задавати і обробляти символьну інформацію засобами мови C, а також працювати з символьними даними і текстовою інформацією.
1 Короткі теоретичні відомості
1. Поняття символу. Під символом ми розуміємо букву, цифру та інші знаки. Рядок - це послідовність символів. В рядках зберігається текстова інформація.
Задачі вводу, обробки, аналізу та виводу символьної інформації належать до найбільш поширених задач комп’ютерних інформаційних технологій. Текстові дані є важливою складовою практично кожної програми. Від коректно організованих задач обробки текстової інформації в значній мірі залежить якість і практична цінність програми.
Практичне значення має задача аналізу символів в текстовій інформації, в залежності від деяких умов. З її допомогою можна виявити чи є символ буквою, цифрою чи розділовим знаком. Такого роду перевірки можуть виявитися корисними при вводі цифрової (наприклад, банківської) або текстової інформації, а також при розробці власних функцій введення даних. Розглянуто також задачу пошуку і виділення слів (лексем) у фразах.
В мові С для зберігання окремих символів використовується тип даних char. Раніше було сказано, що тип char це цілочисельний тип. Як же він може описувати змінні символьного типу. На це питання можна відповісти, розглянувши представлення символьної інформації в комп’ютері. В пам’яті комп’ютера всі дані зберігаються в числовій формі, тобто кожному символу відповідає числовий код.
Сукупність кодів окремих символів утворює код ASCII (American Standard Code for Information interchange - американський стандартний код обміну інформацією). В цьому наборі буквам верхнього і нижнього регістрів, цифрам та іншим символам ставиться у відповідність число від 0 до 255.
Наприклад маленька латинська буква a представлена числом 97. Поміщуючи символ a в змінну типу char, ми фактично поміщаємо число 97. Оскільки діапазон допустимих значень змінної даного типу від 0 до 255, то цей тип найбільше підходить до зберігання символів. Оскільки змінна типу char зберігає як цілі числа так і символи, то їх розрізняють по контексту.
кщо змінна типу char використовується в програмі, де очікується символьна інформація, то її значення інтерпретується як символ.
Якщо змінна типу char використовується в програмі, де очікується числова інформація, то її значення інтерпретується як число.
2. Опис символів. Змінні символьного типу повинні бути описані до їх використання. Вони описуються за допомогою службового слова char. Синтаксис опису:
char a, b, c;
При описі змінні символьного типу можна задавати. Змінні символьного типу задаються в одиничних лапках.
char d=’x’; /* при описі */
d=’x’; /* оператор присвоєння */
Можна створювати іменовані символічні константи
const char a=’z’;
Для задання констант також використовуються одиничні лапки.
Приклад програми для виводу змінної c1 в виді числа і в виді символу
printf(«%с», с1); /* вивід змінної с1 як символу */
printf(«%d», с1); /* вивід змінної с1 як числа */
3. Масиви символів. Рядки, які є послідовністю символів, задаються масивами символів. Синтаксис опису масиву символів::
char string[10];
В цьому масиві можна зберігати дев’ять символів можна зберігати і менше символів. Чому в масиві, який містить 10 елементів, можна зберігати 9 символів.? В мові С рядки визначаються як послідовність символів, що закінчується нульовим символом. Нульовий символ - це спеціальний символ, який позначається \0. Хоч він записується в виді двох знаків (оберненої риски і 0) компілятор сприймає його як один символ, що відповідає коду ASCII ‘0’. Це є спеціальний символ мови С. В чому ж різниця між рядками і масивами символів? По означенню рядок –це послідовність символів з завершуючим символом \0 Масив по означенню являє собою послідовність символів. Тому рядок –це масив символів з завершуючим нульовим символом.
Наприклад в рядку
fghhjkg є 7 символів і ще нульовий символ \0 всього вісім.
4. Задання символьних масивів. Масиви можуть задаватися при описі.
сhar r[10]={‘a’,’b’,’c’,’d’, ‘\0’}; але вигідніше використовувати рядкові літерали, тобто послідовності символів в подвійних лапках.
char r[10]=’’abcd’’;
Кожний раз, коли в програмі використовується рядковий літерал, компілятор автоматично додає нульовий символ в кінець рядка. Якщо при описі і заданні масиву символів опустити його довжину, то компілятор сам порахує довжину масиву по довжині літералу
char r[]=’’abcd’’; Цей рядок – це+ масив з 5-ти елементів.
5. Вивід символів за допомогою функції putchar(). Функція призначена для виводу символів на екран. Прототип функції знаходиться в бібліотечному файлі stdio.h і має вид
