- •Міністерство транспорту та зв'язку україни
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 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 Контрольні запитання
- •Список рекомендованої літератури
6 Контрольні запитання
В чому різниця між функціями розподілу пам’яті. malloc() і calloc()?
З допомогою якої функції звільняється пам’ять?
Що таке динамічний розподіл пам’яті?
В чому різниця між структурою і масивом. ?
Яким символом позначається операція звернення до елементу структури?
З допомогою якого ключового слова описується структура?
Лабораторна робота № 20
Тема: Операції над окремими бітами пам’яті.
Мета роботи: Навчитись оперувати з окремими бітами пам’яті і виконувати операції над ними.
1 Короткі теоретичні відомості
Елементарною одиницею збереження інформації є біт. Бітові (двійкові, порозрядні) операції дають можливість маніпулювати окремими бітами цілочисельних змінних. Біт може приймати 0 або 1. Порозрядні операції можна виконати тільки над цілочисельними типами int, long i char.
Операції порозрядного зсуву. Існує дві операції для зсуву бітів в цілочисельних змінних на задане число позицій. Операція << зсуває біт вліво, а операція >> - вправо. Синтаксис
x << n ; x>> n
Кожна з операцій зсуває біти на n позицій в вказаному напрямі. При зсуві вправо n старших бітів заповнюється нулями, а при зсуві вліво заповнюються молодші біти. Наприклад,
Двійкове число 00001100 (12) при зсуві вправо на 2 розряди = 00000011 (3)
Двійкове число 00001100 (12) при зсуві вліво на 3 розряди = 01100000 (96)
Двійкове число 00001100 (12) при зсуві вправо на 3 розряди = 00000001 (1)
Двійкове число 00110000 (48) при зсуві вліво на 3 розряди = 10000000 (128)
Операції зсуву можна використати для множення і ділення цілих чисел на числа, рівні степеням 2.
Зсув на n позицій вліво еквівалентний множенню на 2n, вправо - ділення на 2n,. Результат множення може бути правильний тільки в тому випадку, коли при зсуві не пройшло переповнення, тобто ні один біт не втратився при зсуві за границі старшого розряду. Ділення шляхом зсуву вправо є цілочисельним, при якому відкидається дробова частина результату. Наприклад, при зсуві вправо число 5 (00000101) на одну позицію з метою розділити його на 2, результат буде рівний 2 (00000010), а не 2.5 Приклад програми.
#include <stdio.h>
int main( ) {
unsigned int y, x = 255;
int i;
for (i = 1; i < 8; i++)
{ y = x << i; Множення
printf("%d\t%d\t%d\n", x, i, y); }
for (i = 1; i < 8; i++)
{ y = x >> i; Ділення
printf("%d\t%d\t%d\n", x, i, y); }}
Результат
/*Десяткові Множення
255 1 510
255 2 1020
255 3 2040
255 4 4080
255 5 8160
255 6 16320
255 7 32640
/*Десяткові Ділення
255 1 127
255 2 63
255 3 31
255 4 15
255 5 7
255 6 3
255 7 1 */
Порозрядні логічгі операції. Є три логічні операції для роботи з бітами в цілочисельних змінних.
Знак операції |
Суть операції |
Приклад |
& |
Побітове логічне і (AND). Біт результату =1, якщо відповідні біти обох операндів =1 і = 0, коли один з бітів =0. Операція використовується для (відключення) очистки одного або кількох бітів цілої змінної. |
11110000 & 01010101 01010000 |
І |
Побітове логічне включаюче або (OR) РЕЗУЛЬТАТ =0, КОЛИ ВІДПОВІДНІ БІТИ ОБОХ ОПЕРАНДІВ =0. операція використовується для включення (установки) одного або кількох бітів цілої змінної. |
11110000 I 01010101 11110101 |
^ |
Побітове логічне виключаюче або (XOR). Біт результату =1, якщо відповідні біти обох операндів різні. Інакше вона =0. |
11110000 ^ 01010101 10100101 |
Це порозрядні операції, які роблять біти результату = 0 або 1 в залежності від значень бітів в операндах.
Що ж означає включення-відключення заданих бітів цілої змінної. Нехай є змінна типу char і нам треба очистити (тобто зробити їх нульовими) 0 і 4 біти, залишивши останні незмінними. Виконаємо операцію логічного І нашого числа з двійковим числом 11101110. Тоді в кожній позиції, де в другому числі є одиниця, результат збережеться, позиція , де в другому числі є 0, результат буде нульовим.
Установка (включення) бітів з допомогою операції або виконується аналогічно. В позиції, де 2 число 1 результат буде 1, де в другому числі 0, результат незмінним.
0101
1100
==
1101
Операція доповнення. Це унарна операція, яка полягає в перетворенні бітів операнда на протилежні.
Бітові поля в структурах. Використання бітових полів економить пам’ять при роботі зі структурами. Бітове поле - це елемент структури, який складається з заданої кількості бітів.
Багато полів, особливо в базах даних мають відповіді так або ні. Найкоротший тип є тип char, який займає 8 бітів. Тоді сім бітів буде пропадати. Використання бітових полів дозволить помістити в одну змінну типу char 8 відповідей так або ні. Бітові поля можна використати і там, де нам потрібні числа 1, 2, 3, які представляються 2 бітами. 3 бітами - числа від 0 до 7, 4 бітами - числа від 0 до 15. Задання бітових полів і звертання до них не відрізняється від звичайних змінних.
Бітові поля мають тип unsigned int, а розмір задається після двокрапки, яка стоїть за іменем поля. Наприклад:
struct data
{ unsigned a1:1;
unsigned a2:2;
unsigned a3:3; }
Бітові поля - це невеликі цілі числа без знаку, з заданою кількістю двійкових розрядів, в структурі мають бути спочатку, перед іншими елементами. Бітові поля довжиною n біт можуть містити числа з діапазону від 0 до 2n+1. Якщо в таке поле помістити число, яке не входить в заданий діапазон, то компілятор не видасть помилки, а програма дасть не передбачені результати. Не рекомендується задавати бітові поля довжиною 8 або 16 байт, бо для цього є стандартні типи даних.