У вас вопросы?
У нас ответы:) SamZan.net

Лабораторна робота 22 Лабораторна робота 22

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 5.3.2025

рограмування  Лабораторна робота № 2_2

Лабораторна робота № 2_2.


"Знайомство з Сі. Виконання програми простої структури"

Мета:  Знайомство з середовищем програмування, створення, відладка і виконання простої програми, що містить введення-виведення інформації і найпростіші обчислення.

1. Короткі теоретичні відомості

Мова СІ створена в 1972 р. Деннісом Рітчи при розробці Ос Unix. Він проектувався як інструмент системного програмування з орієнтацією на розробку добре структурованих програм. Таким чином він поєднує в собі, з одного боку, засоби мови програмування високого рівня: опис типів даних, оператори for, while, if і т.д., а, з другого боку, містить засоби мови типа Ассемблер : регістрові змінні, адресну арифметику, можливість роботи з полями біт і т.д.

1.1. Структура програми

Програма на мові С має наступну структуру:

#директиви препроцесора

. . . . . . . . .

#директиви препроцесора

функція а ( )

оператори

функція в ( )

оператори

void main ( )      //функція, з якою починається виконання програми

оператори

 описи

 привласнення

 функція

 порожній оператор

  складовий

  вибору

  циклів

  переходу

Директиви препроцесора - управляють перетворенням тексту програми до її компіляції. Початкова програма, підготовлена на мові Сі у вигляді текстового файлу проходить 3 етапи обробки:

  1.  препроцесорне перетворення тексту;
  2.  компіляція;
  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.  имя_типа (операнд)

Пріоритети операцій.

Ранг

Операції

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>

  1.  printf ( <форматная строка>,<список аргументов>);

<форматная строка> - рядок символів, укладених в лапки, яка показує, як повинні бути надрукований аргументи. Наприклад:

printf ( “Значення числа Пі дорівнює  %f\n”, pi);

Рядок формату може містити

  1.   символи друковані;
  2.  специфікації перетворення;
  3.  управляючі символи.

Кожному аргументу відповідає своя специфікація перетворення:

%d - десяткове ціле число;

%f -  число з плаваючою крапкою;

%c -  символ;

%s -  рядок.

\n - управляючий символ новий рядок.

2) scanf ( <форматная строка>,<список аргументов>);

Як аргументи використовуються покажчики. Наприклад:

scanf(“ %d%f ” &x,&y);

1.5.2. Введення і виведення в С++

Використовується бібліотечний файл iostream.h, в якому визначені стандартні потоки введення даних з клавіатури cin і виведення даних на екран дисплея cout, а також відповідні операції

  1.  << - операція запису даних в потік;
  2.  >> - операція читання даних з потоку.

Наприклад:

#include <iostream.h>;

. . . . . . . . .

cout << “\nВведіть кількість елементів: ”;

cin >> n;

2. Постановка задачі

  1.  Завдання 1. Обчислити задачу № 2 (про трикутник) стор. 126 у підручнику Глинський Я.М., Анохін В.Є., Ряжська В.А.
  2.  Завдання 1. Обчислити значення виразу при різних типах даних (float і double). Обчислення слід виконувати з використанням проміжних змінних. Порівняти і пояснити отримані результати.
  3.  Завдання 2. Обчислити значення виразів. Пояснити отримані результати.

4. Варіанти

Завдання 1

Завдання 2

1

  1.  n+++m
  2.  m-- >n

3) n-- >m

2

  1.  ++n*++m
  2.  m++<n

3) n++>m

3

  1.  n---m
  2.  m--<n

3) n++>m

4

  1.  n++*m
  2.  n++<m

3) m-- >m

5

  1.  - -m-++n
  2.  m*n<n++

3) n-- > m++

6

  1.  m-++n
  2.  ++m>--n

3) --n<++m

7

  1.  m+--n
  2.  m++<++n

3) n--< --m

8

  1.  n++-m
  2.  m-- >n

3) n-- >m

9

  1.  ++n*++m
  2.  m++<n

3) n++>m

10

  1.  n---m
  2.  m--<n

3) n++>m

11

  1.  n++*m
  2.  n++<m

3) m-- >m

12

  1.  - -m-++n
  2.  m*n<n++

3) n-- > m++

13

  1.  m-++n
  2.  ++m>--n

3) --n<++m

14

  1.  m+--n
  2.  m++<++n

3) n--< --m

15

  1.  n++-m
  2.  m-- >n

3) n-- >m

16

  1.  ++n*++m
  2.  m++<n

3) n++>m

17

  1.  n---m
  2.  m--<n

3) n++>m

18

  1.  n++*m
  2.  n++<m

3) m-- >m

19

  1.  - -m-++n
  2.  m*n<n++

3) n-- > m++

20

  1.  m-++n
  2.  ++m>--n

3) --n<++m

21

  1.  n++-m
  2.  m-- >n

3)n-- >m

22

  1.  ++n*++m
  2.  m++<n

3) n++>m

23

  1.  n---m
  2.  m--<n

3) n++>m

24

  1.  n++*m
  2.  n++<m

3) m-- >m

25

  1.  - -m-++n
  2.  m*n<n++

3) n-- > m++

5. Методичні вказівки

  1.  Для введення і виведення даних можна використовувати операції >> і << і стандартні потоки cin і cout(конструкції мови С++).
  2.  Для обчислення ступеня можна використовувати функцію роw(x,y) з бібліотечного файлу math.h.
  3.  При виконанні завдання 1 треба використовувати допоміжні змінні для зберігання проміжних результатів.

Наприклад: c=pow(а,3);d=3*a*a*b;e=3*a*b*b;f=pow(b,3);

7




1. КОНСПЕКТ ЛЕКЦІЙ з курсу
2. это средства труда которые многократно участвуют в производственном процессе сохраняя при этом свою натур
3. Тема- Отношения между США и РФ в 2014 году Выполнила- Студентка 1 курса Петрусевич Софья
4. Предмет и методы изучения истории государства и права зарубежных стран
5. ПРАВОВОЕ ПОЛОЖЕНИЕ ЮРИДИЕСКИХ ЛИЦ В МЕЖДУНАРОДНОМ ЧАСТНОМ ПРАВЕ
6. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата технічних наук Кіровогра
7. О рекламе Каким должно быть рекламное обращение по содержанию структуре форме От чего зависит его действ
8. Москва ~ наш зелёный дом прошедшей в музеезаповеднике
9. Образ головного персонажу роману Панаса Мирного Хіба ревуть воли, як ясла повні Чіпка Варениченко
10. Глава не пишется