- •Міністерство транспорту та зв'язку україни
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1-2
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Порядок виконання лабораторної роботи
- •7 Контрольні запитання
- •Лабораторна робота № 3 Тема: "Програмування розгалужених обчислювальних процесів з використанням умовних операторів"
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •Синтаксис оператора
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Контрольні запитання
- •Лабораторна робота № 4
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 6-7
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 8
- •2 Постановка завдання
- •3 Приклад виконання лабораторної роботиІндивідуальне завдання
- •4 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 11-12
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 13-14
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 15
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 16
- •1 Короткі теоретичні відомості
- •Int strcmp(const chart *str1, const chart *str2);
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 17-18
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 19
- •1 Короткі теоретичні відомості
- •2 Завдання практичної роботи
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 20
- •1 Короткі теоретичні відомості
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 21
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1. Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 1-2
- •1 Короткі теоретичні відомості
- •Оператор виконує наступні дії:
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Постановка завдання
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи Завдання
- •Програма розв'язку
- •5 Контрольні запитання
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальни х завдань
- •4 Методичні вказівки
- •5 Приклад виконання практичної роботи
- •6 Контрольні запитання
- •Практична робота № 5
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Практична робота № 6
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •2 Завдання практичної роботи:
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •Програма розв'язку
- •4 Контрольні запитання
- •Список рекомендованої літератури
3 Методичні вказівки
Перед написанням програми ще раз переглянути теоретичний матеріал і приклади програм, що ілюструють особливості обробки символьної інформації. Окрему увагу звернути на способи задання рядків.
Для роботи з бібліотечними функціями для обробки символьної інформації підключити бібліотечний файл string.h.
Уважно прочитати умову задачі індивідуального завдання, продумати алгоритм її розв'язку, вибрати потрібну бібліотечну функцію для роботи з символьними рядками.
Відкомпілювати програму і виконати її. Зафіксувати результати кожної реалізації.
4 Приклад виконання лабораторної роботи
Знайти довжину трьох заданих символьних рядків за допомогою функції strlen(). Результати вивести на екран. Приєднати другий рядок в кінець першого, а третій - в кінець другого, результатуючі рядки вивести на екран.
Текст програми
# include <string.h>
# include <stdio.h>
char a1[]=”qwerett”;
char a2[20]=”qyuwerp[ett”;
char a3[255]=”qwerett”;
int l1,l2,l3;
void main()
{/* Знаходження довжин рядків */
l1=strlen(a1);
l2=strlen(a2);
l3=strlen(a3);
/* Вивід довжин рядків */
printf(“l1=%d\t l2=%d\t l3=%d\n”);
strcat(a1,a2);
strcat(a2,a3);
puts(a1);
puts(a2); }
5 Контрольні запитання
Що таке довжина рядка і як її можна визначити?
Що таке рядок в мові С?
Що необхідно зробити перед копіюванням рядка?
В чому різниця між функціями strcmp() і strcnmp()?
, В чому різниця між функціями strcpy() i strncpy()?.
За допомогою якої функції порівнюють рядки?
Лабораторна робота № 17-18
Тема: Складання програм на використання структур даних
Мета роботи: Вивчити способи опису і ініціалізації масивів структур та здобути практичні навики роботи з ними.
1 Короткі теоретичні відомості
Структури це складні конструкції даних на мові С. Структура являє собою нестандартний об’єкт для зберігання різних даних.
Прості структури. Опис і визначення структур. Структура - це сукупність декількох змінних під одним іменем., які розглядаються як одне ціле. На відміну від масивів змінні в структурах можуть мати різні типи. Змінні в структурі називаються її членами або полями. Структури можуть містити дані будь-яких типів, в тому числі масиви і інші структури.
Наприклад, координати точки містять горизонтальну і вертикальну складові, тому
Struct coord
{ int x;
iny y; }
Описати структуру фактично можна двома способами
Список імен змінних ставиться після визначення структури
Struct coord
{ int x;
iny y; } x1, y1;
В цьому операторі визначається структурний тип coord і описуються дві структури цього типу x1, y1. Ці дві структури є екземплярами типу coord - кожна з них містьть дві цілочисельні змінні x і y. При такому способі визначення структурного типу суміщається з описом його екземплярів.
Опис екземплярів поміщається окремо від визначення типу. Приклад
Struct coord
{ int x;
iny y; }
оператори;
Struct coord x1, y1;
Звернення до полів структури. Окремі елементи структури можуть використовуватися як прості змінні. Щоб одержати їх значення з структури, використовується знак операції звернення до елементів структури. (.). , який являє собою крапку між іменем структури і іменем елемента поля. Щоб структура x1 містила координати x=50 і y=100, треба записати.
x1.x=50; x1.y=100;
Вивід елементів структури y1:
printf(“%d, %d”, y1.x, y1.y);
Перевага структур та, що копіювати інформацію з одної структури в іншу можна простим присвоюванням.
х1=y1; Цей оператор еквівалентний двом операторам
x1.x=y1.x; x1.y=y1.y;
Якщо в програмі використовуються складні структури з великою кількістю елементів, то такий запис може зекономити час. Приклад
#include <stdio.h>
#include <stdlib.h>
int length, width;
long area;
struct coord{
int x; /* Тіло структури*/
int y;
} k /*описаний екземпляр структури coord - змінна k типу структури */;
void main(){
k.x = 12;
k.y = 15;
printf("\Координати точки : (%d, %d).",
k.x, k.y); }
/* Результат Координати точки : (12, 14). */
Це можна було записати
struct coord k;
Ключове слово struct. (синтаксис).
Struct мітка {
елементи структури;
/* Додаткові оператори */ } екземпляр;
З допомогою ключового слова struct визначаються структурні типи і описуються структури. Елементами структури є прості змінні, вказівники і інші структури.
Приклад 1./*Визначення шаблону структури під іменем s1*/
struct s1 {
int a1;
char a2;
short a3;
int a4; }
/* Використання шаблону для опису структури nst1*/
struct s1 nst1;
Структури, які містять масиви. Структури в ролі елементів(полів) містять масиви. В прикладі визначений структурний тип data, який містить цілочисельний масив з 4-х елементів і символьний масив з 10-ти елементів.
struct data
{ int x[4];
char y[10]; } ;
Опис змінної record цього типу
struct data record;
На рис. елементи мас. х займають вдвоє більше місця, ніж елементи масиву y.
record
record.x[0] |
record.x[0] |
record.x[0] |
record.x[0] |
Record.x |
| ||||||
rd.y[0] |
rd.y[1] |
rd.y[2] |
rd.y[3] |
rd.y[4] |
rd.y[5] |
rd.y[6] |
rd.y[7] |
Record.y[8] |
rd.y[9] |
Record.y |
Щоб звернутися до окремого елементу масиву, який є полем структури, використовується комбінація крапки і індексу масиву.
record.x[2]=100; Record.y[1]=’x’;
Оскільки ім’я масиву це вказівник на цей масив, тому вміст масиву y[] в структурі record можна вивести так
puts(record.y);
Масиви структур. Структури можна зберігати в масивах.. Масиви структур є потужним засобом програмування. Наприклад, структура entry
struct entry { Визначення структури
char fname[10];
char lname[12];
char phone[8]; }
struct entry list[100]; Опис структури з іменем list, яка є масивом з ста елементів. Кожний елемент являє собою структуру типу entry, в якій міститься три поля, причому ці поля - масиви типу char. Елемент розпізнається по індексу.
Для присвоєння даних з одного елементу масиву в другий можна записати
List[1]=list[5];
Цей оператор присвоює всім полям структури List[1] значення відповідних полів структури List[5]
Strcpy(list[1].phone, list[5].phone);
Копіює рядок list[5].phone в рядок list[1].phone.
Вказівники можуть бути елементами структури. Приклад
struct data
{int *value;
int *rate;
} first;
Обидва елементи структури є вказівниками на int. Вказівники треба ще задати, тобто просвоїти їм адреси змінних, які описані int. Приклад
First.value=&a1;
First.rate=&a2; де a1 і a2 змінні цілого типу.
Тепер вказівники мають конкретне значення і до них можна звернутися з допомогою операції посилання по вказівнику (*)
Вираз
*First.value=значенню змінної a1;
*First.rate=значенню змінної a2;
Приклад структур:
struct data{
int a1;
char a2[5]; } ;
Визначимо вказівник p_data на змінну типу data
struct data *p_data; * вказує, що p_data є вказівником на змінну типу data, а не екземпляром цього структурного типу.
Задати вказівник ще не можна, бо тільки заданий тип, а не описана ні одна змінна цього типу. Опишемо змінну data1 структурного типу data.
struct data data1;
Тепер можна ініціалізувати вказівник
p_data=&data1;
Цей оператор присвоює адресу структури data1 вказівнику p_data.
Вказівник на структуру, вказує на перший байт збережуваних даних. Якщо p_data вказівник на структуру data1, то *p_data – це сама структура. До окремих полів структури можна звертатися за допомогою (.) (*p_data).a1=100;
Вираз (*p_data) треба брати в дужки, бо операція звернення до елементів структури крапка (.) має вищий пріоритет, ніж операція посилання по вказівнику (*).