Форматний ввід даних
Ввід і форматування даних здійснюється за допомогою функцій scanf і fscanf. Різниця між ними полягає у тому, що для функції fscanf одним із аргументів треба вказувати файл (потік) з якого зчитуються дані. Функція scanf зчитує дані зі стандартного потоку вводу – stdin.
Формат функції scanf фактично співпадає із форматом функції printf з двома відзнаками:
рядок форматування функції scanf може містити лише елементи форматування;
аргументом функції scanf є адреса змінної, в якій буде розміщено введене і відформатоване значення, тому перед назвою змінної повинен розміщуватись оператор визначення адреси, який позначається символом ‘&’.
Приклад:
int WorkDays;
double Rate1, Rate2;
char Method;
...
printf (“Введіть кількість робочих діб: ”);
scanf (“%i”, &WorkDays);
printf (“Введіть звичайну і надурочну ставку оплати: ”);
scanf (“%f%f”, &Rate1, &Rate2);
printf (“Врахувати податок? (y – так, n – ні)”);
scanf (“%c”, &Method);
Методичні вказівки
Завданням даної лабораторної роботи є створення, компіляція, відладка та виконання програми, призначеної для обчислення заданого математичного виразу. Результатом виконання лабораторної роботи має бути демонстрація правильного функціонування програми.
При виконанні лабораторної роботи рекомендується використовувати також методичні вказівки до лабораторних робіт № 1 і 4.
В процесі створення програми перед програмістом завжди постає питання організації діалогу ЕОМ і користувача. Сучасну програму неможливо уявити без “дружнього” інтерфейсу, а принципи його розробки навіть вивчаються окремою дисципліною, яка називається “Людино-машинний інтерфейс”. Тому при написанні простих програм треба привчатись до широкого використання таких можливостей вводу і виводу мови С/С++, які роблять програму зрозумілою, зручною та привабливою для користувача. На даному етапі вивчення мови програмування С/С++ актуальними є наступні рекомендації:
програма повинна “спілкуватись” з користувачем зрозумілою мовою і нормативною лексикою. Речення, які програма виводить на екран повинні бути побудовані так, щоб їх міг зрозуміти навіть недосвідчений користувач. Фраза на екрані виду “Введіть R” викликає у користувача лише запитання: “Яке R? Що воно означає?”. Порівняйте з наступною: “Введіть радіус кола, площу якого треба обчислити”;
використовуйте для виводу виключно національну мову, якщо операційна система та IDE дозволяють це робити (налаштоване кодування символів). Якщо це неможливо, намагайтесь використовувати англійську мову, а не трансліт. Використання англійської мови у програмуванні – один з найкращих способів збільшити свій словниковий запас;
з урахуванням можливостей IDE широко використовуйте кольорове оформлення виводу (функції textcolor і textbackground модуля conio.h). Також, використовуйте звукові сигнали, наприклад, для супроводження повідомлення про помилку або для привертання уваги користувача (функції sound, delay і nosound модуля dos.h);
не забувайте очищати екран на початку роботи програми (функція clrscr модуля conio.h);
використовуйте функцію getch модуля conio.h для затримки виконання програми до натиснення довільної клавіши після виводу результатів. В IDE BC це скасує необхідність кожного разу натискати комбінацію Alt + F5 для перегляду результатів роботи програми, а в інших IDE взагалі дозволить запобігти закриттю консольного вікна з результатами.
Приклад
Створити програму обчислення значення функції
для заданих користувачем значень x та y.
Вхідними даними алгоритму програми є:
значення аргументу x;
значення аргументу y.
Вихідними даними алгоритму є значення функції – f.
Алгоритм програми має лінійну структуру і складається з наступних кроків:
ввід значень x та y;
обчислення значення функції f;
вивід значення функції f на екран.
Схема алгоритму представлена на наступному рисунку.
Рисунок 5.1 – Схема алгоритму програми обчислення значення функції двох змінних
Недоліком даного алгоритму є відсутність в ньому перевірки коректності введених користувачем значень аргументів (зокрема, y не повинен дорівнювати нулю, а x має бути додатнім).
Лістинг програми мовою С/С++ (IDE BC, BDS):
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main ()
{
float x, y, z;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
printf ("Обчислення функц³¿ двох аргумент³в\n");
printf ("Введ³ть значення x та y \n");
printf ("x = ");
scanf ("%f", &x);
printf ("y = ");
scanf ("%f", &y);
z = exp (sqrt (x + y)) - log (x) / pow (y, 4);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
printf ("Значення функц³¿ %9.4f", z);
getch ();
}
Завдання
вивчити теоретичні відомості та методичні вказівки до лабораторної роботи;
вибрати завдання для виконання згідно з варіантом;
побудувати схему алгоритму розв’язання задачі;
реалізувати програму за побудованим алгоритмом;
відкомпілювати та відладити програму;
розробити набір тестів і перевірити роботу програми на них;
відповісти на контрольні запитання;
зробити висновки.
Загальне завдання: реалізувати програму обчислення значення функції декількох змінних за лінійним алгоритмом.
Варіанти завдань
Варіант |
Функція |
Варіант |
Функція |
1 |
|
16 |
|
2 |
|
17 |
|
3 |
|
18 |
|
4 |
|
19 |
|
5 |
|
20 |
|
Варіант |
Функція |
Варіант |
Функція |
6 |
|
21 |
|
7 |
|
22 |
|
8 |
|
23 |
|
9 |
|
24 |
|
10 |
|
25 |
|
11 |
|
26 |
|
12 |
|
27 |
|
13 |
|
28 |
|
14 |
|
29 |
|
15 |
|
30 |
|
Контрольні запитання
перелічіть та охарактеризуйте основні числові типи даних мови С/С++;
сформулюйте правила оголошення змінних і констант у програмі мовою С/С++;
сформулюйте правила побудови арифметичних виразів мовою С/С++;
опишіть структуру рядка форматування функції printf;
опишіть структуру рядка форматування функції scanf.
