
- •Лабораторна робота №1. Тема: Побудова блок-схем алгоритмів засобами програми Word 2010.
- •Хід роботи
- •Лабораторна робота № 2. Тема: Робота та знайомство в середовищі програмування. Запуск програм на виконання. Редагування тексту.
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №3. Тема: Побудова алгоритмів за допомогою DiagramDesigner.
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №4. Тема:Створення лінійних програм. Процедури вводу та виводу в машинному коді. Описати кожний рядок програми в звіті рукописом!!!!!!!!!!!!!!!!!
- •Теоретичні положення
- •Лабораторна робота №5. Тема: Написання програм використовуючі математичні функції. Освоєння арифметичних операторів. Описати кожний рядок програми від руки.
- •Лабораторна робота №6. Тема: Написання програм використовуючи логічні значення Boolean.
- •Теоретичні відомості
- •Булеві значення.
- •Детальний розпис програми:
- •Лабораторна робота №7. Тема: Типи в програмах.
- •Теоретичні положення
- •Хід роботи
- •Лабораторна робота №8. Тема: Оператор вибору в циклах середовища пргограмування.
- •Хід роботи
- •Оператор вибору варiанту.
- •Циклiчнi алгоритми.
- •Циклiчнi алгоритми
- •Лабораторна робота №9. Тема: Використання процедур та функцiй. Звукові можливості Паскаля.
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №10. Тема: Використання перелiчуваного та обмеженого типу даних.
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №11. Тема: Одновимiрнi масиви.
- •Теоретичні відомості
- •1. Одновимірні масиви (рядки, вектори):
- •Можна і так:
- •Хід роботи
- •Двовимiрнi масиви.
- •Лабораторна робота №12. Тема: Використання множин.
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №13. Стандартн і модулі Crt, Dos, System, Graph, Printer. Робота з клавiатурою
- •Теоретичні відомості
- •Іі семестр. Мова програмування с Лабораторна робота №13. Тема: Проста програма на с: друк рядка тексту
- •Лабораторна робота №14. Тема: Арифметика в с. Використання операцій рівності і відношення
- •Лабораторна робота №15 . Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while
- •Операції інкремента і декремента
- •Лабораторна робота №16. Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while
- •Основи структур повторення while
- •Структура повторення for
- •8. Напишіть і запустіть програму на виконання що написана нижче. Потім напишіть програму що кінцевим числом виведе на екран ваш номер варіанту по списку.
- •Лабораторна робота №17. Тема: Програмні модулі в с. Функції математичної бібліотеки
- •Генерація випадкових чисел
- •Рекурсія
- •Обчислення факторіалів рекурсивною функцією
- •Лабораторна робота №18. Тема: Приклади роботи з масивами
- •Передача масивів у функції
- •Лабораторна робота №19. Тема: Сортування масивів
- •Пошук в масивах
- •Двійковий пошук в сортованому масиві
- •Ініціалізація багатовимірних масивів
- •Лабораторна робота №20. Тема: Покажчики
- •Лабораторна робота №21. Тема: Покажчики
- •Лабораторна робота №22. Тема: Форматоване введення/вивід
- •Лабораторна робота №23. Тема: Використання прапорів в рядку управління форматом printf
- •Лабораторна робота №24. Тема: Використання прапорів в рядку управління форматом printf
- •Лабораторна робота №25. Тема: Структури, об′єднання, операції з бітами і перечисленнями
- •10.18. Використання перечислення Лабораторна робота №26. Тема: Створення файлу послідовного доступу
Лабораторна робота №22. Тема: Форматоване введення/вивід
Мета: Навчитись застосовувати в програмуванні функції вводу/виводу..
Хід роботи
1. Прочитайте теоретичні положення. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Таблиця
Специфікатори перетворення цілих значень
Специфікатор |
Опис |
d |
Виводить десяткове ціле зі знаком. |
і |
Виводить десяткове ціле зі знаком (Примітка: відмінність і і d проявляється у функції scanf). |
О |
Виводить вісімкове ціле без знаку. |
U |
Виводить десяткове ціле без знаку. |
х або X |
Виводить шістнадцятиричне ціле без знаку. Специфікатор X використовується для виведення числа цифрами 0-9 і буквами A - F, а х - для виведення числа цифрами 0-9 і буквами a - f. |
h або 1 (буква 1) |
Поміщається перед специфікатором перетворення цілого, щоб показати, що виводиться ціле відповідно типу short або long. |
Програма, приведена на лістингу 9.2, друкує ціле число, послідовно використовуючи усі специфікатори перетворення цілих. Зверніть увагу, що знак виводиться тільки для негативних чисел, а виведення знаків "плюс" пригнічується. Пізніше в цій главі ми побачимо, як написати формат перетворення так, щоб знаки "плюс" також друкувалися. Також звернете увагу, що значення - 455 друкується з використанням формату %u, і на комп'ютері з двобайтовими цілими воно перетвориться в значення без знаку, рівне 65081.
Поширена помилка програмування 9.2
Друк негативного значення із специфікатором, який припускає наявність
значення без знаку.
/* Використання специфікаторів перетворення цілих значень */
#include <stdio.h>
main()
{
printf("%d\n", 455);
printf ("%i\n", 455); /* в printf i те ж, що і d*/
printf("%d\n", +455);
printf("%d\n", - 455);
printf("%hd\n", 32000);
printf("%ld\n", 2000000000);
Лабораторна робота №1. Тема: Побудова блок-схем алгоритмів засобами програми Word 2010. 3
Лабораторна робота № 2. Тема: Робота та знайомство в середовищі програмування. Запуск програм на виконання. Редагування тексту. 5
Лабораторна робота №3. Тема: Побудова алгоритмів за допомогою DiagramDesigner. 6
Лабораторна робота №4. Тема:Створення лінійних програм. Процедури вводу та виводу в машинному коді. 8
Лабораторна робота №5. Тема: Написання програм використовуючі математичні функції. Освоєння арифметичних операторів. 10
Лабораторна робота №6. Тема: Написання програм використовуючи логічні значення Boolean. 12
Лабораторна робота №7. Тема: Типи в програмах. 15
Лабораторна робота №8. Тема: Оператор вибору в циклах середовища пргограмування. 17
Лабораторна робота №9. Тема: Використання процедур та функцiй. Звукові можливості Паскаля. 21
Лабораторна робота №10. Тема: Використання перелiчуваного та обмеженого типу даних. 25
Лабораторна робота №11. Тема: Одновимiрнi масиви. 27
Лабораторна робота №12. Тема: Використання множин. 30
ІІ семестр. Мова програмування С 34
Лабораторна робота №13. Тема: Проста програма на С: друк рядка тексту 34
Лабораторна робота №14. Тема: Арифметика в С. Використання операцій рівності і відношення 35
Лабораторна робота №15 . Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while 38
Лабораторна робота №16. Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while 41
Лабораторна робота №17. Тема: Програмні модулі в С. Функції математичної бібліотеки 47
Лабораторна робота №18. Тема: Приклади роботи з масивами 57
Лабораторна робота №19. Тема: Сортування масивів 67
Лабораторна робота №20. Тема: Покажчики 80
Лабораторна робота №21. Тема: Покажчики 97
Лабораторна робота №22. Тема: Форматоване введення/вивід 116
Лабораторна робота №23. Тема: Використання прапорів в рядку управління форматом printf 122
Лабораторна робота №24. Тема: Використання прапорів в рядку управління форматом printf 125
Лабораторна робота №25. Тема: Структури, об′єднання, операції з бітами і перечисленнями 128
Лабораторна робота №26. Тема: Створення файлу послідовного доступу 138
return 0;
}
455
455
455
-455
32000
2000000000
707
455
65081
c7
1C7
Лістингу 9.2. Використання специфікаторів перетворення цілих значень
2. Прочитайте теоретичні положення. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Програма, приведена на лістингу 9.4, демонструє три види специфікацій перетворення значень з плаваючою точкою. Зверніть увагу, що специфікації перетворення % Е і % g виводять закруглені значення.
/* Друк чисел з плаваючою точкою з використанням
специфікаторів перетворення значень з плаваючою точкою */
#іnclude <stdio.h>
main ()
{
printf ("%e\n", 1234567.89);
printf ("%e\n", +1234567.89);
printf("%e\n", -1234567.89);
printf("%E\n", 1234567.89);
printf("%f\n", 1234567.89);
printf("%g\n",1234567.89);
printf("%G\n", 1234567.89);
return 0;
}
1.234568e+06
1.234568e+06
-1.234568e+06
1.234568E+06
1234567.890000
1.23457e+06
1.23457E+06
Лістинг 9.4. Використання специфікаторів перетворення значень з плаваючою точкою
3. Друк рядків і символів. Прочитайте теоретичні положення. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Для виведення окремих символів і рядків використовуються відповідно специфікатори перетворення c і s. Для специфікатора перетворення c потрібно аргумент типу char. Для специфікатора перетворення s як аргумент використовується покажчик на char. Специфікатор перетворення s виводить символи до тих пір, поки не зустрінеться обмежувальний символ NULL ('\0'). Програма, показана на лістингу 9.5, виводить символи і рядки із специфікаторами перетворення c і s.
Використання %з для виведення першого символу рядка. Специфікація перетворення %c припускає аргумент типу char. Рядок - це покажчик на char, тобто char *.
Використання %s для виведення аргументу типу char. Специфікація перетворення %s припускає передачу як аргумент покажчика на char. На деяких системах це приведе до фатальної помилки при виконанні програми, званої "несанкціонованим доступом".
Використання одинарних лапок для позначення рядка символів є синтаксична помилка. Рядок символів має бути поміщений в подвійні лапки.
Використання подвійних лапок для позначення символьної константи. Такий запис фактично створює рядок, що містить два символи, другим з яких є символ NULL, що обмежує рядок. Символьна константа містить один символ і повинна полягати в одинарні лапки.
/* Друк рядків і символів */
#include <stdio.h>
main ()
{
char character = 'A';
char string [] = "This is a string";
char *stringPtr = "This is also a string";
printf ("%c\n", character);
printf ("%s\n", "This is a string");
printf ("%s\n", string);
printf("%s\n", stringPtr);
return 0;
}
A
This is a string
This is a string
This is also a string
Лістинг 9.5. Використання специфікаторів перетворення рядків і символів
4. Інші специфікатори перетворення. Друк рядків і символів. Прочитайте теоретичні положення. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Трьома специфікаторами перетворення, що залишилися, є специфікатори р, n і % (лістинг 9.6).
Специфікатор перетворення р виводить адресу, на яку посилається покажчик, в залежному від конкретної реалізації виді (на багатьох системах замість десяткової нотації використовується шістнадцятирична).
У програмі, приведеній на лістингу 9.7, специфікація %р друкує значення ptr і адреси х; ці значення ідентичні, оскільки ptr привласнюється адреса х. Далі % n зберігає число виведених третім оператором printf символів в цілій змінній у, після чого друкується значення у. Останній оператор printf використовує специфікацію % %, щоб надрукувати символ % в рядку символів. Зверніть увагу, що кожен виклик printf повертає або число виведених символів, або негативне значення, якщо при виводі сталася помилка.
/* Застосування специфікаторів перетворення р, n, і % */
#include <stdio.h>
main ()
{
int *ptr;
int x = 12345, y;
ptr = &x;
printf("The value of ptr is %p\n", ptr);
printf("The address of x is %p\n\n", &x);
printf ("Total characters printed on this line is:%n", & у);
printf (" %d\n\n", y);
у = printf ("This line has 28 characters\n");
printf("%d characters were printed\n\n", y);
printf("Printing a %% in a format control string\n");
return 0;
}
The value of ptr is 001F2BB4
The address of x is 001F2BB4
Total characters printed on this line is: 41
This line has 28 characters
8 characters were printed
Printing a % in a format control string
Лістинг 9.7. примінення специфікаторів перетворення p, n та %
Спроба надрукувати символ відсотка як літерал, використовуючи в рядку управління форматом %, а не %%. Якщо в рядку управління форматом з'являється символ %, то за ним повинен йти специфікатор перетворення.
5. Друк із завданням ширини поля і точності представлення. Інші специфікатори перетворення. Прочитайте теоретичні положення. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Точний розмір поля, в якому друкуються дані, задається шириною поля. Якщо ширина поля більша, ніж необхідно для друку даних, то дані зазвичай вирівнюються усередині поля по його правому краю. Ціле число, задаюче ширину поля, вставляється в специфікацію перетворення між знаком відсотка (%) і специфікатором перетворення. Програма, приведена на лістингу 9.8, друкує дві групи з п'яти чисел, вирівнюючи по правому краю ті з них, які містять меншу кількість цифр, чим задано шириною поля. Зверніть увагу, що для виведення значень, що перевищують поточне значення ширини поля, вона автоматично збільшується, і що знак "мінус" негативного значення займає одну символьну позицію поля. Ширина поля може використовуватися з усіма специфікаторами перетворення./* Виведення цілих чисел з вирівнюванням по правому краю */
#include <stdio.h>
main ()
{
Лабораторна робота №1. Тема: Побудова блок-схем алгоритмів засобами програми Word 2010. 3
Лабораторна робота № 2. Тема: Робота та знайомство в середовищі програмування. Запуск програм на виконання. Редагування тексту. 5
Лабораторна робота №3. Тема: Побудова алгоритмів за допомогою DiagramDesigner. 6
Лабораторна робота №4. Тема:Створення лінійних програм. Процедури вводу та виводу в машинному коді. 8
Лабораторна робота №5. Тема: Написання програм використовуючі математичні функції. Освоєння арифметичних операторів. 10
Лабораторна робота №6. Тема: Написання програм використовуючи логічні значення Boolean. 12
Лабораторна робота №7. Тема: Типи в програмах. 15
Лабораторна робота №8. Тема: Оператор вибору в циклах середовища пргограмування. 17
Лабораторна робота №9. Тема: Використання процедур та функцiй. Звукові можливості Паскаля. 21
Лабораторна робота №10. Тема: Використання перелiчуваного та обмеженого типу даних. 25
Лабораторна робота №11. Тема: Одновимiрнi масиви. 27
Лабораторна робота №12. Тема: Використання множин. 30
ІІ семестр. Мова програмування С 34
Лабораторна робота №13. Тема: Проста програма на С: друк рядка тексту 34
Лабораторна робота №14. Тема: Арифметика в С. Використання операцій рівності і відношення 35
Лабораторна робота №15 . Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while 38
Лабораторна робота №16. Тема: Структурна розробка програм. Структура вибору if. Структура вибору if/else. Структура повторення while 41
Лабораторна робота №17. Тема: Програмні модулі в С. Функції математичної бібліотеки 47
Лабораторна робота №18. Тема: Приклади роботи з масивами 57
Лабораторна робота №19. Тема: Сортування масивів 67
Лабораторна робота №20. Тема: Покажчики 80
Лабораторна робота №21. Тема: Покажчики 97
Лабораторна робота №22. Тема: Форматоване введення/вивід 116
Лабораторна робота №23. Тема: Використання прапорів в рядку управління форматом printf 122
Лабораторна робота №24. Тема: Використання прапорів в рядку управління форматом printf 125
Лабораторна робота №25. Тема: Структури, об′єднання, операції з бітами і перечисленнями 128
Лабораторна робота №26. Тема: Створення файлу послідовного доступу 138
printf("%4d\n", - 123);
printf("%4d\n", - 1234);
printf("%4d\n", - 12345);
return 0;
}
1
12
123
1234
12345
-1
-12
-123
-1234
-12345
Завдання недостатньої ширини поля для виведення поточного значення. Це може змістити інші дані, сплутавши усі результати. Стежите за своїми даними!
Функція printf дає також можливість задати точність представлення, з якою будуть надруковані дані. Точність має різний сенс для різних типів даних. Якщо вона використовується із специфікаторами перетворення цілих чисел, то показує мінімальна кількість цифр, яка має бути виведена. Якщо значення, що виводиться, містить менше цифр, чим задано точністю, то перед ним будуть надруковані префіксні нулі, так щоб загальна кількість цифр стала рівно заданій точності. Для цілих чисел точність за умовчанням дорівнює 1. Якщо точність використовується із специфікаторами перетворення значень з плаваючою точкою е, Е і f, то точність - це кількість цифр, яка буде надруковано після десяткової точки. Для специфікаторів перетворення g і G точність - це максимальна кількість значущих цифр, яка буде виведено. Для специфікатора перетворення s точність - це максимальне число символів рядка, яке буде надруковано. Щоб використовувати точність представлення, помістите між знаком відсотка і специфікатором перетворення десяткову точку (.) з наступним цілим числом, задаючим точність представлення даних. Програма, приведена на лістингу 9.9, показує варіанти завдання точності представлення даних в рядках управління форматом. Зверніть увагу, що якщо при друці значень з плаваючою точкою задана менша точність, чим число десяткових розрядів дробової частини початкового значення, то це значення округляється.
Ширина поля і точність представлення можуть бути об'єднана, для чого між знаком відсотка і специфікатором перетворення треба вставити значення ширини поля, десяткову точку і наступне значення точності, як в наступному операторові:
printf("%9.3f", 123.456789);
Він виводить 123.457 з трьома цифрами праворуч від десяткової точки і вирівнює результат по правому краю поля, шириною 9 цифр.
/* Використання точності представлення при друці цілих чисел, чисел з плаваючою точкою і рядків */
##include <stdio.h>
main ()
{
int i = 873;
float f = 123.94536;
char s[] = "Happy Birthday";
printf("Using precision for integers\n");
printf ( "\t%.4d\n\t%.9d\n\n", i, i);
printf("Using precision for floating - point numbers\n");
printf("\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f);
printf("Using precision for strings\n");
printf("\t%.11s\n", s);
return 0;
}
Using precision for integers
0873
000000873
Using precision for floating - point numbers
123.845
1.239e+02
124
Using precision for strings
Happy Birth
Лістинг 9.9. Використання точності представлення для виведення інформації різного типу
Ширину поля і точність представлення можна задати, використовуючи цілочисельні вирази в списку аргументів після рядка управління форматом. Щоб це зробити, вставте * (зірочку) замість ширини поля або точність (чи замість того і іншого). Зірочки при друці будуть замінені відповідними значеннями із списку аргументів. Значення аргументу для ширини поля може бути негативним, але для точності представлення має бути тільки позитивним. Негативне значення ширини поля призводить до вирівнювання виводу по лівому краю поля, як описано в наступному розділі. Оператор
printf ("%*.*f", 7, 2, 98.736);
використовує значення 7 для ширини поля, 2 для точності представлення і виводить значення 98.74 з вирівнюванням по правому краю поля.