Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
рограмування Лабораторна робота № 2_2
Мета: Знайомство з середовищем програмування, створення, відладка і виконання простої програми, що містить введення-виведення інформації і найпростіші обчислення.
1. Короткі теоретичні відомості
Мова СІ створена в 1972 р. Деннісом Рітчи при розробці Ос Unix. Він проектувався як інструмент системного програмування з орієнтацією на розробку добре структурованих програм. Таким чином він поєднує в собі, з одного боку, засоби мови програмування високого рівня: опис типів даних, оператори for, while, if і т.д., а, з другого боку, містить засоби мови типа Ассемблер : регістрові змінні, адресну арифметику, можливість роботи з полями біт і т.д.
1.1. Структура програми
Програма на мові С має наступну структуру:
#директиви препроцесора
. . . . . . . . .
#директиви препроцесора
функція а ( )
оператори
функція в ( )
оператори
void main ( ) //функція, з якою починається виконання програми
оператори
описи
привласнення
функція
порожній оператор
складовий
вибору
циклів
переходу
Директиви препроцесора - управляють перетворенням тексту програми до її компіляції. Початкова програма, підготовлена на мові Сі у вигляді текстового файлу проходить 3 етапи обробки:
Після цих 3 етапів формується виконуваний машинний код програми.
Задача препроцесора - перетворення тексту програми до її компіляції. Правила препроцесорної обробки визначає програміст за допомогою директив препроцесора. Директива починається з #. Наприклад
1) #define - указує правила заміни в тексті.
#define ZERO 0.0
Означає, що кожне використовування в програмі імені ZERO замінюватиметься на 0.0.
2) #include< ім'я заголовного файла> - призначена для включення в текст програми тексту з каталога «Заголовних файлів», що поставляються разом із стандартними бібліотеками. Кожна бібліотечна функція Сі має відповідний опис в одному із заголовних файлів. Список заголовних файлів визначений стандартом мови. Вживання директиви include не підключає відповідну стандартну бібліотеку, а тільки дозволяють вставити в текст програми опису з вказаного заголовного файлу. Підключення кодів бібліотеки здійснюється на етапі компоновки, тобто після компіляції. Хоча в заголовних файлах містяться всі описи стандартних функцій, в код програми включаються тільки ті функції, які використовуються в програмі.
Після виконання препроцесорної обробки в тексті програми не залишається жодної препроцесорної директиви. Програма є набором описів і визначень, і складається з набору функцій. Серед цих функцій завжди повинна бути функція з ім'ям main. Без неї програма не може бути виконана. Перед ім'ям функції поміщаються відомості про тип що повертається функцією значення (тип результату). Якщо функція нічого не повертає, то указується тип void: void main ( ). Кожна функція, у тому числі і main повинна мати набір параметрів, він може бути порожнім, тоді в дужках указується (void).
За заголовком функції розміщується тіло функції. Тіло функції - це послідовність визначень, описів і виконуваних операторів, укладених у фігурні дужки. Кожне визначення, опис або оператор закінчується крапкою з комою.
Визначення - вводять об'єкти (об'єкт - це іменована область пам'яті, окремий випадок об'єкту - змінна), необхідні для уявлення в програмі оброблюваних даних. Прикладом є
int у = 10 ; //іменована константа
float x ; //змінна
Описи - повідомляють компілятор про властивості і імена об'єктів і функцій, описаних в інших частинах програми.
Оператори - визначають дії програми на кожному кроці її виконання.
1.2. Константи і змінні
Константа - це значення, яке не може бути змінене. Синтаксис мови визначає 5 типів констант:
символи;
константи перелічувального типу;
дійсні числа;
цілі числа;
нульовий покажчик (NULL).
Змінні можна змінювати. При завданні значення змінної у відповідну їй область пам'яті поміщається код цього значення. Доступ до значення можливий через ім'я змінної, а доступ до ділянки пам'яті - за його адресою. Кожна змінна перед використанням в програмі повинна бути визначена, тобто їй повинна бути виділена пам'ять. Розмір ділянки пам'яті, що виділяється для змінної і інтерпретація вмісту залежать від типу, вказаного у визначенні змінної. Найпростіша форма визначення змінних:
тип список_імен_змінних;
Основні типи даних
тип даних |
Назва |
розмір, битий |
діапазон значень |
unsigned char |
беззнаковий цілий завдовжки не менше 8 біт |
8 |
0 . . 255 |
char |
цілий завдовжки не менше 8 біт |
8 |
-128 . . 127 |
enum |
перелічувальний |
16 |
-32768 . . 32767 |
unsigned int |
беззнаковий цілий |
16 |
0 . . 65535 |
short int (short) |
короткий цілий |
16 |
-32768 . . 32767 |
unsigned short |
беззнаковий короткий цілий |
16 |
0 . . 65535 |
int |
Цілий |
16 |
-32768 . . 32767 |
unsigned long |
беззнаковий довгий цілий |
32 |
0 . . 4294967295 |
long |
довгий цілий |
32 |
-214748348 . . 2147483647 |
float |
Дійсний одинарній точності |
32 |
3.4Е-38 . . 3.4Е+38 |
double |
Дійсний подвійній точності |
64 |
1.7Е-308 . . 1.7Е+308 |
long double |
Дійсний максимальній точності |
80 |
3.4Е-4932 . . 1.1Е+4932 |
Відповідно до синтаксису мови змінні автоматичної пам'яті після визначення за умовчанням мають невизначені значення. Змінним можна привласнювати початкові значення, явно указуючи їх у визначеннях:
тип імя_змінної = початкове_значення;
Цей прийом називається ініціалізацією.
Приклади:
float pi = 3.14, cc=1.3456;
unsigned int year = 1999;
1.3. Операції
Унарні (такі, які мають лише один операнд. Наприклад, запис -А означає застосування до операнду А операції унарного мінуса):
& |
отримання адреси операнда |
* |
звертання за адресою |
- |
унарний мінус, міняє знак арифметичного операнда |
~ |
порозрядне інвертування внутрішнього двійкового коду (побітове заперечення) |
! |
логічне заперечення (НІ). Як логічні значення використовується 0 - НІ і не 0 - ТАК, запереченням 0 буде 1, запереченням будь-якого ненульового числа буде 0. |
++ |
збільшення на одиницю: префіксна операція - збільшує операнд до його використовування постфіксна операція збільшує операнд після його використовування. |
- - |
зменшення на одиницю: префіксна операція - зменшує операнд до його використовування постфіксна операція зменшує операнд після його використовування. |
sizeof |
обчислення розміру (в байтах) для об'єкту того типа, який має операнд |
Бінарні операції (Більшість операцій мають два операнди, один з яких розташовується перед знаком операції, а інший - після. Наприклад, два операнди має операція додавання А+В. Операції, які мають два операнди називаються бінарними).
Аддитивні:
+ |
бінарний плюс (складання арифметичних операндів) |
- |
бінарний мінус (віднімання арифметичних операндів) |
Мультиплікативні:
* |
множення операндів арифметичного типу |
/ |
розподіл операндів арифметичного типу (якщо операнди цілочисельні, то виконується цілочисельний розподіл) |
% |
отримання залишку від розподілу цілочисельних операндів |
Операції зсуву (визначені тільки для цілочисельних операндів).
Формат виразу з операцією зсуву:
операнд_ліворуч операція_сзуву операнд_правий
<< |
зсув вліво бітового представлення значення лівого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда |
>> |
зсув вправо бітового представлення значення правого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда |
Порозрядні операції:
& |
порозрядна кон'юнкція (І) бітових представлень значень цілочисельних операндів |
| |
порозрядна диз'юнкція (АБО) бітових представлень значень цілочисельних операндів |
^ |
що порозрядне виключає АБО бітових представлень значень цілочисельних операндів |
Операції порівняння:
< |
менше ніж |
> |
більше, ніж |
<= |
менше або рівно |
>= |
більше або рівно |
== |
Рівно |
!= |
не рівно |
Логічні бінарні операції:
&& |
кон'юнкція (И) цілочисельних операндів або відносин, цілочисельний результат брехня(0) або істина(1) |
|| |
диз'юнкція (АБО) цілочисельних операндів або відносин, цілочисельний результат брехня(0) або істина(1) |
Умовна операція.
На відміну від унарних і бінарних операцій в ній використовується три операнди.
Вираз 1? Вираз 2 : Вираз 3;
Першим обчислюється значення виразу 1. Якщо воно істинне, то обчислюється значення виразу 2, яке стає результатом. Якщо при обчисленні виразу 1 вийде 0, то як результат береться значення виразу 3.
Наприклад:
x<0 ? -х : x ; //обчислюється абсолютне значення x.
Операція явного (перетворення) приведення типу.
Існує дві форми: канонічна і функціональна:
Пріоритети операцій.
Ранг |
Операції |
1 |
( ) [ ] -> . |
2 |
! ~ - ++ -- & * (тип) sizeof тип( ) |
3 |
* / % (мультиплікативні бінарні) |
+ - (адитивні бінарні) |
|
5 |
<< >> (порозрядного зсуву) |
6 |
< > <= >= (відносини) |
7 |
== != (відносини) |
8 |
& (порозрядна кон'юнкція «И») |
9 |
^ (що порозрядне виключає «АБО») |
10 |
| (порозрядна диз'юнкція «АБО») |
11 |
&& (кон'юнкція «И») |
12 |
|| (диз'юнкція «АБО») |
13 |
?: (умовна операція) |
14 |
= *= /= %= -= &= ^= |= <<= >>= (операція привласнення) |
15 |
(операція кома) |
1.4. Вирази
З констант, змінних, роздільників і знаків операцій можна конструювати вирази. Кожний вираз складається з одного або декількох операндів, символів операцій і обмежувачів, як які частіше за все виступають квадратні дужки. Якщо вираз формує ціле або речовинне число, то цей арифметичний вираз. В арифметичних виразах допустимі операції: + - * / %.
Відношення - це пара арифметичних виразів, з'єднаних знаком операції відношення. Логічний тип в Сі відсутній, тому прийнято, що відношення має ненульове значення, якщо воно істинне і 0, якщо воно помилкове.
1.5. Введення і виведення
1.5.1. Введення і виведення в стандартному Сі
Обмін даними із зовнішнім світом програма на стандартному Сі реалізує за допомогою бібліотеки функцій введення-виведення
#include <stdoi.h>
<форматная строка> - рядок символів, укладених в лапки, яка показує, як повинні бути надрукований аргументи. Наприклад:
printf ( “Значення числа Пі дорівнює %f\n”, pi);
Рядок формату може містити
Кожному аргументу відповідає своя специфікація перетворення:
%d - десяткове ціле число;
%f - число з плаваючою крапкою;
%c - символ;
%s - рядок.
\n - управляючий символ новий рядок.
2) scanf ( <форматная строка>,<список аргументов>);
Як аргументи використовуються покажчики. Наприклад:
scanf(“ %d%f ” &x,&y);
1.5.2. Введення і виведення в С++
Використовується бібліотечний файл iostream.h, в якому визначені стандартні потоки введення даних з клавіатури cin і виведення даних на екран дисплея cout, а також відповідні операції
Наприклад:
#include <iostream.h>;
. . . . . . . . .
cout << “\nВведіть кількість елементів: ”;
cin >> n;
2. Постановка задачі
4. Варіанти
№ |
Завдання 1 |
Завдання 2 |
1 |
3) n-- >m |
|
2 |
3) n++>m |
|
3 |
3) n++>m |
|
4 |
3) m-- >m |
|
5 |
3) n-- > m++ |
|
6 |
3) --n<++m |
|
7 |
3) n--< --m |
|
8 |
3) n-- >m |
|
9 |
3) n++>m |
|
10 |
3) n++>m |
|
11 |
3) m-- >m |
|
12 |
3) n-- > m++ |
|
13 |
3) --n<++m |
|
14 |
3) n--< --m |
|
15 |
3) n-- >m |
|
16 |
3) n++>m |
|
17 |
3) n++>m |
|
18 |
3) m-- >m |
|
19 |
3) n-- > m++ |
|
20 |
3) --n<++m |
|
21 |
3)n-- >m |
|
22 |
3) n++>m |
|
23 |
3) n++>m |
|
24 |
3) m-- >m |
|
25 |
3) n-- > m++ |
5. Методичні вказівки
Наприклад: c=pow(а,3);d=3*a*a*b;e=3*a*b*b;f=pow(b,3);
7