- •1.1.2 Структура функцій програми
- •1.1.3 Правила синтаксису
- •1.1.4. Типи даних
- •1.1.5. Функції введення та виведення даних
- •1.2 Приклад програми Умова задачі
- •Особливості використання функцій вводу та виводу
- •1.3 Технологія виконання лабораторної роботи
- •1.4. Варіанти завдань
- •1.5 Контрольні запитання
- •Розгалужені обчислювальні процеси Лабораторна робота 2
- •2.1 Теоретичні відомості
- •2.1.1. Вибір із двох альтернатив
- •2.1.2. Вкладеність конструкцій вибору
- •2.1.3. Операторний блок
- •2.1.4. Поліваріантний вибір
- •2.2. Приклади програм
- •2.3. Варіанти завдань
- •2.4 Контрольні запитання
- •Циклічні обчислювальні процеси Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.1.1. Цикл із передумовою
- •3.1.2. Цикл із постумовою
- •3.1.3. Цикл із лічильником
- •3.1.4. Переривання та продовження циклу
- •3.2. Приклад алгоритму та програми
- •3.3. Варіанти завдань
- •3.4 Контрольні запитання
- •Цикли з розгалуженням Лабораторна робота 4
- •4.1 Теоретичні відомості
- •4.1.1. Рекурентні співвідношення
- •4.1.2. Функції користувача
- •4.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Код програми
- •4.3. Варіанти завдань
- •4.4 Контрольні запитання
- •Рекурсивні функції Лабораторна робота 5
- •5.1 Теоретичні відомості
- •5.2. Приклад алгоритму та програми
- •5.3. Варіанти завдань
- •6.1.2. Оголошення та ініціалізація
- •6.1.3. Операції над покажчиками
- •6.1.4. Методи розв’язанні нелінійних рівнянь
- •6.2. Приклад алгоритму та програми
- •6.3. Варіанти завдань
- •6.4 Контрольні запитання
- •Одновимірні масиви Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2. Приклад алгоритму та програми
- •Алгоритм програми
- •Код програми
- •7.3. Варіанти завдань
- •7.4 Контрольні запитання
- •Багатовимірні масиви Лабораторна робота 8
- •8.1 Теоретичні відомості
- •8.1.1. Оголошення багатовимірних масивів. Доступ до елементів
- •8.1.2. Базові операції обробки двовимірних масивів
- •8.2. Приклад алгоритму та програми
- •8.3. Варіанти завдань
- •9.1.2. Деякі функції обробки рядків
- •9.2. Приклад алгоритму та програми
- •9.3. Варіанти завдань
- •9.4 Контрольні запитання
- •Структури та масиви структур Лабораторна робота 10
- •10.1 Теоретичні відомості
- •10.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Приклад коду
- •10.3. Варіанти завдань
- •10.4 Контрольні запитання
Міністерство освіти і науки України
Національний технічний університет України
“Київський політехнічний інститут”
Кафедра автоматизованих систем обробки інформації та управління
Процедурно-орієнтоване програмування мовами С/С++
Методичні вказівки до лабораторних занять
з дисципліни “Алгоритмізація та програмування”
для студентів напряму “Комп’ютерні науки”
спеціальності
“Інформаційні управляючі системи та технології”
Київ 2010
Типи даних. Функції введення - виведення. Обчислення виразів Лабораторна робота 1
Мета роботи.
-
Вивчити особливості використання вбудованих типів даних: char, int, long, short, float, double, unsigned char, unsigned int, unsigned long.
-
Вивчити особливості використання функцій введення - виведення.
-
Навчитися застосовувати стандартні математичні функції.
1.1 Теоретичні відомості
1.1.1. Структура програми
Програма складається з директив препроцесора, функцій, зовнішніх описів програми, коментарів.
Препроцесор - програма, що є складовою частиною компілятора і виконує підключення стандартних або особистих файлів користувача до основної програми, формування макровизначень, умовну компіляцію тощо.
Розрізняють директиви:
включення
#include <ім’я.h > #include "ім’я.h"
макровизначення
#define ім’я значення
умовної компіляції
#if вираз #else #elif вираз #endif
Директива формату #include <ім’я.h> використовується для включення стандартних файлів заголовків з каталогу include до програми користувача. Ці файли містять прототипи функцій, які користувач може використовувати у власній програмі як стандартні функції.
Директива формату #include "ім’я.h" використовується для включення власних файлів користувача до поточного коду.
1.1.2 Структура функцій програми
Функція - це іменована частина програми, що виконує логічно завершений набір дій та може викликатися з будь-якого місця програми, якщо це відповідає синтаксису програми. Функція складається з заголовка і тіла. Формат функції такий:
тип_ значення _що_повертається ім’я_функції (параметри) //заголовок { // тіло функції }
Одна з функцій програми має ім’я main(). Ця функція є точкою входу до програми. З цієї функції починається виконання програми. Якщо параметри відсутні, то в заголовку функції записуються тільки круглі дужки. Наприклад,
тип_ значення _що_повертається main() { ... //тіло функції }
Тіло функції містить оголошення констант, змінних і оператори відповідно до алгоритму. Оголошення можуть бути в довільному місці, але до першого звертання до змінної.
1.1.3 Правила синтаксису
{ } - операторні дужки. Вони об’єднують декілька операторів в один блок, визначають початок і кінець блоку та функції;
; - кінець оператора;
, - роздільник при перерахуванні програмних об’єктів;
( ) - містять параметри функцій або умови логічних та циклічних операторів;
/* */ - містять коментар, що розміщується на декількох рядках;
// - коментар, що розміщується в одному рядку, використовується в С++.
1.1.4. Типи даних
Усі дані поділяються на змінні та константи. Кожна змінна має свій ідентифікатор або своє ім’я. Кожне ім’я змінної відповідає певній області оперативної пам’яті комп’ютера. Кожна змінна характеризується іменем, типом, обсягом оперативної пам’яті та діапазоном значень.
Таблиця 1.1 Характеристика типів змінних
Тип |
Назва типу |
Обсяг оперативної пам’яті |
Діапазон значень |
сhar |
Цілий тип |
8 бітів |
-128 ... +127 |
signed char |
Цілий із знаком |
8 бітів |
-128 ... +127 |
unsigned char |
Без знаковий цілий |
8 бітів |
0 ... 255 |
short int |
Цілий короткий |
16 бітів |
-32768 ... +32767 |
unsigned int |
Без знаковий цілий |
32 бітів |
0 ... 65535 |
int |
Цілий |
32 бітів |
-2147483648 …+2147483647 |
long int |
Цілий довгий |
32 бітів |
-2147483648 …+2147483647 |
unsigned long |
Цілий довгий без знаковий |
32 бітів |
0 ... +429496729 |
float |
З плаваючою крапкою |
32 бітів |
3.4 *10^38 … 3.4 *10^-38 |
double |
З плаваючою крапкою довгий |
64 бітів |
1.7 *10^-308 … 1.7 *10^308 |
long double |
З плаваючою крапкою довгий |
80 бітів |
3.4 *10^-4932 … 3.4 *10^4932 |
Приклад оголошення змінних:
int a; float b,c; char litera; int index=1;
1.1.5. Функції введення та виведення даних
Для виконання дій над даними користувача необхідно їх ввести з клавіатури. Для цього використовується стандартний потік вводу stdin. Для відображення результатів на екрані необхідно застосовувати стандартний потік виводу stdout. Введення та виведення даних здійснюється за допомогою функцій введення та виведення, формати яких приведені у таблиці 1.2.
Таблиця 1.2 Функції введення та виведення
Функція |
Формат введення та виведення |
Призначення |
Приклад |
Заголовний файл |
Результат, що повертається функцією |
_сprintf() |
int _cprintf ( формат, apг1, apг2, ...) |
Виведення на консоль значень аргументів згідно з форматом виведення.
|
int с; _cprint("%d",c); |
сonio.h |
Значення типу int, дорівнює кількості виведених символів |
_cscanf() |
int _cscanf (формат, арг1,aрг2,...) |
Введення з консолі значень змінних згідно з форматом і присвоєння значень аргументам. Аргументами є адреси змінних в оперативній пам’яті. |
int a; char NAME[5]; _cscanf ("%s", Name); _cscanf ("%d", &a); |
сonio.h |
Значення типу int дорівнює кількості змінних, що отримали значення. При невдалому скануванні повертається значення EOF |
_cputs() |
int _cputs (const char *str); |
Виведення на консоль рядка символів. Не додається символ кінця рядка ‘\0’. Borland C++ використовує cputs() |
char NAME[5]; _cputs(NAME); _cputs("Hello"); |
conio.h |
У випадку успіху повертається 0 |
_cgets() |
char *_cgets (char *str); |
Введення з консолі послідовності символів до символу “кінець рядка” (‘\0’), |
char a[5]; _cgets(a); |
conio.h |
Значення типу int, що дорівнює покажчику на символ з індексом 2 (str[2]). |
getch() |
int getch(void); |
Введення символу з консолі без відображення на екрані. Не використовується для Win32. |
int c; c=getch(); |
conio.h |
Код введеного з клавіатури символу |
putch() |
int putch(int c); |
Виведення на консоль символу. Не використовується для Win32 |
putch('В’); putch(getch()); |
conio.h |
Повертається надрукований символ або значення EOF при невдалому виведенні. |
getchar() |
int getchar(void); |
Введення символу із стандартного вхідного файлу stdin. |
int ch; ch=getchar(); |
stdio.h |
Повертається код введеного символу або значення EOF |
putchar() |
int putchar(int c); |
Виведення у стандартний вихідний файл stdout символу. |
putchar(getch()); |
stdio.h |
Повертається символ або значення EOF при невдалому виводу |
gets() |
char *gets ( char *s); |
Введення із стандартного вхідного файлу stdin рядка і розміщення його по покажчику *s |
char line[80]; gets(line); |
stdio.h |
Покажчик на перший символ рядка або NULL при невдалому введенні |
puts() |
int puts (const char *s); |
Виведення у стандартний вихідний файл stdout рядка і доповнення його символом нового рядка ‘\n’ |
char b[80]; puts(b); |
stdio.h |
Повертається невід’ємне значення або EOF при невдалому виведенні |
printf() |
int printf (const char *format, argument, ...); |
Виведення у стандартний вихідний файл stdout значень аргументів згідно з форматом виведення |
int a; float b; char str[10]; printf("%d %f %s", a.b.str); |
stdio.h |
Повертається кількість виведених байтів або від’ємне значення при невдалому виведенні |
scanf() |
int scanf (const char *format, address, ...); |
Введення із стандартного вхідного файлу значень змінних згідно з форматом і розміщення їх за вказаними адресами у оперативній пам’яті. |
char AME[20]; int a; scanf("%s", AME); scanf("%d", &a); |
stdio.h |
Повертається кількість змінних, що отримали значення. При невдалому скануванні повертається значення EOF |
sprintf() |
int sprintf (char *str, const char *format, argument, ...); |
Розміщення у рядку символів значень аргументів із пам’яті згідно з шаблоном. Використовується для перетворення типів даних |
char str[3] sprintf(str,"%d", 13); |
stdio.h |
Повертається кількість виведених символів. |
sscanf() |
sscanf (рядок, формат, арг1, ...); |
Читання із рядка у адреси пам’яті згідно з форматом шаблонів. Використовується для перетворення типів |
int a; float b; char str[5]; sscanf(str,"%d%f", &a, &b); |
stdio.h |
Повертається кількість введених символів або EOF при невдалому введенні |
Специфікації форматів, що використовуються у функціях форматного введення та виведення даних, приводяться у табл. 1.3.
Таблиця 1.3. Специфікації форматів
Функція |
Формат |
scanf() |
%[*] [ширина] тип |
printf() |
% [прапорець] [ширина] [.точність] тип |
Значення полів формату:
% - символ формату.
* - ігнорується поле вводу, дані не зберігаються.
тип - символ, який визначає типи даних, що вводяться та виводяться.
прапорець - символи, які управляють вирівнюванням виводу знаків, пропусків, десяткових точок, восьмирічних та шістнадцятирічних префіксів.
ширина - параметр, який визначає мінімальне число виводу символів.
точність – параметр, який визначає максимальне число символів, що друкуються для цілих чисел, та кількість цифр після десяткової точки для даних типу float, double.
Таблиця 1.4 Специфікації деяких типів
Символ формату |
Тип аргументу |
c |
char |
d |
int |
i |
int (десятковий, восьмирічний, шістнадцятирічний) |
e, f |
float, double |
s |
Рядок символів |
n |
Покажчик на цілий тип |
p |
Покажчик на тип void (задає сегмент та зміщення) |
Специфікації прапорців у функціях форматного виведення |
|
+ |
Виведення знаків +/-, якщо використовується знаковий тип |
- |
Вирівнювання даних зліва |
Таблиця 1.5 Використання класів потоків для операцій вводу, виводу
Формат |
Призначення |
Приклад |
Заголовний файл |
cin >> |
Зумовлений потік введення, >> - операція правого зсуву |
char Name[20]; cin >> Name; |
istream iostream |
cout << |
Зумовлений потік виведення, << - операція лівого зсуву |
int c; char f; cout<< “Hello”; cout<<c<<f; |
ostream iostream |
Таблиця 1.6 Математичні функції
Функція |
Призначення |
Приклад |
Бібліотека |
Тип |
abs |
Модуль аргументу |
abs(c); abs(-b); |
stdlib.h |
int |
acos |
Арккосинус |
acos(0.5) |
math.h |
double |
asin |
Арксинус |
asin(1); |
math.h |
double |
atan |
Арктангенс |
atan(1.0); |
math.h |
double |
cos |
Косинус |
cos(3.14); |
math.h |
double |
exp |
Експонента |
exp(1); |
math.h |
double |
log |
Натуральний логарифм |
log(exp(3) |
math.h |
double |
log10 |
Десятковий логарифм |
log10(100) |
math.h |
double |
pow |
Ступінь числа x^y |
pow(x,y) |
math.h |
double |
sin |
Синус |
sin(3.1/6) |
math.h |
double |
sqrt |
Корінь квадратний |
sqrt(144) |
math.h |
double |
tan |
Тангенс |
tan(3.1/4) |
math.h |
double |