Алгоритм находження максимального елемента

Міністерство освіти і науки, молоді та спорту України

Смілянський промислово-економічний коледж

Черкаського державного технологічного університету

Затверджую

Директор технікуму

_________ Шиян В.Г.

“_____” ___________ 2011 р.

О С Н О В И П Р О Г Р А М У В А Н Н Я

Т А А Л Г О Р И Т М І Ч Н І М О В И

Методичні вказівки для лабораторних робіт

для студентів вищих навчальних

 

закладів І-ІІ рівнів акредитації спеціальності

 

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

Узгоджено Розглянуто на засіданні

Заступник директора з НР циклової комісії

___________Кондратенко Г.М. Протокол №____

«____»________2011 р. від “___” _______200_р.

Голова комісії _____ /Зборівська В.П./

Заступник директора з НВР

____________Федоренко М.М.

Програму розробила

Викладач Морозова О.В.

 

М. Сміла - 2011 р.

 

Вступ

В предметі “Основи програмування та алгоритмічні мови ” досліджуються питання, пов’язані з процедурними мовами програмування високого рівня. Докладно вивчається мова програмування С

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

На при кінці курсу вивчаються основи об’єктно – орієнтованого програмування : парадигми ООП, класи, об’єкти

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

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

Орієнтовна кількість годин на дисципліну — 270 , Для проведення лабораторних робіт відводиться 90 аудиторних годин.

Для вивчення дисципліни необхідні шкільні базові знання з інформатики та математики. Предмет “ Основи програмування та алгоритмічні мови ” являється базовим для вивчення курсу «Об’єктно – орієнтоване програмування» . «Алгоритми та структури даних».

Після вивченню курсу студенти повинні знати :

основи конструювання програмного забезпечення.

 

Після вивченню курсу студенти повинні вміти :

конструювати програмне забезпечення.

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

Тема : Створення діалогової програми.

Мета : Набуття практичних навичок з введення та редагування програм, а

також з використання простих команд системи програмування С.

 

Завдання

В середовищі С створити діалогові програми , які імітують розмову двох людин. Нижчі приведені варіанти тем:

1. Музика;

2. Кіно;

3. Література;

4. Історія;

5. Спорт;

6. Географія;

7. Біологія;

8. Математика;

9. Книги;

10. Свята.

 

Хід роботи

1. Завантажити систему програмування.

2. Розробити алгоритм програми.

3. Розробити програму мовою С.

4. Якщо є помилки, відредагуйте програму.

5. Покажіть одержані результати викладачу.

6. Складіть звіт.

 

Приклад діалогової програми:

#include <stdio.h>

main()

{

int d,kv;

char im[10],fio[20],vul[20];

printf(“діалогова програма”);

printf(“Як Вас звуть?”);

scanf(“%s”,&im);

scanf(“%s”,&fio);

printf(“/n шановний %s %s, яка ваша адреса?”, im, fio);

scanf(“%s”,&vul);

scanf(“%d”,&d);

scanf(“%d”,&kv);

printf(“/n шановний %s %s, я також мешкаю на вулиці %s та в будинку%d”, im, fio, vul,d);

}

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

1. Які дані називаються базовими?

2. Для чого використовуються модифікатори даних?

3. Яку структуру має програма на мові С?

4. Що таке шаблон даних?

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

Тема : Програмування виразів.

Мета : Набуття практичних навичок з програмування виразів та простих задач, а також з використання простих команд системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

В середовищі С створити наступні програми згідно варіантах:

1. Запрограмувати вирази, які містять різні типи даних. Значення первісних даних ввести з клавіатури. Результати роботи програми вивести на екран .

2. Скласти програму для обчислення характеристик геометричних фігур.

Варіант №1

 

1.

2. Скласти програму для обчислення площі трикутника.

3. Дано три сторони трикутника. Визначити його висоти.

Варіант №2

1.

2. Скласти програму для обчислення площі кола.

3. Дано три сторони трикутника. Визначити його медіани.

Варіант №3

1.

2. Скласти програму для обчислення площі прямокутника.

3. Дано три сторони трикутника. Визначити його бісектриси.

Варіант №4

1.

2. Скласти програму для обчислення площі трапеції.

3. Дано три сторони трикутника. Визначити його кути.

 

Варіант №5

1.

2. Скласти програму для обчислення периметру трикутника.

3. Дано три сторони трикутника. Визначити косинуси всіх кутів трикутника.

Варіант №6

1.

2. Скласти програму для обчислення периметру квадрата.

3. Дано три сторони трикутника. Через центр вписаного кала проведено прямі, паралельні його сторонам. Визначити довжину відрізків цих прямих, заключних в середині трикутника.

Варіант №7

1.

2. Скласти програму для обчислення довжини кола.

3. Дано три сторони трикутника, в якій вписано коло. Визначити довжину відрізків, що з’єднують точки дотику.

 

Варіант№8

1.

2. Скласти програму для обчислення периметру прямокутника.

3. Навколо прямокутного трикутника з кутом А=400 описано коло з радіусом R. Визначити сторони трикутника.

 

Варіант№9

1.

2. Скласти програму, якщо плаща кола дорівнює 25, знайти радіус кола.

3. Дано три сторони трикутника. Визначити косинуси всіх кутів трикутника.

 

 

Варіант№10

1.

2. Скласти програму, якщо довжина кола дорівнює 15, знайти радіус кола.

3. Визначити повну поверхню кулі радіусом R.

 

Приклад програми

#include <math.h>

#include <stdio.h>

#include <conio.h>

void main()

{

/* http://nataliya.kiev.ua */

float а,x,y;

printf("Enter x:");

scanf("%f",&x);

printf("Enter а:");

scanf("%f",&a);

y=sqrt(25-pow(x,2))+2*a/(x-3);

printf("Y=%f",y);

getch();

}

 

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

 

1. Яка функція вводить дані?

2. Яка функція виводить дані?

3. Що таке спеціфікатор формату?

 

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

Тема : Розробка програм з функціями введення-виведення та функціями обробки рядків.

Мета : Набуття практичних навичок з використання функцій введення-виведення системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++ .

 

Значення що повертає функція Назва функції Аргументи функції Призначення
Char Strcat (Char, constant char) З’єднує два рядка.
Int Strcmp (Constant, constant) Порівнює два рядка.
Char Strcpy (Char, constant char) Копіює вміст рядка в інший рядок.
Char Strlen (Constant, char *a char) Підраховує довжину рядка.
Char Strchr (Constant char *s, int c) Виконує пошук одного символу в рядку.
Size_t Strspn (Const char *s, constant *set) Виконує пошук в рядку s першого символу який не входить в рядок set.

Теоретичні відомості „Функції обробки рядків”

 

Для роботи з функціями необхідно підключити бібліотеку так # include <string.h>

 

Завдання

В середовищі С створити програму . В програмі треба оголосити 12 рядка, в кожний рядок внести слова згідно варіантах. Зі словами треба виконати такі дії:

1. Копіювати один рядок в іншій.

2. Додати один рядок до другого та вивести на екран монітору довжину всіх рядків.

3. Порівняти два рядка. Результати порівняння вивести не монітор.

4. Визначити довжину результуючого рядку.

5. Знайти в рядку підрядок.

 

Варіант №1Музика;

Варіант №2Кіно;

Варіант №3Література;

Варіант №4Історія;

Варіант №5Спорт;

Варіант №6Географія;

Варіант №7Біологія;

Варіант №8Математика;

Варіант №9Книги;

Варіант №10Свята.

 

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

 

1. В якої функції виведення не треба вказувати шаблон формату даних?

2. Які бувають шаблони формату для виводу даних?

3. Який результат видає функція порівняння рядків?

4. Який результат видає функція оцінці довжини рядка?

 

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

Тема : Розробка програм використанням умовних операторів.

Мета : Набуття практичних навичок з використання умовних операторів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

Створити програми обробки даних з умовними операторами. Всі первісні дані вводяться з клавіатури. Вивести результати роботи програми на екран монітору і занести їх у звіт.

Варіант №1

1. Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить скільки місяців буде між цими датами.

2. З клавіатури ввести два числа. Менше з них замінити нулем, якщо вони рівні, то замінити нулями обидва числа.

Варіант №2

1 Задайте з клавіатури дату в такому вигляді: день, місяць, рік. Підрахуйте скільки днів залишилось до кінця року.

2 Задано три числа, треба впорядкувати їх по зростанню.

Варіант №3

1 Задайте з клавіатури дату в такому вигляді: день, місяць, рік. Підрахуйте скільки днів залишилось до кінця навчального року.

2 Задано три числа, треба впорядкувати їх по зменшенню.

Варіант №4

1 Задайте з клавіатури дату в такому вигляді: день, місяць, рік. Підрахуйте скільки днів пройшло від початку року.

2 Задано три числа, треба найти мінімальне число.

Варіант №5

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Підрахуйте скільки днів буде між цими датами.

2 Задано три числа, треба найти максимальне число.

Варіант №6

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить які пори року будуть між цими датами.

2 Задано три числа, треба найти мінімальне число та максимальне числа та знайти різницю між ними..

Варіант №7

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить скільки декад буде між цими датами.

2 Задано три числа, треба найти мінімальне число.

Варіант№8

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить скільки тижнів буде між цими датами.

2 Задано три числа, треба найти мінімальне число та переставити його на перше місце.

Варіант№9

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить скільки понеділків буде між цими датами.

2 Задано три числа, треба найти мінімальне число та переставити його на остання місце.

Варіант№10

1 Задайте з клавіатури дві дати в такому вигляді: день, місяць, рік. Визначить скільки місяців буде між цими датами.

2 Задано три числа, треба найти мінімальне число та зменшити його в двічі..

Приклад програми

#include <math.h>

#include <stdio.h>

#include <conio.h>

void main()

{

float a,x,y;

printf("Enter x:");

scanf("%f",&x);

printf("Enter a:");

scanf("%f",&a);

if ((25-x*x<0)|(x= =3))

printf("Error");

else

{

y=sqrt(25-pow(x,2))+2*a/(x-3);

printf("Y=%f",y) ;

}

getch();

}

 

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

1. Як працює оператор if?

2. Як працює оператор switch…case?

3. Що відбувається коли зустрічається слово в операторі break?

 

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

Тема : Розробка програм використанням умовних операторів.

Мета : Набуття практичних навичок з використання умовних операторів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

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


Оператор switch відноситься до операторів множинного вибору. Вид оператору:

switch (вираз) {
case constant1:
послідовність операторів
break;
case constant2:
послідовність операторів
break;
case constant3:
послідовність операторів
break;
...
case constantN:
послідовність операторів
break;
default
послідовність операторів
}

 

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

У програмі розробити інтерфейс управління роботою програми за допомогою оператору вибіру.

 

Програма повинна припиняти роботу при натисканні клавіші Enter на пункті

меню " Кінець роботи ".

Хід роботи

Варіанти

1. Створити меню в ресторані з можливістю вибору блюд.

· Перші блюда;

· Салати;

· Вторі блюда;

· Напої.

В кожний пункт включити по 3-4 підпункту.

2. Створити меню настройки монітору.

· Настройка розташування зображення;

· Настройка яскравості зображення;

· Настройка кольорів. Зображення;

В кожний пункт включити по 3-4 підпункту.

3. Створити меню телетексту, якій виводиться в телевізорі.

· Перегляд музикальних програм;

· Перегляд мультфільмів;

· Перегляд новин;

· Перегляд пізнавальних програм;

В кожний пункт включити по 3-4 підпункту з назвами каналів.

4. Створити меню завантаження ПК.

· Режим ДОС (вибір конфігурацію ПК);

· Захищений режим (вибір конфігурацію ПК);

· Нормальна загрузла (вибір конфігурацію ПК).

5. Створити меню до задачі „Нарахування зарплати” з пунктами

· Розрахунок податків; (перелік податків)

· Розрахунок авансу;

· Нарахування зарплатні. (перелік надходжень)

В кожний пункт включити по 3-4 підпункту.

6. Створити меню сучасного холодильника:

· Заморожування продуктів; (перелік температур)

· Відтаювання морозильної камери;

· Само очистка;

· Замовлення продуктів по Інтернету.(перелік продуктів)

В кожний пункт включити по 3-4 підпункту.

7. Створити меню турагенції.

· Перелік країн;

· Перелік транспорту;

· Перелік готелів.

В кожний пункт включити по 3-4 підпункту.

8. Створити меню „Прокат автомобілів ”.

· Назва автомобіля;

· Марка;

· Термін оренди.

В кожний пункт включити по 3-4 підпункту.

 

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

1. Розповісти про логіку роботи оператора switch.

2. Для чого використовується default?

3. Для чого використовується break;?

 

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

Тема : Розробка програм з використанням операторів циклу з параметрами.

Мета : Набуття практичних навичок з використання циклічних операторів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

Варіант №1

1. Скласти програму для обчислення площі трикутника.

2. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього не нульові елементи та вивести їх на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого рядка.

Варіант №2

1 Скласти програму для обчислення площі кола.

2 Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи менше нуля та вивести їх на екран монітору.

3 Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого рядка.

Варіант №3

1. Скласти програму для обчислення площі прямокутника.

2. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля та вивести їх на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього рядка.

Варіант №4

1. Скласти програму для обчислення площі 5 трапецій.

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

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого стовпчика.

Варіант №5

1. Скласти програму для обчислення периметру трикутника.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати елементи менше нуля та вивести суму цих елементів на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого стовпчика.

Варіант №6

1. Скласти програму для обчислення периметру квадрата.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №7

1. Скласти програму для обчислення довжини кола.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів які розташовані на діагоналі.

Варіант№8

1. Скласти програму для обчислення периметру прямокутника.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів більше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів всього масиву.

Варіант№9

1. Скласти програму, якщо плаща кругу дорівнює 20 , знайти його радіус.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів менше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму від’ємних елементів всього масиву.

Варіант№10

1. Скласти програму, якщо довжина кола дорівнює 10 , знайти радіус кола.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати кількість нульових елементів та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму додатних елементів всього масиву.

 

Приклад програми

#include <stdio.h>

#include <conio.h>

void input(int *a,iht n){

int i;

for(i=0;i<n;i++){

printf(“введіть %і елемент масиву:”,і+1);

scanf("%d",&a[i]);

}

}

void main(){

int a[10],i;

input(a,10);

for(i=0;i<10;i++)

printf("%5i",a[i]);

}

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

1. Як працює оператор for…?

2. Як працює оператор do… while?

3. Як працює оператор while...?

 

Лабораторна робота №7.

 

Тема: Розробка програм з використанням операторів циклу з передумовою

Мета : Набуття практичних навичок з використання циклічних операторів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

Варіант №1

1. Скласти програму для обчислення периметру 10 прямокутників.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів більше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів всього масиву.

 

Варіант №2

1. Скласти програму для обчислення довжини 10 кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів які розташовані на діагоналі.

Варіант №3

1. Скласти програму для обчислення периметру 10 квадратів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №4

1. Скласти програму, якщо плаща 6 кругів дорівнює відповідно 25, 24, 23, 22, 21, 20 , знайти радіуси кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів менше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму від’ємних елементів всього масиву.

 

Варіант №5

1. Скласти програму для обчислення площі 10 прямокутників.

2. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля та вивести їх на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього рядка.

 

Варіант №6

1. Скласти програму для обчислення периметру 10 квадратів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №7

1. Скласти програму, якщо довжина кругів дорівнює відповідно 15,14, 13, 12,11, 10 , знайти радіус кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати кількість нульових елементів та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму додатних елементів всього масиву.

 

Приклад програми з оператором циклу:

 

void main()

{

int i;

i = 1;

while (i <= 20)

{

printf(“i=%d”,i);

i = i + 1;

}

return 0;

}

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

 

1. Як задаеться кількість повторень в операторі циклу з передумовою?

2. Скількі ітерацій циклу задаеться в операторі циклу з передумовою?

3. Які службові слова використовуються в операторі циклу з передумовою?

 

Лабораторна робота №8.

 

Тема: Розробка програм з використанням операторів циклу з післяумовою.

Мета : Набуття практичних навичок з використання циклічних операторів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

Варіант №1

1. Скласти програму для обчислення периметру 10 прямокутників.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів більше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів всього масиву.

 

Варіант №2

1. Скласти програму для обчислення довжини 10 кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів які розташовані на діагоналі.

 

Варіант №3

1. Скласти програму для обчислення периметру 10 квадратів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №4

1. Скласти програму, якщо плаща 6 кругів дорівнює відповідно 25, 24, 23, 22, 21, 20 , знайти радіуси кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів менше нуля та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму від’ємних елементів всього масиву.

 

Варіант №5

1. Скласти програму для обчислення площі 10 прямокутників.

2. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля та вивести їх на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього рядка.

 

Варіант №6

1. Скласти програму для обчислення периметру 10 квадратів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №7

1. Скласти програму, якщо довжина кругів дорівнює відповідно 15,14, 13, 12,11, 10 , знайти радіус кругів.

2. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати кількість нульових елементів та вивести результат на екран монітору.

3. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму додатних елементів всього масиву.

 

Приклад програми з оператором циклу:

 

void main()

{

int i;

i = 1;

while (i <= 20)

{

printf(“i=%d”,i);

i = i + 1;

}

return 0;

}

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

 

4. Як задаеться кількість повторень в операторі циклу з післяумовою?

5. Скількі ітерацій циклу задаеться в операторі циклу з післяумовою?

6. Які службові слова використовуються в операторі циклу з післяумовою?

 

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

Тема : Розробка програм з обробки масивів за допомогою вказівників.

Мета : Набуття практичних навичок з використання вказівників для обробки масивів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

 

Завдання

Створити програми обробки масивів за допомогою вказівників. Всі первісні дані вводяться з клавіатури. Вивести результати роботи програми на екран монітору і занести їх у звіт.

Варіант №1

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього не нульові елементи та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого рядка.

Варіант №2

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи менше нуля та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого рядка.

Варіант №3

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього рядка.

Варіант №4

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

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого стовпчика.

Варіант №5

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати елементи менше нуля та вивести суму цих елементів на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого стовпчика.

 

Варіант №6

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №7

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів масиву та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів які розташовані на діагоналі.

Варіант№8

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів більше нуля та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів всього масиву.

Варіант№9

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів менше нуля та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму від’ємних елементів всього масиву.

Варіант№10

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати кількість нульових елементів та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму додатних елементів всього масиву.

Приклад програми

#include <stdio.h>

#include <conio.h>

void main()

{

int a[10][10],I,j,s,*ptr;

randomaiz();

printf("En--ter : a");

for (i=1; i<=10;i++)

{ for (j=1; j<=10;j++)

{

a[i][j]=1+random(98); printf(“%5d”,a[i][j]); }printf(“\n\r”);}

for (i=1; i<=10;i++)

{ s=o; ptr=a[i];

for (j=1; j<=10;j++)

{

s+=*ptr; ptr++;}

printf(“%5d”,s);}

}

 

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

4. Що таке вказівник?

5. Які дії можна робить з вказівником?

6. Яке співвідношення між вказівником та іменем масива?

 

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

Тема : Створення простої функції.

Мета : Набуття практичних навичок зі створення простих функцій користувача.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

Варіант №1

 

1.

2. Скласти програму для обчислення площі трикутника.

Варіант №2

1.

2. Скласти програму для обчислення площі кола.

Варіант №3

1.

2. Скласти програму для обчислення площі прямокутника.

Варіант №4

1.

2. Скласти програму для обчислення площі трапеції.

 

Варіант №5

1.

2. Скласти програму для обчислення периметру трикутника.

Варіант №6

1.

2. Скласти програму для обчислення периметру квадрата.

Варіант №7

1.

2. Скласти програму для обчислення довжини кола.

Варіант№8

1.

2. Скласти програму для обчислення периметру прямокутника.

Варіант№9

1.

2. Скласти програму, якщо плаща кола дорівнює 25, знайти радіус кола.

 

 

Варіант№10

1.

2. Скласти програму, якщо довжина кола дорівнює 15, знайти радіус кола.

 

Приклад програми

/* програма з простою функцією! */

#define NAME "MEGATHINK, INC."

#define ADDRESS "10 Megabuck Plaza"

#define PLACE "Megapolis, CA 94904"

starbar( );

main( )

{

starbar( );

printf("%s\n", NAME);

printf(" %s\n", ADDRESS);

printf("%s\n", PLACE);

starbar( );

}

/* далі следує функція starbar( ) */

#include

#define LIMIT 65

starbar( )

{ int count;

for (count = 1; count <= LIMIT; count++)

putchar('*');

putchar('\n');

}

Результат роботи програми:

***********************************************************

MEGATHINK, INC 10 Megabuck Plaza Megapolis, CA 94904

***********************************************************

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

1. Навіщо в програмах використовуються функції?

2. Що таке прототип функції?

3. Де викликається функція?

 

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

Тема : Створення рекурсивної функції.

Мета : Набуття практичних навичок з рекурсії.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

 

Теоретичні положення

 

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

Приклад.

#include <stdio.h>
int fact(k);
int k;
{
if(k==1)
return(1);
else
return(k*fact(k-1));
}
main()

{
int i=1;
printf("перевірка рекурсії\n");
while(i<7)
{
printf("%d!= %d\n",i, fact(i));
i=i+1;
}

}

Хід роботи

 

1. Відладити програму з прикладу.

2. Написати коментарі до програми.

3.Скласти програму з рекурсивною функцією за варіантах:

a. n! де n=10

b. (a+b)! де a=3, b=6

c. (2+n)! де n=8

d. (c/d)! де c=9, d=3

e. (a*a)! де a=4

f. (7*t)! де t=2

g. n!+m! де n=4,m=6

 

 

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

1. В чому полягає алгоритм рекурсії?

2. Пояснити роботу рекурсивної функції.

 

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

Тема : Розробка програми з функцією з параметрами.

Мета : Набуття практичних навичок з використанням функцій з параметрами, що склав користувач, в системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

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

Варіант №1

 

1.

2. Скласти програму для обчислення площі трикутника.

Варіант №2

1.

2. Скласти програму для обчислення площі кола.

Варіант №3

1.

2. Скласти програму для обчислення площі прямокутника.

Варіант №4

1.

2. Скласти програму для обчислення площі трапеції.

 

Варіант №5

1.

2. Скласти програму для обчислення периметру трикутника.

Варіант №6

1.

2. Скласти програму для обчислення периметру квадрата.

Варіант №7

1.

2. Скласти програму для обчислення довжини кола.

Варіант№8

1.

2. Скласти програму для обчислення периметру прямокутника.

Варіант№9

1.

2. Скласти програму, якщо плаща кола дорівнює 25, знайти радіус кола.

 

Варіант№10

1.

2. Скласти програму, якщо довжина кола дорівнює 15, знайти радіус кола.

 

Приклад програми

/*Функція y=t**n*/
int power(t,n);
int t,n;
{
int p=1;

while(n!=0)
{
if(n%2 !=0) p=p*t;
n=n/2;
t=t*t;

}
return(p);
}

/*Піднесення до ступеню - головна програма*/

#include <stdio.h>
main()
{

int a,n;
printf("Введи a,n \n");
scanf("%d %d",&a,&n);
printf("%d в степени %d = %d",a,n
power(a,n));
}

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

1. Яка область видимості локальних даних?

2. Яка область видимості глобальних даних?

3. Що таке формальні та фактичні параметри?

 

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

Тема: Використання параметрів-показників в функціях.

Мета : Набуття практичних навичок з використанням в функціях параметрів-показників.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++.

 

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

У визначенні функції формальний параметр, який оголошений як масив, фактично є покажчиком. При передачі масиву, передається за значенням його базова адреса. Елементи масиву самі по собі не копіюються. Як угода, компілятор дозволяє записувати дужки масиву при оголошенні покажчиків як параметрів. Цей запис нагадує програмістові, що функція повинна викликатися з масивом у вигляді параметра.

 

Завдання

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

Варіант №1

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього не нульові елементи та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого рядка.

 

Варіант №2

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи менше нуля та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого рядка.

 

Варіант №3

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього рядка.

 

Варіант №4

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

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів першого стовпчика.

Варіант №5

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати елементи менше нуля та вивести суму цих елементів на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів другого стовпчика.

Варіант №6

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати середньоарифметичне елементів масиву та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів третього стовпчика.

Варіант №7

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів масиву та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів які розташовані на діагоналі.

Варіант№8

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів більше нуля та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму елементів всього масиву.

Варіант№9

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати суму елементів менше нуля та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму від’ємних елементів всього масиву.

Варіант№10

1. Ввести з клавіатури одновимірний масив з 5 чисел , підрахувати кількість нульових елементів та вивести результат на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, підрахувати суму додатних елементів всього масиву.

 

Приклад програми

#include <stdio.h>

#include <conio.h>

void input(int *a,int n)

{int i;

for(i=0;i<n;i++)

{printf(“введіть %і елемент масиву:”,і+1);

scanf("%d",&a[i]); }}

void main(){

int a[10],i;

input(a,10);

for(i=0;i<10;i++)

printf("%5i",a[i]);}

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

 

1. Які вимоги до фактичних та формальних параметрів в функціях?

2. Як масив зв’язав з вказівниками?

3. Що дає використання в програмах параметрів-вказівників?

 

 

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

Тема: Використання показників на функцію.

Мета : Набуття практичних навичок з використанням показників на функцію.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++.

 

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

Для того, щоб використовувати в програмі покажчик на функцію, необхідно виконати наступні дії:

• прийняти адресу функції;

• оголосити покажчик на функцію;

• використовувати покажчик на функцію для виклику цієї функції.

Кожна функція характеризується типом поверненого значення, ім'ям і списком типів її параметрів. Якщо ім'я функції використовувати без подальших дужок ( ) і параметрів, то воно виступатиме як покажчик на цю функцію, і його значення визначатиметься як адреса розміщення функції в пам'яті (перший байт). ). Це значення можна буде привласнити іншому покажчику. Тоді цей новий покажчик можна буде використовувати для виклику функції. Покажчик на функцію як змінна вводиться окремо від визначення і оголошення (прототипу) якій-небудь функції. Покажчик на функцію – змінна, яка містить адресу деякої функції. Відповідно, непряме звернення по цьому покажчику є викликом функції.

Синтаксис визначення покажчика на функцію:

тип _функції(*ім’я _ показника)(специфікация_параметрів)

де тип

_функції – визначає тип поверненого функцією значення;

ім’я _ показчика – ідентифікатор;

специфікація _ параметрів – визначає склад і типи параметрів функції.

Наприклад:

int (*pf)(); // без контролю параметрів виклику

int (*pf)(void); // без параметрів, з контролем по прототипу

int (*pf)(int, char*); // з контролем по прототипу

Синтаксис виклику функції за допомогою покажчика:

(*ім’я _ показника)(список _ фактичних_параметрів);

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

Арифметичні операції над покажчиками на функції заборонені.

Завдання

1. Набрати та відладити програму .

2. Проаналізувати програму.

3. Написати коментарі до програм.

4. Відповісти на контрольні запитання.

 

Приклад 1.

Обрахуйте наближене значення інтегралів за допомогою формули прямокутників, задавши предели інтегрування [a, b] і число інтервалів розбиття і .

#include "stdafx.h"

#include <iostream>

using namespace std;

//Объявление (прототипи) функції:

/*функция rectangle() повертає значення типу double, її параметри:*/

/*pf–показник на функцію з параметрами типу double, якій повертає значення double*/

/*a, b – межі інтегрування, величини типу double*/

double rectangle(double(*pf)(double), double a, double b);

 

/*функція ratio() повертає значення типу double, її параметр типу double*/

double ratio(double x);

 

/*функция cos4_2()повертає значення типу double, її параметр типу double*/

double cos4_2(double v);

 

int _tmain(int argc, _TCHAR* argv[]){

double a,b,c;

printf("\n Введіть значення межі інтегрування:");

printf("\na= ");

scanf("%lf",&a);

printf("\nb= ");

scanf("%lf",&b);

c=rectangle(ratio,a,b);

printf("Першій інтеграл = %f\n",c);

printf("Другій інтеграл = %f\n",rectangle(cos4_2,a,b));

system("pause");

return 0;

}

 

double rectangle(double(*pf)(double), double a, double b){

/*Обрахування визначного інтегралу за допомогою формули прямокутників*/

 

int N, i;

double h,s=0.0;

printf("\n Введіть кількість інтервалів розбиття : N= ");

scanf("%d",&N);

printf("\na= ");

h=(b-a)/N; //Довжина інтервалу розбиття

for (i=0;i<N;i++)

s+=pf(a+h/2+i*h);

return h*s;

}

 

double ratio(double x) { //Підінтегральна функція

double z; //Допоміжна змінна

z=x*x+1;

return x/(z*z);

}

 

double cos4_2(double v){ // Підінтегральна функція

double w; // Допоміжна змінна

w=cos(v);

return 4*w*w;

}

 

Приклад 2.

 

// Визначення і використання показників на функцію

#include "stdafx.h"

#include <iostream>

using namespace std;

// Визначення і використання показників на функцію

void f1(); //оголошення (прототип)функції f1

void f2(); // оголошення (прототип)функції f2

 

int _tmain(int argc, _TCHAR* argv[]) {

void (*ptr)(); //ptr – показник на функцію

f2(); //явний виклик функції f2

ptr=f2;//показчику привласнюється адреса функції f2

(*ptr)();

//виклик функції f2 по її адресі з розіменуванням показника

ptr=f1;//показнику привласнюється адреса функції f1

(*ptr)();

// виклік функції f1 по її адресі з розіменуванням показника

ptr(); // виклик функції f1 без розіменуванням показника

system("pause");

return 0;

}

//опис функції f1 и f2

void f1() {

cout << "Виконується f1\n";

}

void f2() {

cout << "виконується f2\n";

}

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

1. Чому заборонені арифметичні операції над покажчиками на функції?

2. Чому в описі покажчика на функцію необхідні круглі дужки при імені покажчика?

3. Чи може функція повертати значення типа покажчик? Якщо так, то як оголошується прототип такої функції?

4. Чи можуть параметрами функції бути покажчики на об'єкти? Якщо так, то як відбувається передача фактичних параметрів при виклику функції?

5. Чи можуть параметрами функції бути покажчики на функції? Якщо так, то як відбувається передача фактичних параметрів при виклику функції?

 

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

Тема : Розробка програм сортування.

Мета : Набуття практичних навичок з використання алгоритму сортування для обробки масивів системи програмування С.

Література: Б.И.Березин, С.Б. Березин, Навчальний курс С и С++

Завдання

Створити програми сортування масивів. Всі первісні дані вводяться з клавіатури. Вивести результати роботи програми на екран монітору і занести їх у звіт.

Варіант №1

1. Ввести з клавіатури одновимірний масив з 5 чисел , відсортувати його по збільшенню та вивести відсортований масив на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементи масиву по зменшенню .

Варіант №2

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи менше нуля відсортувати їх по зменшенню та вивести відсортовані елементи на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, елементи другого рядка відсортувати збільшенню. Відсортовані елементи вивести на екран монітору.

Варіант №3

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля, відсортувати їх по збільшенню та вивести їх на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементів третього рядка по зменшенню та вивести їх на екран монітору.

Варіант №4

1. Ввести з клавіатури одновимірний масив з 5 чисел , знайти парні елементи, відсортувати їх по збільшенню та вивести ці елементі на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементів третього рядка по зменшенню та вивести їх на екран монітору.

Варіант №5

1. Ввести з клавіатури одновимірний масив з 5 чисел , знайти не парні елементи, відсортувати їх по збільшенню та вивести ці елементі на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементі на головній діагоналі по зменшенню та вивести їх на екран монітору.

Варіант №6

1. Ввести з клавіатури одновимірний масив з 5 чисел , відсортувати його по збільшенню та вивести відсортований масив на екран монітору.

2.Ввести з клавіатури двовимірний масив з 9 чисел, елементи другого рядка відсортувати збільшенню. Відсортовані елементи вивести на екран монітору.

Варіант №7

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи менше нуля відсортувати їх по зменшенню та вивести відсортовані елементи на екран монітору.

2. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементи масиву по зменшенню .

Варіант№8

1. Ввести з клавіатури одновимірний масив з 5 чисел , вибрати з нього елементи більше нуля, відсортувати їх по збільшенню та вивести їх на екран монітору.

2. Ввести з клавіатури одновимірний масив з 5 чисел , знайти парні елементи, відсортувати їх по збільшенню та вивести ці елементі на екран монітору.

Варіант№9

1. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементів третього рядка по зменшенню та вивести їх на екран монітору.

2.Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементів третього рядка по зменшенню та вивести їх на екран монітору.

Варіант№10

1. Ввести з клавіатури двовимірний масив з 9 чисел, відсортувати елементі на головній діагоналі по зменшенню та вивести їх на екран монітору.

2. Ввести з клавіатури одновимірний масив з 5 чисел , знайти не парні елементи, відсортувати їх по збільшенню та вивести ці елементі на екран монітору.

 

Приклад програми

#include <stdio.h>

#include <conio.h>

void main()

{

int a[10],t,i,x;

randomaiz();

printf("En--ter : a");

for (i=1; i<=10;i++){

a[i][j]=1+random(98);

printf(“%5d”,a[i][j]); }

printf(“\n\r”);}

do {

t=1;

for (i=1; i<=9;i++)

if(a[i]>a[i+1]){x=a[i];

a[i]=a[i+1];a[i+1]=x;t=0}}

while(t==0);

for (i=1; i<=10;i++)

printf(“%5d”,a[i]);}

 

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

1. Розкажіть про метод бульбашкового сортування.

2. Розкажіть про метод сортування вставками.

3. Для чого застосовують алгоритми сортування?

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

Тема : Розробка програм находження екстремумів.

Мета : Набуття практичних навичок з використання алгоритму находження екстремумів для обробки масивів системи програмування С.