
- •Лабораторна робота №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. Тема: Створення файлу послідовного доступу
Лабораторна робота №24. Тема: Використання прапорів в рядку управління форматом printf
Мета: Навчитися використовувати прапори в рядку управління форматом printf.
Хід роботи
1. Друк літералів і Еsc –последовательностей. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Програма, приведена на лістингу 9.18, читає цілі числа з різними специфікаторами перетворення цілих чисел і виводить їх в десятковій нотації. Зверніть увагу, що специфікатор %i дає можливість вводити десяткові, вісімкові і шістнадцятиричні цілі числа.
/* Читання цілих чисел */
#include <stdio.h>
main ()
{
int a, b, c, d, e, f, g;
printf("Enter seven integers: ");
scanf("%d%i%i%i%o%u%x", &a, &b, &c, &d, &e, &f, &g);
printf("The input displayed as decimal integers is:\n");
printf("%d %d %d %d %d %d %d\n", a, b, c, d, e, f, g);
return 0;
}
Enter seven integers: - 70 -70 070 0x70 70 70 70
The input displayed as decimal integers is:
-70 -70 56 112 56 70 112
Лістинг 9.18. Читання вхідних даних зі специфікаторами перевтілення цілих чисел
При введенні чисел з плаваючою точкою може бути використаний будь-яким із специфікаторів перетворення значень з плаваючою точкою: е, Е, f, g або G. Програма на лістингу 9.19 читає три числа з плаваючою точкою з трьома видами специфікаторів перетворення і виводить їх із специфікатором перетворення f. Зверніть увагу, що результат виконання програми підтверджує той факт, що виведені значення з плаваючою точкою не є точними. Про це свідчить друге по рахунку надруковане значення.
/* Читання значень з плаваючою точкою */
#include <stdio.h>
main ()
{
float a, b, c;
printf("Enter three floating - point numbers: \n");
scanf("%e%f%g", &a, &b, &c);
printf("Here are the numbers entered in plain\n");
printf("floating - point notation:\n");
printf("%f %f %f\n", a, b, c);
return 0;
}
Enter three floating - point numbers:
1.27987 1.27987e+03 3.38476e-06
Here are the numbers entered in plain
floating - point notation
1.279870
1279.869995
0.000003
Лістинг 9.19. Читання вхідних даних із специфікаторами перетворення значень
з плаваючою точкою
2. Друк літералів і Еsc –последовательностей. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Символи і рядки вводяться с використанням специфікаторів перетворення відповідно c і s. Програма на лістингу 9.20 пропонує користувачеві ввести рядок. Програма прочитує перший символ рядка із специфікацією % с і зберігає його в символьній змінній х; потім вводить частину рядка, що залишилася, із специфікацією %s і зберігає її в масиві символів у.
Послідовність символів можна ввести, використовуючи набір сканування. Набір сканування - це список символів, що поміщений в квадратні дужки [], йде відразу за знаком відсотка в рядку управління форматом. Набір сканування переглядає символи у вхідному потоці, вибираючи тільки ті з них, які містяться в наборі символів. Кожного разу при збігу символу він зберігається у відповідному аргументі набору сканування. Аргумент - це покажчик на масив символів. Набір сканування припиняє читати символи після того, як зустрічається символ, що не міститься в наборі. Якщо вже перший символ вхідного потоку не відповідає жодному з символів набору, то в масиві зберігається тільки нульовий символ. Програма на лістингу 9.21 використовує набір символів сканування [aeiou] для відбору голосних з вхідного потоку. Зверніть увагу, що прочитуються тільки перші сім введених символів. Восьмий символ (h) не міститься в заданому наборі і введення завершується.
/* Читання символів і рядків */
#include <stdio.h>
main ()
{
char x, у [ 9] ;
printf("Enter a string: ");
scanf("%c%s", &x, y);
printf("The input was:\n");
printf("the character \"%c\" ", x);
printf("and the string \"%s\"\n", y);
return 0;
}
Enter a string: Sunday
The input was:
the character "S" and the string "unday"
Лістингу 9.20. Введення символів і рядків
/* Застосування набору сканування */
#include <stdio.h>
main ()
{
char z [ 9 ] ;
printf("Enter a string: ");
scanf("%[aeiou]"z);
printf("The input was \"%s\"\n", z);
return 0;
}
Enter a string: ooeeooahah
The input was "ooeeooa"
Лістингу 9.21. Застосування набору сканування
3. Друк літералів і Еsc –последовательностей. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Набір сканування можна також використовувати для введення символів, що не містяться в заданому списку, якщо застосувати інвертований набір сканування. Щоб інвертувати набір символів, помістите символ ^ в квадратні дужки перед першим символом набору. В цьому випадку в масиві зберігатимуться тільки ті символи, які не входять в набір. Інвертований набір завершує введення після появи у вхідному потоці символу, який є в наборі. Програма на лістингу 9.22 використовує набір [^aeiou] для пошуку у вхідному потоці символів, що не є голосними.
Для читання певного числа символів з вхідного потоку із специфікацією перетворення scanf може використовуватися значення ширини поля. Програма на лістингу 9.23 читає ряд послідовних цифр як ціле число з двома десятковими розрядами і ціле число, що складається із залишку цифр вхідного потоку.
/* Застосування інвертованого набору сканування */
#include <stdio.h>
main ()
{
char z [ 9 ] ;
printf("Enter a string: ");
scanf("%[^aeiou]"z);
printf("The input was \"%s\"\n", z);
return 0;
}
Enter a string:
The input was “Str”
Лістингу 9.22. Примечание інвертованого набору сканування
/* Ввід даних із завданням ширини поля*/
#include <stdio.h>
main ()
{
int x,y;
printf (“Enter a six digit integer: “);
scanf ( “%2d%d”, &x, &y);
printf (“The integers input were %d and %d\n”, x, y);
return 0;
}
Enter a six digit integer: 123456
The integers input were 12 and 3456
Лістингу 9.23. Введення даних із завданням ширини поля
4. Друк літералів і Еsc –последовательностей. Напишіть програми, на лістингах що нижче, проаналізуйте її.
Часто буває необхідно пропустити деякі символи вхідного потоку.
Наприклад, дата могла б бути введена як
7-9-91
Кожне число дати вимагається зберегти, але символи тире, якими вони розділені, можуть бути відкинуті. Щоб усунути непотрібні символи, включите їх в рядок управління форматом scanf (пробільні символи - пропуск, новий рядок і табуляція - пропускають усі пробільні символи, передуючі значущим даним). Наприклад, щоб пропустити символи тире при введенні дати, використовуйте оператор
scanf ("%d-%d-%d", &month, &day, &year);
Хоча scanf і усуває тире в попередньому прикладі, дата може бути введена і в наступному форматі:
7/9/91
В цьому випадку попередній оператор scanf не пропустив би непотрібні символи. З цієї причини scanf має можливість встановити символ пригнічення привласнення* (зірочка). Символ пригнічення привласнення дає можливість scanf читати будь-який тип даних і відкидати їх, не привласнюючи змінної. Програма на лістингу 9.24 використовує символ пригнічення привласнення в специфікації перетворення % з для вказівки того, що символ, що з'являється у вхідному потоці, має бути прочитаний і відкинутий. Зберігаються тільки значення місяця, дня і року. Для демонстрації коректності введення програма друкує введені значення. Зверніть увагу, тут немає таких змінних в списку аргументів, які відповідали б специфікаціям перетворення з символом пригнічення привласнення, оскільки для цих специфікацій перетворення привласнення не виконується.
/* Читання і відкидання символів з вхідного потоку */
#include <stdio.h>
main ()
{
int month1, day1, year1, month2, day2, year2;
printf("Enter a date in the form mm - dd - yy: ");
scanf("%d%*c%d%*c%d", &month1, &day1, &year1);
printf("month = %d day = %d year = %d\n\n", month1, day1, year1);
printf("Enter a date in the form mm/dd/yy: ");
scanf("%d%*c%d%*c%d", &month2, &day2, &year2);
printf("month = %d day = %d year = %d\n", month2, day2, year2);
return 0;.
}
Enter a date in the form mm - dd - yy: 11-18-71
month = 11 day = 18 year = 71
Enter a date in the form mm/dd/yy: 11/18/71
month = 11 day = 18 year = 71
Лістингу 9.24. Читання і відкидання символів з вхідного потоку