Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

1.3 Вимоги до звітів

Звіти про виконані роботи оформляються відповідно до методичних указівок [1] на основі ДСТУ 3008.95 “Документація, звіти у сфері науки і техніки. Структура і правила оформлення”. Звіти оформляються на окремих аркушах формату А4. Наприкінці семестру звіти зшиваються з титульним листом і здаються на кафедру після захисту всіх робіт.

Звіт повинний містити

  1. Прізвище, ім'я та по батькові, а також групу студента.

  2. Номер і назву роботи.

  3. Ціль роботи.

  4. Індивідуальне завдання.

  5. Текст розробленої програми.

  6. Результати роботи програми.

  7. Висновки по роботі.

1.4 Питання для контролю і самостійної роботи

  1. Як здійснюється запуск і вихід з інтегрованого середовища розробки С ?

  2. Як здійснюється настроювання шляхів для підключення зовнішніх файлів?

  3. Назвіть режими компіляції. Що вони означають ?

  4. Як виконується підключення бібліотек функцій ?

  5. Як здійснюється відкриття і закриття вікон, перехід між вікнами, копіювання тексту з вікна у вікно ?

  6. Як здійснюється модифікація імені файлу ?

  7. Чому завантаження IDE здійснюється з активної директорії ?

  8. Назвіть «гарячі » клавіші і їхнє призначення.

  9. Як виділити коментарі в С ?

  10. Як підключаються заголовочні файли, що вони містять ?

  11. Що позначається словом main( ) ?

  12. Як позначається початок та кінець складеного оператора (блоку, тіла функції) ?

2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси

(2 години)

Ціль роботи: вивчити формати оголошень і роботу основних функцій введення/виведення інформації; навчитися складати прості програми з лінійним обчислювальним процесом.

2.1 Теоретичні відомості

Однією з основних задач при програмуванні є введення і виведення даних. У С для цього застосовують ряд функцій printf( ), scanf( ), cprintf( ), ecvt( ), fprintf( ), fread( ), fscanf( ), putc( ), puts( ), putw( ), sprintf( ), vprintf(). Функція printf( ) здійснює форматизоване виведення даних у потік stdout. Оголошення функції знаходиться у заголовочному файлі < stdio.h >.

Синтаксис оголошення функції printf( ):

# include < stdio.h > //Включення заголовочного файла

int printf ( const char* format [ ,argument, … ] );

У дужках [ ] зазначені необов'язкові елементи специфікації оголошення.

Специфікація формату першого аргументу ( const char* format - форматний рядок ), що визначає перелік символів та специфікаторів рядка формату для виведення інформації, має вигляд

% [ flags ] [ width] [ .precision ] [ F/N/h/l/L ] <type_char>

Функція scanf( ) здійснює введення даних з потоку stdin у відповідності до заданого формату.

Синтаксис оголошення функції scanf( ):

int scanf ( const char* format [ , adress, ... ] );

Специфікація формату першого аргументу ( const char* format - форматний рядок ) функції scanf( ) має наступний вигляд:

% [ * ] [ widht ] [ F|N ] [ h|l|L ] <type_char>

Ця специфікація формату наказує функції scanf( ) здійснити читання і перетворення символів із вхідного потоку в значення визначеного типу, потім запам'ятати їх у пам'яті за адресою, зазначеною відповідним адресним аргументом (adress). Для того, щоб получити адресу перемінної використовується операція узяття адреси - &. В С роботу з адресами пам’яті виконують також спеціальні перемінні - покажчики, які містять адреси інших перемінних.

Деякі символи не відображаються на екрані - пробіл ( ), символ табуляції ( \t’ ), символ переходу на новий рядок ( ‘\n’ ) і інші керуючі послідовності. Якщо функція scanf( ) зустрічає у форматному рядку символи, які не відображаються на екрані, вона буде зчитувати, але не зберігати всю послідовність таких символів аж до наступного відображуваного символу у вхідному потоці.

Відображуваними символами є всі інші символи коду ASCII, за винятком символу відсотка (%). Якщо функція scanf( ) зустрічає в рядку формату відображуваний символ, то вона прочитає і збереже його.

Специфікація формату починається із символу відсотка (%). Після цього символу вказують символи специфікації. Нижче (таблиця 2.1, таблиця 2.2) представлений загальний опис символів специфікації рядка формату scanf( ), що керує формуванням потоку даних.

Таблиця 2.1- Призначення символів специфікації рядка формату scanf( )

Символ чи специфікатор

Чим керує чи що визначає

* - подавлення

призначення

Скасовує присвоювання наступного поля введення

width – ширина поля

Максимальне число символів, що зчитуються

F/N

Змінює розмір адресного аргументу:

F - far покажчик; N - near покажчик

h/l/Lмодифікатори

типу аргументу

h - тип short int;

l - тип long int (якщо символ типу вказує на перетворення до цілого типу);

l - тип double (якщо символ типу вказує на перетворення до речовинного типу );

L - тип long double (тільки при перетвореннях до речовинного типу )

Таблиця 2.2 - Символи типу (<type_char>)

Сим- вол

Очікується на вході

Тип аргументу

d

Десяткове ціле

Покажчик на тип int (int* arg)

D

Десяткове ціле

Покажчик на тип long (long* arg)

o

Восьмирічне ціле

Покажчик на тип int (int* arg)

O

Восьмирічне ціле

Покажчик на тип long (long* arg)

i

Десяткове ціле

Покажчик на тип int (int* arg)

Продовження таблиці 2.2

Сим- вол

Очікується на вході

Тип аргументу

І

Десяткове ціле

Покажчик на тип long (long* arg)

u

Десяткове ціле без знака

Покажчик на тип unsigned int

(unsigned int* arg)

U

Десяткове ціле без знака

Покажчик на unsigned long

(unsigned long* arg)

x

Шістнадцятирічне ціле

Покажчик на int (int *arg)

X

Шістнадцятирічне ціле

Покажчик на long (long *arg)

e, E

Речовинне число

Покажчик на float (float *arg)

f

Речовинне число

Покажчик на float (float *arg)

g,G

Речовинне число

Покажчик на float (float *arg)

s

Рядок символів

Покажчик на масив символів (char arg[ ])

c

Символ

Покажчик на символ (char *arg)

Для роботи з функціями використовують глобальні та локальні перемінні. Перемінні оголошують за межами функцій або в тілі функцій з різними класами пам’яті: extern, static, auto, register. Глобальні перемінні (extern, static) ініціалізуються нульовим значенням за умовчанням і доступні в функціях. Локальні перемінні (auto, register) не ініціалізуються за умовчанням і доступні тільки в функції, де вони оголошені.

Приклад

/* ЗАНЯТТЯ N 2

Розробив Сидоров К.В.

Скласти програму для форматизованого введення і виведення

даних заданого типу відповідно до індивідуального завдання.

Виконати оголошення глобальних та локальних перемінних

заданого типу, їх введення та виведення в заданому форматі

з різними специфікаторами. Обернути дані цілого типу у

восьмирічну та шістнадцятирічну систему числення */

#include <stdio.h> //Директива препроцесора (#include) включає

#include <conio.h> //Заголовочні файли з розширенням (.h)

#include <string.h>

int a; //Оголошення глобальної (extern) перемінної типу int

int main( void ) //Головна функція

{ //Початок складеного оператора (блоку, тіла функції)

char c, buf[20]; //Оголошення локальних перемінних

char *pst = "\"slovo\""; //Оголошення локальних перемінних з

float f = 26.6; //ініціалізацією

double d;

clrscr( ); //Функція очищення екрана

printf(" Введення перемінної типу char: "); //Функція виводу на екран

fflush(stdin); //Функція очищення буфера клавіатури

scanf("%c", &c); //Функція введення даних,

printf(" Виведення перемінної типу char: ");

printf("%c\n", c);

printf("\n Введення перемінної типу int: ");

scanf("%d", &a); // & - операція узяття адреси

printf(" \t Виведення перемінної типу int\n");

printf(" Формат виведення (int): +6d #6o #8x\n");

printf("\t\t |%+6d|%#6o|%#8x|\n ", a, a, a);

printf("\n Введення перемінної типу int: ");

scanf("%d", &a);

printf("\t Виведення перемінної типу int\n");

printf(" Формат виведення (int): -6d +6d #8d\n");

printf("\t\t |%-6d|%+6d|%#6d|\n", a, a, a);

printf("\n Виведення вихідного рядка: %s\n\n", pst);

printf(" Введення рядка у масив: "); scanf("%s", buf);

printf(" Виведення рядка з масиву: %s\n\n", buf);

printf(" Введення перемінних типу float і double (через пробіл):\n");

printf("\t\t "); scanf("%f %lf", &f, &d);

printf("\t Виведення перемінних типу float і double\n");

printf(" Формат виведення (float): 10.6f 10.6e +10.6g\n");

printf("\t\t |%10.6f|%10.6e|%+10.6g|\n", f, f, f);

printf(" Формат виведення (double): 10.8lf 10.8e 10.8g\n");

printf("\t\t |%10.8lf|%10.8e|%+10.8g|\n ", d, d, d);

getche( ); //Функція введення символу з клавіатури

return 0; //Оператор повернення значення з функції (0)

} //Кінець складеного оператора (блоку, тіла функції)

/* Результат виконання програми

Введення перемінної типу char: u

Виведення перемінної типу char: u

Введення перемінної типу int: 78

Виведення перемінної типу int

Формат виведення (int): +6d #6o #8x

| +78| 0116| 0x4e|

Введення перемінної типу int: 90

Виведення перемінної типу int

Формат виведення (int): -6d +6d #8d

|90 | +90| 90|

Виведення вихідного рядка: "slovo"

Введення рядка у масив: символи 45!"#:$.;? %;?

Виведення рядка з масиву: символи 45!"#:$.;? %;?

Введення перемінних типу float and double (через пробіл):

78.89 6778.0

Виведення перемінних типу float and double

Формат виведення (float): 10.6f 10.6e +10.6g

| 78.889999| 7.889000e+01| +78.89|

Формат виведення (double): 10.8lf 10.8e 10.8g

|6778.00000000| 6.77800000e+03| +6778| */