Ім'я файлу: ОП_лр2.doc
Розширення: doc
Розмір: 180кб.
Дата: 22.10.2023
скачати
Пов'язані файли:
Записка .doc
Software Testing - Base Course (Svyatoslav Kulikov) - 3rd editio
ÊÐ ÒÅÑÒÓÂÀÍÍß.docx
385681.rtf

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

Створення простого консольного застосунку

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

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

#include <ім’я_бібліотеки>

int main()

{

{тіло функції}

}

директива#include <імя_бібліотеки>, підключає до шаблону файл заголовків з іменем вказаної бібліотеки, що необхідний для функціонування використаних функцій

головна функція (primary function), що включає заголовок функції

int main(){}

тіло функції– блокіз пари фігурних дужок, який може містити оператор return 0; – вихід із програми із кодом завершення 0.

Основні типи даних

int цілий,

float дійсний,

double дійсний тип подвійної точності,

char символьний.

Функції форматованого введення-виведення

Вивід десяткових чисел

Для форматованого введення-виведення використовується бібліотека функцій введення-виведення

#include "stdio.h"

Для виведення даних у вікно прорами використовується стандартна функція printf():

printf(<рядок_опису_форматів> [, <список_даних>]);

Функція printf() повертає кількість виведених символів. Значення EOF повідомляє про помилку.

Кількість специфікацій формату має дорівнювати кількості змінних, що виводяться.

Специфікація формату:

% [прапорець] [ширина] [.точність] [h|l|L] символ_формату

В [квадратних дужках] вказані необов’язкові поля.

прапорець

Призначення

-

притискає значення, що виводиться до лівої границі виділеного поля (за замовченням – до правої)

+

обов’язковий режим виведення знаку (навіть для позитивних значень)

проміжок

для позитивних чисел замість знака «+» виводиться проміжок

0

встановлює режим виводу, при якому старші незначущі позиції заповнюються нулями

#

впливає на формат чисел у восьмирічній (префікс 0), шістнадцятирічній (префікс 0x або 0X) системах числення та дійсних чисел;

для форматів f, e, та E – як роздільник між цілою та дробовою частинами відображається десяткова крапка (якщо дробова частина 0 – відображається лише ціла частина).

ширина – мінімальна кількість позицій, призначених для відображення даних.

точність – кількість позицій, що відводяться для відображення дробової частини числа.

Символи формату

Символ

формату

Тип значення, що виводиться

c, С

char; одиничний літерал (символ)

d, i

int; цілі зі знаком

o

int; без знакові цілі у восьмирічній системі числення

u

int; цілі без знаку

x, X

int; без знакові цілі у шістнадцятирічній системі числення

f

float; дійсні числа типу float (фіксована крапка)

lf

double; дійсні числа типу double (фіксована крапка)

e, E

double; дійсні числа в експоненційній формі (плаваюча крапка)

g, G

double; дійсні числа

P

void; вказівник

%

знак %

Наприклад, якщо у програмі оголошені змінні

int k=-25;

unsigned int j=7;

float x=-4.55;

double y=3.125E-2;

то оператором

printf("%d%u%f%lf",k,j,x,y);

буде виведено рядок

-25 7 -4.5500000.031250

Керуючі символи, чи escape-послідовності

'\a' '\07' '\x07' Звуковий сигнал

'\b' '\08' '\x08 Повернення на одну позицію назад

'\f' '\14' '\x0c Прогін сторінки

'\n' '\12' '\x0a' Перехід на новий рядок

'\r' '\15' '\x0d' Повернення каретки

'\t' '\11' '\x09' Горизонтальна табуляція

'\v' '\13' '\x0b' Вертикальна табуляція

'\\' '\134' '\x5c' Зворотна коса риса

'\'' '\47' '\x27' Апостроф

'\"' '\42' '\x22' Подвійні лапки

'\?' '\77' '\x77' Знак питання

Введення десяткових чисел з клавіатури

Для форматованого виведення даних використовується функція scanf():

scanf(<рядок_опису_форматів> [, <список_даних>]);

Список параметрів scanf() складається із двох частин: рядка формату і списку даних. Рядок опису форматів відповідає специфікації формату визначеного для функції printf і визначає, яким чином повинні бути інтепретовані дані, що вводяться.

Список даних містить адреси змінних, до яких будуть записані значення що вводяться. Адрес змінної розраховується за допомогою унарної операції &. Кількість специфікацій формату має дорівнювати кількості змінних, зазначених у списку даних.

Наприклад, якщо у програмі об’явлені змінні

int k;

unsigned int j;

float x;

double y;

і необхідно їх ініціалізувати (задати їм значення), то можна застосувати виклик

scanf("%d %u %f %lf",&k,&j,&x,&y);

В результаті користувачем буде введено 3 числа:

змінна k – число ціле зі знаком;

j – число ціле без знаку;

x – число дійсне типу float;

y – число дійсне типу double.

Функції потокового введення-виведення

Для потокового введення-виведення використовується бібліотека функцій введення-виведення

#include < iostream>

Організація введення і виведення даних здійснюється за допомогою операцій запису до потоку << та зчитування даних з потоку >>.

Функція cout

cout << данні;

У якості даних можуть бути зазначені літерали, змінні, елементи масивів, результати обчислення функцій і т.п.

Приклад.

#include

using namespace std;

// Введення значення у змінну x із стандартного потоку cin

cin >> x;

// Вивід значення змінної x в стандартний потік cout

cout << x;

// Ввід двох змінних

cin >> x >> y;

// Функція endl здійснює переведення каретки

cout << "x = " << x << "\ny = " << y << endl;

Функція cin

cin >> дані;

У якості даних можуть бути зазначені змінні, елементи масивів, структури.

При введенні та виведенні даних можуть бути утворені „ланцюжки” операцій, наприклад

cin >> i >> y;

cout << "x = " << x << "\ny = " << y;

Приклад розв’язку задачі

Для використання функції scanf() необхідно відредагувати файл #include "stdafx.h" додавши макровизначення

# define _CRT_SECURE_NO_WARNINGS

Файл "stdafx.h"

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

// are changed infrequently

#pragma once

#include "targetver.h"

# define _CRT_SECURE_NO_WARNINGS

#include

#include

// TODO: reference additional headers your program requires here

Або використовуємо функцію scanf_s

Завдання. Визначити полощу квадрату, за значенням його сторони.

Лістинг А:


Лістинг B:


#include "stdio.h"

#include "windows.h"


int main()

{

double A=2.0, S;

//Розрахунок значення виразу

S=A*A;

printf("S = %lf\n",S);

system("pause");

return 0;

}


#include "stdio.h"

#include "windows.h"


int main()

{

double A=2, S;

//Введення початкових даних

printf("input A: ");

scanf_s("%lf",&A);

// Розрахунок значення виразу

S=A*A;

//Виведення результату

printf("S = %lf\n",S);

system("pause");

return 0;

}


Рядок using namespace std; - відкриває простір імен бібліотеки iostream.

Запуск програми F5.

Лістинг C:

#include

#include "windows.h"
using namespace std;
int main()

{

double A, S;

// для кирилиці

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

//введення даних

cout << "Введіть A: ";

cin >> A;

//розрахунок формули

S = A*A;

//Виведення результату

cout << "S =" << S << endl;

system("pause");

return 0;

}

Запуск програми F5.

Рядок using namespace std; - відкриває простір імен бібліотеки iostream.

ЗАВДАННЯ ДЛЯ САМОСТІЙНОЇ РОБОТИ

  1. Скласти програму розв’язку задачі у середовищі Visual Studio.

  2. Вхідні дані – цілочисельні; результат – дійсного типу.

  3. Реалізувати два варіанти програмного коду:

2.1 Введення/виведення здійснюється функціями потокового введення/виведення (приклад А, B)

а) вхідні дані задані у програмі;

б) вхідні дані задаються користувачем;

2.2 Введення/виведення здійснюється функціями форматного введення/виведення (приклад C)

а) вхідні дані задані у програмі;

б) вхідні дані задаються користувачем;

  1. На екран вивести результат обчислень.

Варіанти завдань:

    1. Квіткова клумба має форму круга. Обчислити її периметр і площу за заданим радіусом ( , ).

    2. Обчислити периметр і площу прямокутного трикутника за заданим катетом та гострим кутом ( , ; a,b – катети; р – напівпериметр).

    3. Ділянка лісу має форму рівнобічної трапеції. Обчислити її периметр і площу за заданими сторонами ( , ).

    4. Обчислити довжину гіпотенузи та площу прямокутного трикутника за заданими двома катетами ( ).

    5. Обчисліть вартість поїздки на авто на дачу (у обидві сторони). Початковими даними є відстань до дачі (км); кількість бензину, яку потребляє авто на 100 км пробігу; ціна одного літру бензину.

    6. Обчислити площу бічної поверхні та об’єм за заданою висотою h та радіусом r.

    7. Квіткова клумба має площу квадрата. Обчислити її периметр і площу за заданою стороною.

    8. Поїзд їхав t1 годин зі швидкістю v1 км/год., t2 годин зі швидкістю v2 і t3 годин зі швидкістю v3. Визначити пройдені шляхи з різною швидкістю і повний шлях.

    9. Обчислити катет та площу прямокутного трикутника за заданими гіпотенузою та другим катетом.

    10. Обчислити сторону та площу квадрата, якщо відома його діагональ d.

    11. Телефонні розмови з трьома населеними пунктами коштують с1, с2, с3 коп./хв. Розмови тривали t1, t2, t3 хв. відповідно. Яку суму нарахує комп’ютер до оплати за кожну і всі розмови.

    12. Тіло падає з прискоренням g. Визначити пройдений тілом шлях після першої та другої секунд падіння.

    13. Ресторан закуповує щодня масло m1 кг по 45.50 грн. за кілограм, сметану m2 кг по 17.40 грн. за кілограм, вершки m3 кг по 31.50 грн. за кілограм. Визначити суми, потрібні для купівлі окремих продуктів, і загальну суму.

    14. Скільки секунд має доба, тиждень, рік?

    15. Ціни на два види товарів зросли на р відсотків. Вивести старі та нові ціни.

    16. Радіус Місяця 1740 км. Обчислити площу його поверхні та об’єм .

    17. Обчислити кінетичну та потенціальну енергії тіла заданої маси m, яке рухається на висоті h зі швидкістю v.

    18. Обчислити об’єм та площу бічної поверхні куба, якщо відоме ребро.

    19. Яку площу і периметр матиме квадрат, описаний навколо круга заданої площі S (площа круга , , де а – сторона квадрата, r – радіус круга).

    20. Обчислити площу бічної поверхні та об’єм конуса за заданою висотою h, твірною l та радіусом основи r.

    21. Визначити об’єм зануреної частини судна із заданою водотоннажністю m тис. тон, якщо щільність морської води ρ=1030кг/м3. Задача вирішується виходячи з рівності ваги витісненої води і підйомної сили P=mg, Fa = ρgV, Fa = P.

    22. Обрахувати енергію удару автомобіля А із вагою m кг, що рухається зі швидкістю v, в автомобіль В за формулою кінетичної енергії E=mv2/2, Дж.

    23. Тіло, рухаючись з початковою швидкістю vo м/c, починає рухатися з постійним прискоренням а м/с2 Визначити, через який час t, його швидкість досягне значення v, введеного користувачем. Вирішувати, спираючись на формулу v=vo+at.

    24. Снаряд вилетів з гармати вертикально вгору з початковою швидкістю vo , введеної інформації з клавіатури (від 100 до 1000 м/c). Скільки часу має артилеристів, щоб втекти, поки снаряд не впаде назад? Вважати, що час підйому і падіння снаряда однаково і перебувати з умови tпідйому=tпадіння=vo/g , с.

    25. Обчислити прискорення вільного падіння на відстані r від поверхні Місяця, вводиться користувачем за формулою g=MлG/(Rл+r)2, де Mл-=7.35*1022 маса Місяця, кг; G=6.67*10-113/кг*c2 гравітаційна стала; Rл=1735 радіус Місяця, км.

    26. Для виготовлення m кг масла витратили n л молока. Скільки кілограмів масла можна одержати зі s л молока.

    27. Токар виготовив n деталей. Перші m год він робив по m деталей за годину, а потім почав виготовляти по s деталей за годину. Скільки годин токар виготовляв по g деталей?

    28. Маса шести коробок з печивом n кг. Яка маса восьми коробок із цукерками, якщо коробка із цукерками на m кг важча від коробки з печивом?

    29. В авіаційному училищі m курсантів. n курсантів літають з інструктором, у t рази менше курсантів – самостійно, а решта ще вчаться на тренажерах. Скільки курсантів вчиться на тренажерах?

    30. У парку r кущів бузку. На кінець квітня розквітло t кущів білого бузку, а рожевого – у s рази більше. Скільки кущів бузку ще не розквітло?

    31. Діти зібрали і здали в аптеку b кг квітів мати-й-мачухи, t кг березових бруньок, а молодих пагінців сосни – у m разів більше, ніж квітів мати-й-мачуха та березових бруньок разом. Скільки кілограмів пагінців сосни зібрали діти?

    32. Три скаутських загони зібрали m кг макулатури. Другий загін зібрав на k кг більше, ніж перший, а третій – на n кг більше, ніж перший. Скільки кілограмів макулатури зібрав кожний загін?

    33. 3 двох станцій, відстань між якими m км, виходять одночасно назустріч один одному два поїзди: один з швидкістю n км за годину, а другий з швидкістю k км за годину. На якій відстані один від одного будуть поїзди через s год після виходу?

    34. Одна сторона трикутника в n рази більша за другу, а третя сторона на m см менша від другої. Обчислити сторони трикутника, якщо його периметр k см.

    35. Після того, як Буратіно розв’язав кілька прикладів, йому залишилося розв’язати в n рази більше прикладів, ніж він розв’язав. Скільки всього прикладів треба було розв’язати Буратіно, якщо йому залишилося розв’язати к прикладів? 

    36. У класі навчаються m дітей. У хлопчиків стільки зубів, скільки у дівчаток пальців на руках і ногах. Скільки в класі хлопчиків і скільки дівчаток? Припускається, що в кожного учня по 32 зуби).

    37. Зібрався Іван-Царевич на бій з триголовим і трихвостим Змієм Гориничем. «Ось тобі чарівний меч, – каже йому Баба Яга. – Одним ударом ти можеш зрубати Змієві або m голову, або n голови, або s хвіст, або t хвости. Запам’ятай: зрубаєш голову – нова виросте, зрубаєш хвіст – k нових виростуть, зрубаєш g хвости – голова виросте, зрубаєш p голови – нічого не виросте». За скільки ударів Іван-Царевич може зрубати Змієві всі голови і всі хвости?

Контрольні запитання:

  1. Структура програми на мові С++.

  2. Як підключити бібліотеку.

  3. Функції потокового введення/виведення. Приклад.

  4. Функції форматованого введення/виведення. Синтаксис. Приклад.

скачати

© Усі права захищені
написати до нас