Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС(методичка).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
773.12 Кб
Скачать

2.17 Перелік|перерахування| (enumeration)

Тип (enumeration), що перераховує, – це безліч поіменованих цілочисельних констант. Тип, що перераховує, визначає всі допустимі значення, які можуть приймати змінні цього типа.

Основна форма оголошення типу така:

enum имя_типа { список_названий} [ список_переменных];

Список змінних може бути порожнім|пустим|.

Наприклад, визначення типа, що перераховує, і змінної даного типа можна представити|уявити| так:

enum seasons {win, spr, sum, aut};

enum seasons s;

Ключем|джерелом| до понімання| суті|сутності,єства| типа, що перераховує, є|з'являється,являється| те, що кожне з імен win, spr, sum, aut є цілою величиною. Якщо ці величини не визначені по-іншому, то за умовчанням вони відповідно рівні 0, 1, 2 і 3.

Оператор

printf(“%d %d”,win,aut); видасть на екран значення 0 і 3.

Під час оголошення типу можна одному або декільком назвам привласнити інші значення, наприклад:

enum value {one=1, two,three,ten=10, thousand=1000, next};

Тоді оператор

printf(“%d %d %d %d %d”,one, two, ten, thousand, next); виведе на екран 1 2 10 1000 1001, тобто кожне наступне|таке| значення імені збільшується на 1 в порівнянні з поточним якщо немає іншого привласнення.

Із|із| змінними типа, що перераховує, можна проводити|виробляти,справляти| наступні|слідуючі| операції:

  • привласнити змінну типу enum іншої змінної цього ж типа;

  • провести порівняння з метою з'ясування рівності або нерівності;

  • арифметичні операції з|із| константами типу enum (i=win-aut);

Не можна використовувати арифметичні операції і операції ++ і – для змінних типу enum.

Основна причина використання типа, що перераховує, – поліпшення читаності програм.

2.18 Об'єднання (union)

У мові C, окрім структур, визначений ще один тип для розміщення в пам'яті змінних різного типа. Це об'єднання – union. Об'єднання застосовуються для економії пам'яті в тих випадках, коли наперед|заздалегідь| відомо, що більше одного поля одночасно не буде потрібно, тобто всі поля об'єднання розташовуються поодинці і тій же адресі. У кожен момент часу в змінній типу об'єднання зберігається тільки|лише| одне значення. Оголошується об'єднання так само, як і структура:

union u {

int I;

char ch;

long int l;

};

Це оголошення задає шаблон об'єднання. Можна оголосити змінну такого типа:

union u alpha, beta *gamma;

Змінні можна оголосити одночасно із завданням|задаванням| шаблону.

На відміну від структури для змінної типу union місця в пам'яті виділяється рівно стільки, скільки треба елементу об'єднання, що має найбільший розмір в байтах. У нашому випадку під змінні alpha, betfa буде виділено по 4 байти ( елемент i вимагає 2 байти, елемент ch - 1 байт, елемент l – 4 байти). Число i, символ ch і довге ціле l займають|позичають,посідають| одну і ту ж ділянку пам'яті.

Синтаксис використання елементів об'єднання такої ж, як і для структури:

alpha.ch=’5’;

*gamma->ch=’5’;

Об'єднання ініціалізувалося значенням у фігурних дужках, причому воно привласнюється першому члену об'єднання. Наприклад:

union int_dbl {

int i;

double x;

} n={0};

Змінна n може використовуватися як ціла або змінна з|із| подвійною точністю:

n.i=7;

cout<<n.i<<” ціле ”;

n.x=7.0;

cout<<n.x<<” подвійної точності”;

Об'єднання можуть бути безіменними, наприклад:

enum week { sun, mom, tues, weds, thus, fri, sat};

union {

int i;

week w;

};

i=5;

if(w==sat || w==sun)

cout<<” Вихідний”;

Оголошення безіменного об'єднання дозволяє використовувати ідентифікатори окремих членів як змінні.

#include<iostream.h>

void main()

{

enum paytype { CARD, CHECK};

paytype ptype;

union payment {

char card[25];

long check;

} info;

/*

Привласнення значень info і ptype

*/

switch (ptype)

{

case CARD: cout<<” оплата по карті “<<info.card;

break;

case CHECK: cout<<” Оплата чеком: “<<info.check;

break;

}

}

Об'єднання часто використовуються як поле структури, при цьому в структуру зручно включати додаткове поле, що визначає, який саме елемент об'єднання використовується в кожен момент часу. Ім'я об'єднання можна не указувати|вказувати|, що дозволяє звертатися|обертатися| до його полів безпосередньо:

#include<iostream.h>

void main()

{

enum paytype {CARD, CHECK};

struct {

paytype ptype;

union {

char card[25];

long check;

};

} info;

/*

Привласнення значення info

*/

switch (info.ptype)

{

case CARD: cout<<” Оплата по карті: “<<info.card;

break;

case CHECK: cout<<” Оплата чеком: “<<info.check;

break;

}

}

3. Контрольна робота №1

Основи програмування на мові С

Завдання № 1: Програмування обчислювальних процесів з розгалуженням

Мета роботи: отримання практичних навичок програмування завдань з використанням конструкцій мови, що управляють.

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

Варіанти завдань

Номер варіанту визначається останньою цифрою номера залікової книжки.

  1. Y=

  2. Y=

  3. Y=

  4. Y=

  5. Y=

  6. Y=

  1. Y=

  2. Y=

  3. Y=

  4. Y=

  5. Y=

  6. Y=

Контрольні питання:

  1. Для чого призначений оператор вибору?

  2. Які дві форми запису повного умовного оператора?

  3. Приведіть приклад умовного оператора?

  4. У чому різниця по сенсу між повною і короткою формами запису умовного оператора?

  5. Чи може умовний оператор містити в собі інші умовні оператори?

  6. Чи може умовний оператор містити в собі оператор переходу?

  7. Як виконується програма за наявності оператора переходу?

Завдання № 2: Використання циклів

Мета роботи: отримання практичних навичок програмування завдань з використанням циклічних конструкцій.

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

Алгоритм рішення таких задач складається з трьох кроків:

  1. введення і перевірки даних;

  2. циклу, який породжує множники з перевіркою на виконання якої-небудь властивості;

  3. виведення результатив.

Задача: Обчислити S як суму n додатків, де n визначається з виразу:

Варіанти завдань

Номер варіанту визначається останньою цифрою номера залікової книжки.

  1. S=

  2. S=

  3. S=

  4. S=

  5. S=

  6. S=

  7. S=

  8. S=

  9. S=1-

  10. S=

  11. S=

  12. S=

Контрольні питання:

  1. Поясніть призначення і правила використання оператора GOTO.

  2. Поясніть призначення, схеми і правила використання операторів FOR,WHILE, DO-WHILE.

  3. Поясніть призначення і правила використання операторів BREAK і CONTINUE.

Завдання № 3: Набір і відлагодження програм з використанням двовимірних масивів

Мета роботи: отримання практичних навичок програмування завдань з використанням багатовимірних масивів.

Варіанти завдань

Номер варіанту визначається останньою цифрою номера залікової книжки.

1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • елементи 1-го рядка і 1-го стовпця міняються місцями.

Результати всіх дій виводити на екран.

2. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • елементи 1-го рядка замінюються нулями, последней-едініцамі.

Результати всіх дій виводити на екран.

3. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • елементи головної діагоналі масиву виводяться на екран.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

    • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

    • перевіряється правильність прийому масиву;

    • рядки масиву сортуються за збільшенням;

    • елементи 1-ої і останній рядків міняються місцями.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються по убуванню.

  • визначається середнє арифметичне всіх елементів масиву.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • відповідні елементи 1-го і 2-го стовпців міняються місцями.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • визначити середнє арифметичне елементів кожного рядка.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • елементи 1-го і останнього стовпців міняються місцями.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • відповідні елементи 1-го 2-го рядка міняються місцями.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • визначається сума елементів масиву, розташованих на головній діагоналі.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій:

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за збільшенням;

  • відповідні елементи 1-го 2-го рядка міняються місцями.

Результати всіх дій виводити на екран.

  1. Написати і відлагодити програму, в якій::

  • з клавіатури вводиться двовимірний масив дійсних чисел розміром n*n;

  • перевіряється правильність прийому масиву;

  • рядки масиву сортуються за зменшенням;

  • визначається сума елементів масиву, розташованих на головній діагоналі.

Результати всіх дій виводити на екран.

Контрольні питання:

  1. Як позначаються в програмі елементи багатовимірного масиву?

2. Як організовується в програмі введення елементів багатовимірного масиву?

3. Як організовується в програмі виведення багатовимірного масиву?

4. Поясніть суть сортування багатовимірного масиву методом «бульбашки».

Завдання № 4: Використання підпрограм. Використання рекурсії

Мета роботи: отримання практичних навичок програмування завдань з використанням рекурсії.

Задача:

Написати і відлагодити програму, яка обчислює цілий ступінь цілого числа:

    • використовуючи механізм рекурсії;

    • без використання рекурсії.

Контрольні питання:

1. Що таке рекурсія?

2. У чому полягає типова помилка при написанні рекурсивних функцій? Приведіть приклади.

Завдання №5: Структури даних.Файли даних

Мета роботи: Одержання практичних навичок в застосуванні структур даних та файлів даних.

Задача 1: Визначити структуру даних, що описує деякий реальний об'єкт. Створити файл даних і записати в нього дані такого типа.

Задача 2: З раніше створеного файлу даних счтітать дані і вивести їх на екран.

Задача 3: З раніше створеного файлу даних счтітать дані, відповідні заданому критерію, і вивести їх на екран.

Задача 4: У раніше створеному файлі даних знайти дані, відповідні заданому критерію, і замінити їх. Нові дані запрошуються в діалоговому режимі.

Задача 5: Додати в кінець файлу дані. Нові дані запрошуються в діалоговому режимі.

Контрольні питання:

  1. Що таке структури даних?

  2. Приведіть і поясніть синтаксичну діаграму структури даних.

  3. Якими можуть бути імена полів в структурах?

  4. Що таке файл даних?

  5. Назвіть типи файлів, використовуваних в мові Сі.

  6. Назвіть основні типи робіт з файлами даних.

  7. Як оголосити файли різних типів?