- •1. Загальні відомості 7
- •1. Загальні відомості
- •1.1. Структура програми
- •1.2. Типи даних
- •2. Лабораторна робота 1. «Обчислення арифметичних виразів» (2 год.)
- •2.1. Теоретичні відомості
- •2.2.1. Приведення типів
- •2.2. Постановка задачі
- •2.3. Варіанти
- •2.4. Методичні вказівки
- •Постановка задачі.
- •3.1. Теоретичні відомості
- •3.1.1. Умовний оператор if-else
- •3.1.2. Оператор вибору switch
- •3.1.3. Оператори циклу
- •3.1.4. Приклад. Побудова геометричної фігури
- •3.2. Постановка задачі
- •3.3. Варіанти
- •3.4. Методичні вказівки
- •Постановка задачі.
- •4. Лабораторна робота 3. «Обчислення ряду. Форматне введення-виведення даних» (2 год.)
- •4.1. Теоретичні відомості
- •4.1.1. Поняття ряду. Ітераційний процес
- •4.1.2.Форматне виведення даних
- •4.1.3.Форматне введення
- •4.1.4. Приклад. Програма обчислення ряду
- •4.2. Постановка задачі
- •4.3. Варіанти
- •4.4. Методичні вказівки
- •Постановка задачі.
- •5. Лабораторна робота 4. «Функції. Ітераційні процеси» (4 год.)
- •5.1. Теоретичні відомості
- •5.1.1.Ступеневі ряди
- •5.2. Постановка задачі
- •5.3. Варіанти
- •5.4. Методичні вказівки
- •Постановка задачі.
- •6. Лабораторна робота 5. «Масиви й покажчики. Введення й виведення елементів» (2 год.)
- •6.1. Теоретичні відомості
- •6.1.1. Оголошення масиву
- •6.1.2. Масиви й покажчики
- •6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
- •6.1.4. Пошук найменшого й найбільшого елементів масиву
- •6.2. Постановка задачі
- •6.3. Варіанти
- •Постановка задачі.
- •7.1.2. Масив випадкових чисел
- •7.1.3. Видалення елемента із масиву
- •7.1.4. Вставка елемента в масив
- •7.1.5. Перестановка двох елементів
- •7.1.6. Циклічна перестановка елементів
- •7.2. Постановка задачі
- •7.3. Варіанти
- •Постановка задачі.
- •8.1.2. Передача масиву у функцію
- •8.1.3. Приклад. Функції введення й виведення елементів матриці
- •8.2. Постановка задачі
- •8.3. Варіанти
- •8.4. Методичні вказівки
- •Постановка задачі.
- •9. Лабораторна робота 8. «Сортування масивів» (4 год.)
- •9.1. Теоретичні відомості
- •9.1.1. Метод обміну (бульбашковий)
- •9.1.2. Метод прямого вибору
- •9.1.3. Метод вставок
- •9.1.4. Порівняння ефективності алгоритмів сортування
- •9.1.5. Генерація псевдовипадкових чисел
- •9.2. Постановка задачі
- •9.3. Методичні вказівки
- •Постановка задачі.
- •10. Лабораторна робота 9. «Рядки» (4 рік.)
- •10.1. Теоретичні відомості
- •10.1.1. Функції для роботи із символами
- •10.1.2. Строкові константи
- •10.1.3. Рядки як масиви
- •10.1.4. Передача рядка у функцію
- •10.1.4. Уведення/виведення символів і рядків
- •10.1.4. Функції обробки рядків
- •10.2. Постановка задачі
- •10.3. Варіанти
- •10.4. Методичні вказівки
- •Постановка задачі.
- •Література
4.1.2.Форматне виведення даних
У мові С, що є попередником мови С++, введення-виведення даних здійснюється за допомогою бібліотеки stdio, що підключається директивою:
#include <stdio.h>
Форматне виведення реалізується функцією:
printf (<форматний рядок>, <список аргументів>);
<форматний рядок> – рядок символів у лапках, що показує, як повинні бути надруковані аргументи. Наприклад:
printf ("Value PI equals %f\n", pi);
Форматний рядок може містити символи тексту для виведення, специфікації перетворення та управляючі символи.. Кожному аргументу відповідає своя специфікація перетворення, наприклад,
%d – десяткове ціле число ;
%f – число із плаваючою крапкою типу float або double;
%e – число в експонентній формі типу float або double;;
%c – символ;
%s – рядок.
Таким чином, специфікація перетворення починається із символу % і закінчується символом перетворення (d, f, c та ін.). Після символу % перед символом перетворення може перебувати:
– Знак мінус, що вказує на вирівнювання перетвореного аргументу по лівому краю поля виведення.
– Ширина поля виведення – задає мінімальне число позицій для перетвореного аргументу. Якщо величина аргументу вимагає більшого числа позицій, то поле виведення автоматично розширюється. Якщо ж величина має менше символів, чим зазначена ширина поля, то ліворуч від її додаються пробіли.
– Точність – число, яке стоїть через крапку за значенням ширини поля виведення й показує, скільки позицій ширини поля виведення виділяється під дробову частину аргументу типу float або double. Для специфікацій f та e точність за умовчанням дорівнює 6.
Приклади:
printf ("x=%20.8f\n", x);
– виведення значення аргументу x у поле шириною 20 з 8 знаками після десяткової крапки.
printf ("x=%-10d\ny=%-10d", x, y);
– виведення значень x і y в окремі рядки з вирівнюванням зліва.
4.1.3.Форматне введення
Форматне введення реалізується функцією:
scanf (<форматний рядок>, <список аргументів>);
<форматний рядок> – рядок символів у лапках, що містить специфікації перетворення аргументів. Ця специфікація складається із символу % і закінчується символом перетворення d, f, c або іншим:
%d – при введенні очікується десяткове ціле число;
%c – очікується окремий символ; для читання наступного символу потрібно користуватися специфікацією %1s;
%s – очікується символьний рядок
%f – очікується число із плаваючою крапкою типу float.
%е – цей символ перетворення є синонімом для f. Формат уведення змінної типу float включає необов'язковий знак, рядок цифр, можливо фіксовану десяткову крапку й необов'язкове поле експоненти.
Аргументами в функції scanf мають бути покажчики. Покажчик – це об'єкт, що зберігає адресу області пам'яті, у яку записано значення змінної. Приклади використання функції scanf:
scanf("%f", &x);
– введення значення дійсного аргументу x типу float (а не double);
scanf("%s%d", &str, &k);
– введення рядка символів str і цілочисельного аргументу k.
4.1.4. Приклад. Програма обчислення ряду
Скласти програму для обчислення спадного ряду:
з додатними членами. При обчисленні суми враховувати члени, що перевищують задане значення . Передбачити багаторазове введення значення користувачем.
Насамперед, знайдемо рекурентне співвідношення між найближчими членами ряду:
,
звідки:
Обчислення ряду починаємо з оголошення й ініціалізації наступних змінних: n (номер поточного члена ряду; ураховуємо, що початкове значення і ), an (значення поточного члена), sum (сума членів). Оголошуємо змінну delta, у якій зберігається значення точності обчислень, і символьну змінну cont, яка буде містити символ, що означає відповідь на запит про продовження обчислень. Далі програма пропонує ввести delta, і користувач уводить значення delta. Запускається цикл while для обчислення поточного члена ряду й додаванню його до змінної sum. Обчислення спадного ряду з додатними членами припиняються, коли поточний член виявляється менше delta. Сума ряду, а також точність обчислень і кількість врахованих членів ряду виводяться на екран. Потім формується запит, чи потрібно продовжити обчислення даного ряду при іншому значенні delta. Якщо користувач натискає клавішу «y» (yes), програма пропонує знову ввести delta. Якщо ж натиснута будь-яка інша клавіша, обчислення припиняються. Обробка запиту реалізується за допомогою циклу do...while. Алгоритм обчислень подається у вигляді наступної блок-схеми (мал. 4.1):
Мал. 4.1. Блок-схема функції main() обчислення ряду
Відповідно до цієї блок-схеми складаємо програму:
#include <stdio.h>
void main(){
int n=0;
//Ініціалізація змінних значенням 1-го члену ряду
double an=1., sum=1.;
char cont; //Змінна відгуку на запит
float delta; //Змінна точності
do {
//Завдання точності обчислень
printf ("Enter accuracy\n");
scanf("%f", &delta);
//Обчислення членів ряду (n>1) и додавання їх в sum
while (an>delta) {
an*=(double)(n+1)/(2*(2*n+1));
sum+=an;
n++;
};
//Виведення результату
printf ("Accuracy: %.2e ", delta);
printf ("Quantity of terms: %d\n", n);
printf ("Sum of series: %-12.8f\n", sum);
//Запит на продовження обчислень
printf ("Continue? (y/any key)");
scanf("%1s", &cont);
}
while (cont=='y'); //Перевірка результату запиту
}