Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб7.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

М іністерство освіти і науки України

Гусятинський коледж

Тернопільського національного технічного університету імені Івана Пулюя

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

до виконання лабораторних робіт

з дисципліни

Основи програмування та алгоритмічні мови

Розділ2. Структурне програмування мовою С++

для студентів спеціальності

5.05010301

Розробка программного забезпечення

Гусятин – 2010

Методичні вказівки до виконання лабораторних робіт з дисципліни Основи програмування та алгоритмічні мови. Розділ 2. Структурне програмування мовою С++

Протокол №____ від ” _____ ” ___________

Укладач: К.І. Барціховська - Гусятин: ГК ТДТУ, 2010р.

Розглянуто і схвалено на засіданні

ЦК програмування та комп’ютеризації

Обговорено і рекомендовано для затвердження

на засіданні науково-методичної ради

Протокол № __від _____2010 р.

Загальнi положення

Лабораторні роботи є засобом закріплення знань, отриманих студентами на лекціях і під час самостійної підготовки, а також засобом привиття навичок виконання інженерних та наукових розрахунків із застосуванням персонального комп’ютера.

Мета лабораторного практикуму - дати фахiвцю необхiднi практичнi навички щодо програмування задач на мові програмування С++ для розв`язання інженерних і наукових задач на комп’ютерах.

У результаті вивчення дисципліни фахівець повинен :

знати :

- принцип модульної побудуви програм на основі типових архітектур;

- метод структурного проектування програм на основі типових керуючих структур;

- функціональні методи розробки програм;

- методи чисельного розв’язання інженерних і наукових задач на комп’ютерах;

- етапи обробки програм на комп’ютері у системі програмування С++ Builder

уміти :

- розробляти модульні програми лінійної, розгалуженої, циклічної і комбінованої структур на мові програмування С++;

- творчо використовувати методи структурного, низхідного і висхідного проектування програм для розв’язання практичних задач;

- працювати зі скалярними і векторними даними, використовувати при складаннi програм операції і оператори, процедури та функцiї (бібліотечні, введення-виведення, графiчні, роботи з файловою системою тощо);

- використовувати засоби препроцесорної обробки програми для забезбечення мобільності програм.

Найбільш ефективною є організація занять, коли студент за методичними вказівкам до робіт, конспектом лекцій і рекомендованою літературою протягом семестру самостійно готується до аудиторних занять, а на лабораторних заняттях під наглядом викладача виконує індивідуальні завдання.

Матеріали з лабораторних робіт студент оформляє у вигляді звітіів і захищає, як правило, перед виконанням наступної роботи. Захист передбачає демонстрацію роботи програм і відповіді на запитання викладача щодо теми, мети і змісту лабораторної роботи. Під час захисту лабораторної роботи студент повинен уміти формулювати висновки, які характеризують особливості і результати розв`язання поставлених завдань на комп’ютері.

Змiст I обсяг пiдготовки

п/п

Т е м а р о б о т и

Години

1

Знайомство із середовищем програмування. Створення консольних додатків

2

2

Програми найпростішої структури

2

3

Програми розгалуженої структури

4

4

Використання керуючих конструкцій. Програмування алгоритмів табулювання функції

4

5

Програмування алгоритмів ітераційної циклічної структури

4

6

Опрацювання одновимірних масивів

2

7

Опрацювання двовимірних масивів

2

8

Опрацювання символьної інформації

2

9

Програмування із використанням функцій

2

10

Облік суми і добутку, пошук min i max

4

11

Масиви та функції

2

12

Сортування інформації у масивах

2

13

Структури. Масиви структур

4

Всього:

36

Зміст

Знайомство з середовищем С++ Builder. Створення консольних додатків

4

Програми найпростішої структури

8

Програми з розгалуженням

10

Використання керуючих конструкцій. Програмування алгоритмів табулювання функції

15

Програмування алгоритмів ітераційної циклічної структури

19

Опрацювання одновимірних масивів

23

Опрацювання двовимірних масивів

25

Опрацювання символьної інформації

29

Програмування з використанням функцій

31

Облік суми і добутку. Знаходження min і max

34

Масиви та функції

36

Сортування даних

39

Структури. Масиви структур

43

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

Тема : Знайомство з середовищем С++ Builder. Створення консольних додатків

Мета: Познайомитися з вікнами ІС С++ Builder. Набути навиків створення консольних додатків , їх відлагодження, запуску та збереження

Консольне застосування — це додаток, який для взаємодії з користувачем не використовує графічний інтерфейс. Пристроєм, що забезпечує взаємодію з користувачем, є консоль — клавіатура і монітор, що працює в режимі відображення символьної інформації (букви, цифри і спеціальні знаки).

У операційній системі консольне застосування працює у вікні командного рядка. Консольні застосування зручні як ілюстрації при розгляді загальних питань програмування, коли треба зосередитися на суті проблеми, а також як невеликі утиліти "для внутрішнього споживання".

1 Створення консольного додатку

Консольне застосування створюється таким чином. Спочатку потрібно з меню File вибрати команду New | Other | Consol Application (рис 1.1). В результаті цих дій на екрані з'явиться вікно New Console Application (Рис. 1.2).

У цьому вікні можна вибрати мову програмування і вказати, чи використовуватиметься та або інша бібліотека. Після того, як будуть задані параметри створюваного консольного застосування, треба клацнути на кнопці ОК. В результаті C++ Builder створить проект консольного .додатку і на екрані з'явиться вікно редактора коду, в якіму знаходиться шаблон консольного застосування — функція main (рис1.3).

Р ис. 1.1. Вікно вибору типу додатку

Рис. 1.2. У вікні New Console Application треба задати характеристики консольного додатку

Починається консольний додаток директивою #pragma hdrstop, яка забороняє виконання попередньої компіляції файлів, що підключаються. Після цієї директиви треба вставити директиви #include що забезпечують підключення необхідних бібліотек (наприклад #include <iostream.h>). Директива #pragma argsused відключає попередження компілятора про те, що аргументи, вказані в заголовку функції, не використовуються.

Рис.1.3. Шаблон консольного застосування

// Welcome.cpp – ім’я файла з програмою

# include <iostream.h>

void main ()

{ cout << ” Ласкаво просимо до С++! \ n”;

}

Результат виконання програми:

Ласкаво просимо до С++!

У першому рядку програми міститься однорядковий коментар, що починається з символу “//”, який вказує, що після цього символу йде однорядковий коментар. Коментарі не викликають ніяких дій комп’ютера і ігноруються компілятором С++, а лише допомагають іншим людям читати і зрозуміти Вашу програму.

У другому рядку розміщено команду (директиву) препроцесору, що забезпечує включення до програми засобів зв’язку зі стандартними потоками вводу і виводу даних. Вказані засоби містяться у файлі під назвою iostream.h (мнемоніка: “і” (input) – ввід; “output” – вивід; “stream” – потік; “head” - заголовний). Рядок, що починається з ”#”, обробляється препроцесором перед компіляцією програми. Файл iostream.h повинен бути залучений для всіх програм, що виводять дані на екран монітора або вводять дані з клавіатури.

Третій рядок є заголовком функції з іменем main. Будь-яка програма на С++ повинна містити лише одну функцію з таким іменем. Саме з неї починається виконання програми. void – специфікатор типу, який вказує, що функція main в даному прикладі не повертає ніякого значення. Круглі дужки після main потрібні в зв’язку з форматом (синтаксисом) заголовка будь-якої функції. В них розміщується список параметрів. У нашому прикладі параметри не потрібні.

Тіло будь-якої функції повинно починатися і закінчуватися фігурними дужками, між якими знаходиться послідовність описів, операторів і визначень. Кожен оператор, визначення чи опис повинні закінчуватися крапкою з комою.

Рядок

cout << ” Ласкаво просимо до С++! \ n”;

є командою комп’ютеру надрукувати на екрані рядок символів, що записаний у лапках. Повний рядок, включаючи cout, операцію ”<<”, рядок ”Ласкаво просимо до С++! \ n” і крапку з комою “;”, називається оператором. Всі вводи і виводи в С++ виконуються над потоками символів. Таким чином потік символів Ласкаво просимо до С++! спрямовується до об’єкта стандартного потоку виводу cout, який пов’язаний з екраном. Вже зараз слід відмітити одну з принципових особливостей мови С++, яку називають перевантаженням або розширенням дії стандартних операцій. Операція ”<<” називається операцією „розмістити у потік” лишень у тому випадку, коли зліва від неї знаходиться ім’я об’єкта cout. Інакше пара символів “<<” означає бінарну операцію зсуву вліво. Символи правого операнда зазвичай виводяться так само, як вони виглядають між лапками.

Слід зазначити, що символи ”\n” не виводяться на екран. Комбінацію символів, що починаються з позначки оберненого Стеша (”\”), називають знаком переходу або escape-символом. Керуюча послідовність ”\n” означає перехід на початок нового рядка. Цей символ в лапках може знаходитися будь-де в рядку, при цьому послідовність символів, що знаходиться за ним, виводитиметься з нового рядка. Тобто результат виконання операції

cout << ” Ласкаво просимо \nдо С++! \ n”;

матиме вигляд:

Ласкаво просимо

до С++!

2 Етапи виконання програми

Вихідна програма, підготовлена на мові С++ у вигляді текстового файла з розширенням *.срр (welcome.cpp), проходить 3 етапи обробки:

препроцесорне перетворення тексту програми;

компіляція;

компоновка (редагування зв¢язків чи складання).

Після цих 3 етапів формується машинний код програми, що виконується.

Задачею препроцесора є перетворення (доповнення) тексту програми до початку її компіляції. Правила препроцесорної обробки визначаються програмістом за допомогою директив препроцесора. Директива починається з ”#”. Наприклад,

1) #define - визначає правила заміни в тексті:

#define ZERO 0.0

Це означає, що кожне використання у програмі імені ZERO буде замінюватися на 0.0.

2) #include< ім¢я заголовного файла > -

передбачена для залучення до тексту програми тексту файлу з каталогу “Заголовних файлів” INCLUDE, які постачаються разом зі стандартними бібліотеками. Кожна бібліотечна функція чи об¢єкт С++ має відповідний опис в одному з заголовних файлів (наприклад, iostream.h, stdio.h, conio.h, math.h). Список заголовних файлів визначається стандартом мови. Використання директиви include не під’єднує відповідну стандартну бібліотеку, а лише дозволяє долучити до тексту програми описи із зазначеного заголовного файлу. В нашому випадку препроцесор обробляє директиву #include <iostream.h> і під’єднує до вихідного тексту програми засоби для обміну з дисплеєм. Далі файл передається на компіляцію, у ньому виявляються синтаксичні помилки, які потрібно усунути програмістові. Після безпомилкової компіляції текст програми перекладається компілятором на машинну мову, далі отримуємо об’єктний файл з розширенням *.obj. Підключення об’єктних кодів файлів з визначеннями необхідних стандартних функцій і об’єктів з бібліотеки відбувається на етапі компоновки, тобто після компіляції. У об’єктному коді створюваної програми ніби замуровуються дірки за допомогою кодів стандартних функцій. Хоча в заголовних файлах містяться всі описи стандартних функцій, до коду програми залучаються лише функції й об’єкти, які використовуються в програмі.

Після компоновки утворюється модуль програми з розширенням *.ехе.

Отже, в нашому випадку, виконавши директиви, препроцесор сформує повний текст програми, компілятор створить об’єктний файл welcome.obj, за замовчуванням обравши для нього зазначене ім’я, а компоновщик (редактор зв’язків Linker) доповить програму бібліотечними функціями, наприклад, для роботи з об’єктом cout і побудує модуль welcome.exe, запустивши, який ми одержуємо на екрані бажану фразу.

3 Порядок запуску програми

Відкрийте нове вікно редагування (File > New) і надайте йому ім’я Welcome (File > Save As);

У новому вікні наберіть текст програми, що наводиться у прикладі вище. Відкомпілюйте програму (Compile > Compile або (Alt+F9)). В разі повідомлень про помилку, перевірте текст програми і усуньте невідповідності. Щоразу, вносячи зміни у вихідний текст програми, зберігайте файл (File > Save або F2). Після чого змінену програму слід відкомпілювати;

Запуск відкомпільованої програми здійснюється за командою (Run > Run або Ctrl+F9). Якщо з моменту останньої компіляції вихідний код було модифіковано, ця команда виконає послідовно компіляцію і компоновку.

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

  1. Як створити новий консольний додаток?

  2. Як відкомпілювати прграму

  3. Як зберегти програму?

  4. Для чого використовується директива #include ?

  5. З яких етапів складається процес виконання програми ?

  6. Яка структура програми на С++ ?

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

Тема: Програми найпростішої структури

Мета роботи: Оволодіння методами роботи в середовищі Borland С++ та ознайомлення з основними принципами програмування на С++.

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

На мові С++ программа являє собою сукупність однієї чи декількох функцій, команд препроцесора та зовнішніх описів. Одна з функцій має ім'я main та є головною. Функція main виконується завжди першою. Функції описують сукупність дій, які потрібно виконати. Команди препроцесора вказують на перетворення, яке треба зробити над програмою. За їх допомогою також здійснюється оголошення іменованих констант, що використовуються у всій програмі, підключення інформації про стандартну бібліотеку та ін.

Оголошення змінних звичайно розміщується на початку файлу програми. Всі змінні повинні бути описані до їх використання.

Введеня та виведення інформації можна здійснювати за допомогою багатьох функцій стандартних бібліотек. Зокрема, універсальних функцій вводу/виводу cin>> та cout<< :

cin>> змінна;

cout<< вираз1<< вираз2<< …<< вираз n;

Для роботи з командами введення/виведення cout<< , cin>> необхідно директивою пре процесора # include підключити файл iostream.h, а для роботи з printf(), scanf() файл - stdio.h

Завдання для самостійної підготовки.

1.Вивчити:

- загальний вигляд програми на мові С++

- як записується та працює оператор присвоєння?

- як оголошують змінні?

- перелік стандартних математичних функцій мови С++?

- ознайомитися з опретарами введення- вивдення

2.Скласти алгоритм розв’язування задачі (згідно варіанту);

3.Ідентифікувати змінні;

4.Написати програму в якій передбачено введення аргумента і виведення значення обчисленої функції.

5.Виконати програму на комп’ютері.

6. Результати роботи оформити протоколом.

Приклад виконання завдання

Обчислити значення наступних виразів.Вхідні дані задати самостійно.

Програма алгоритму

//програма обчислення виразів, лабораторна робота №2

# include <math.h> //приєднання файлу заголовків математичних функцій

# include <iostream.h> // приєднання файлу заголовків функцій введ./виведення

# include <conio.h> // приєднання файлу заголовків функцій графіки

# define A 6.6 //надання константам значень

# define B 2.95

# define C 1.95

# define D 1.1

void main ()

{

float x,y,z; //оголошення змінних

cout<<"enter x\n";

cin>>x; //введення змінної х

y=(A+pow(B,C))/(C+1-pow(sin(x),3)*(3.2-(x-D)/C))+2.5e3; //обчислення

z= atan(exp(A*x)*sqrt(A/x)); //та присвоєння значень

cout<<"********:\n";

cout<<"A="<<A<<"\tB="<<B<<"\tC="<<C<<"\tD="<<z<<"\n";//виведення даних

cout<<"x="<<x<<"\n";

cout<<"Resultat:\n";

cout<<"y="<<y<<"\n";

cout<<"z="<<z<<"\n";

getch(); //затримка екрану

}

Завдання роботи

Написати програму для розрахунку за формулами. Попередньо підготувати тестові розрахунки за другою формулою за допомогою калькулятора (результати обчислень за першою і другою формулою повинні співпадати).

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

Обчислити значення наступних виразів.

варіант

завдання

варіант

завдання

9.

10

11.

12.

13

14

15

16

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

1. Які ви знаєте базові типи даних?

2. Які типи констант можна використовувати у мові С?

3. Вкажіть види операцій та пріоритет виконання операцій.

4. Що таке Esc-послідовності. Поясніть їх призначення та синтаксис використання.

5. Які стандартні математичні функції ви знаєте?.

Лабораторна робота 3

Тема: Програми з розгалуженням.

Мета роботи :Оволодіння практичними навиками розробки і програмування обчислювальних процесів розгалуженої структури і навиками відлагодження та тестування програм.

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

Умовні оператори у мові С++ мають наступний синтаксис:

if (вираз)

оператор1

else

оператор2;

Якщо вираз приймає істинне значення, то виконується оператор1 та керування передається на оператор, наступний за оператором2 (оператор2 не виконується). В іншому випадку виконується оператор2. Умовна конструкція if-else може бути багаторазово вкладеною. Наприклад:

if (вираз)

оператор

else

if (вираз) оператор

else оператор

Ніяких обмежень на кількість вкладених блоків if не накладається.

Завдання для самостійної підготовки.

1.Вивчити:

-як записується та працює оператор умовного переходу?

-що таке складений оператор?

-що таке порожній оператор?

-як записується і працює оператор переходу goto?

2.Скласти алгоритми розв’язування задач відповідно завдання 1 і завдання 2 (згідно варіанту);

3.Ідинтифікувати змінні;

4.Написати програми в якій передбачено введення аргумента і виведення значення обчисленої функції в кожній гілці програми.

5.Виконати програми на комп’ютері.

Завдання роботи №1.

Обчислити значення функції. На друк вивести вхідні дані, а також результати обчислень

Приклад виконання завдання №1

Написати програму обчислення функції

y=

a=6.6 , b=2.95 .

Програма алгоритму

# include <math.h>

# include <iostream.h>

#include<conio.h>

# define A 6.6

# define B 2.95

main ( )

float x,y;

cout<<“введіть х\n”;

cin>>x;

if (x>a/2.0)

y=A*sqr(x)+B*pow(sin(A/2.0),2.0);

cout<<y<<x<<”\n”;

;

else if (x<B && x>A/3.)

y=(B+1.0)/(2.0+A*cos(pow(A,3.0)));

cout<<y<<x<<”\n”);

getch();

.

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

Завдання роботи №2.

Обчислити значення наступних виразів. При цьому знайти область визначення функцій та забезпечити необхідну реакцію програми на некоректні ситуації

Приклад виконання завдання №2

Створити програму для обчилення значення змінної y при довільних значеннях α та β: .

/*Програма найпростішої структури*/

/*lab2

#include<math.h>

#include<iostream.h>

#include<conio.h>

void main()

{

float b,a,y;

clrscr();

cuot<<"Введіть значення a:\n";

cin>>a;

cout<<"Введіть значення b:\n";

cin>>b;

if ((b==(-3*a)) | (cos(2*b)==0))

cout<<" Невірні дані\n";

else

{

y=(a-2*b)/(3*a+b)-sin(a)/cos(2*b);

cout<<” y=\t”<<y<<”\n”);

}

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]