ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2019

Просмотров: 1102

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Зміст

Розділ 1Технологія створення програм

1.1Кодування і документування програми

1.2Структурний підхід до програмування

1.3Етапи створення програм

Розділ 2Робота в інтегрованому середовищі програмування (IDE) MS Visual Studio C++

2.1Склад і характеристика проектів IDE MS Visual Studio C++

2.2Створення програмного проекту

2.3Методика відладки програми

Розділ 3Формування навичок програмування з використанням алгоритмічної мови С++

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

3.2Програмна реалізація алгоритмів розгалужених структур

Рис.8 Результат тестування задачі 3.2.1

Рис. 10 Результат тестування задачі 3.2.2

Рис. 12 Результат тестування задачі 3.2.3

Рис.14 Результат тестування задачі 3.2.4

3.3Програмна реалізація алгоритмів циклічних структур

Рис. 16 Результат тестування задачі 3.3.1

Рис. 17 Схема алгоритму задачі 3.3.2

Рис.18 Результат тестування задачі 3.3.2

Рис. 19 Схема алгоритму задачі 3.3.3

Рис.20 Результат тестування задачі 3.3.3

Рис.22 Результат тестування задачі 3.3.4

3.4Програмування вкладених циклів

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

3.6Програмна обробка одновимірних масивів

Список використаної літератури

У=

a=1.65, x, ∆х=0.2

Вхідні дані : змінна типу з плаваючою точкою –double xp, що означає початок діапазону х;

Зміна типу з плаваючою точкою - double xk, шо позначає кінець діапазону х;

Зміна типу з плаваючою точкою - double dx, що позначає крок зміни х ;

Вихідні дані : результат у вигляді змінної типу з плаваючою точкою – double у, що підраховує значення у ;

  1. Схема алгоритму рішення задачі.

Group 393Ромб 48

y=x*x*pi-(7/(x*x))

y=a*x*x*x+(8/sqrt(x))

y= log (x+9*sqrt(abs(x+a)))

Прямая соединительная линия 60Прямая соединительная линия 41

a=1.65, x=xp, pi=3.14

Прямая соединительная линия 51Прямая соединительная линия 52Прямая со стрелкой 54

Рис. 19 Схема алгоритму задачі 3.3.3

  1. Лістинг програми.

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

const double pi=3.14;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double x,y,a=1.65,dx,xp,xk;

cout<<"Введите начальное значение х : ";

cin>>xp;

cout<<"Введите конечное значение х : ";

cin>>xk;

cout<<"Введите шаг изменения х : ";

cin>>dx;

for(x=xp;x<=xk+dx;x+=dx)

{

if(x<1.4) y=x*x*pi-(7/(x*x));

else if ( x==1.4) y=a*x*x*x+(8/sqrt(x));

else y= log (x+9*sqrt(abs(x+a)));

cout<<"Значение х "<<x<<'\t'<<"Результат "<<y<<endl;

}

system("pause");

}

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

Рис.20 Результат тестування задачі 3.3.3

Задача 3.3.4

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

Підрахувати суму членів ряду, які обчислюються за формулою, з точністю до e=0.000001 (| |>e).

Визначити кількість доданків .

S= ≈1 + + + +… |x|<1

Вхідні дані :

значення х, яке вводиться з клавіатури - змінна типу з плаваючою точкою – double x, точність обчислення - змінна типу з плаваючою точкою – double e;

Вихідні дані :

Кінцевий результат суми членів ряду - змінна типу з плаваючою точкою – double s, кількість доданків - змінна цілого типу – int i;

  1. Схема алгоритму рішення задачі.

Овал 64Прямая соединительная линия 66Параллелограмм 65

s=1, k=1, i = 1, f=1

k*=x

f*=i

s+=1./(f*k)

i++

Прямая соединительная линия 107Прямая соединительная линия 109Прямая соединительная линия 110Прямая соединительная линия 111Прямая соединительная линия 112Прямая соединительная линия 118Прямая со стрелкой 119Овал 120

Прямая соединительная линия 113Шестиугольник 1161 0

Рис. 21 Схема алгоритму задачі 3.3.4Овал 77

  1. Лістинг програми.

#include <iostream>#include<math.h>#include<windows.h>using namespace std;void main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double s=1, e, x,k=1;
cout«"Введите точность e : ";
cin»e;cout«"Введите х : ";
cin»x;int i = 1, f=1;
do{k*=x;f*=i;s+=1./(f*k);i++;
}
while ( 1./(f*k)>e);cout«"Сумма ряда = "«s«endl;cout«"количество слогаемых = "«i«endl;system("pause");
}

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

Рис.22 Результат тестування задачі 3.3.4

Задача 3.3.5.

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

Відомі дані про масу (у кг ) ш об'єм (у см3) 30-ти тіл, виготовлених з різних матеріалів. Визначити максимальну щільність матеріалу.

Вхідні дані :

змінні типу з плаваючою точкою – double m - що позначає масу тіла,v- що позначає об'єм тіла ;

Вихідні дані :

змінні типу з плаваючою точкою – double max – максимальна щільність матеріалу;

  1. Схема алгоритму рішення задачі.

ma x=m/v

1

0

max=m/v


Рис.23 Схема алгоритму задачі 3.3.5.

  1. Лістинг програми

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double m,v,max;

cout<<"Ведите массу 1го тела: ";

cin>>m;

cout<<"Введите объём 1го тела: ";

cin>>v;

max=m/v;

for(int i=2;i<=30;i++)

{

cout<<"Ведите массу "<<i<<"го тела: ";

cin>>m;

cout<<"Введите объём "<<i<<"го тела: ";

cin>>v;

if(m/v>max) max=m/v;

}

cout<<"Максимальная плотность материала = "<<max<<endl;

system("pause");

}

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

Рис.24 Результат тестування задачі 3.3.5.


3.4Програмування вкладених циклів

Цикл — різновид керуючої конструкції у високорівневих мовах програмування, призначена для організації багаторазового виконання набору інструкцій (команд). Також циклом може називатися будь-яка багатократно виконувана послідовність команд, організована будь-яким чином. Цикли можуть бути вкладені один в одний. Приклад: Скласти програму для упорядкування елементів масиву (а 1, а 2,... а 100), розташувавши їх по зростанню в тому ж масиві. Алгоритм рішення: кожен i-й елемент масиву з першого по 99-й необхідно порівнювати з усіма j-ми елементами, що мають більш високий порядковий номер. Наприклад, перший елемент треба порівнювати з другим, третім, четвер-тим і т.д.

Другий елемент треба порівнювати з третім, четвертим, п'ятим і т. д. Якщо значення j-го елемента виявиться менше, ніж i-го, ці елементи треба поміняти місцями в масиві. Для цього вводиться проміжна змінна amin. Спочатку змінної amin присвоюється значення j-го елемента, потім j-му еле-менту присвоюється значення i-го елемента, і потім i-му елементу присвоюється-ється значення змінної amin.

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

Задача 3.4.1

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

Надрукувати числа у вигляді наступної таблиці:

1

2 2

3 3 3

4 4 4 4

5 5 5 5 5

  1. Схема алгоритму рішення задачі.

int i=1; i<=5; i++

int j=1; j<=i; j++

Параллелограмм 125

return 0

Рис. 25 Схема алгоритму задачі 3.4.1

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

using namespace std;

int main ( )

{

for (int i=1; i<=5; i++)

{

for (int j=1; j<=i; j++)

cout << i << " ";

cout << endl;

}

cout << endl;

system("pause");

return 0;

}

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

Рис.26 Результат тестування задачі 3.4.1

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

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

Перед викликом функції її потрібно оголосити, для цього:

<Тип функції> <назва функції> (<список формальних параметрів>);

Тип функції - тип значення, якщо функція не вертає результат, то вона оголошується типом void.

У списку формальних параметрів для кожної змінної потрібно окремо вказувати тип. Вказувати імена змінних не обов'язково (наприклад, (float, float, int) ;). Змінним при їх перерахуванні можна відразу присвоювати початкові значення.

Опис функції користувача

<Тип функції> <назва функції> (<список формальних параметрів>)

{

<Тіло функції>;

Return (<назва змінної, значення якої потрібно повернути>):

}

Функцію можна описати і до основної функції, тоді оголошувати її не обов'язково

Виклик функції


<Назва функції> (<список фактичних параметрів>);

Типи фактичних змінних повинні збігатися з типами формальних змінних.

Прототипи функції

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

Задача 3.5.1

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

Дані сторони двох трикутників. Знайти суму їх периметрів і суму їх площ.(Визначити функцію для розрахунку периметра і площі трикутника по його сторонах.)

Вхідні дані.

Цілого типу

Вихідні дані.

Цілого типу

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

using namespace std;

int fact(int);

int main()

{

cout << (2*fact(5)+3*fact(8))/(fact(6)+fact(4)) << endl;

return 0;

}

int fact(int n)

{

int f=1;

for (int i=1; i<=n; i++)

f=f*i;

return f;

}

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

Рис.27 Результат тестування задачі 3.5.1

Задача 3.5.2

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

Розрахувати значення y, визначивши і використавши необхідну функцію

Вхідні дані.

Цілого типу

Вихідні дані.

Цілого типу

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

double a(int, int);

int main()

{

cout << a(1, 4)+ a(7, 5) + a(3, 2) << endl;

return 0;

}

double a(int n1, int n2)

{

return ((n1+sin(n2))/(n2+sin(n1)));

}

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

Рис.28 Результат тестування задачі 3.5.2

3.6Програмна обробка одновимірних масивів

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

Усі елементи масиву мають один і той самий тип, що називається базовим. З іншого боку, порядок теж визначається набором значень одного й того самого типу, що називається індексним, а самі ці значення називаються індексами. Кожному елементу масиву відповідає певний індекс. Індексний тип має бути простим порядковим типом даних. Кількість елементів в одновимір-ному масиві називається його розмірністю, або довжиною.З точки зору математики одновимірний масив — це вектор. Наприклад, масив або вектор А, що має п'ять елементів, які записують у математиці у вигляді індексованих змінних а1 и а2, а3, а4, а5, можна зобразити значеннями цих змінних у сусідніх ділянках оперативної пам'яті.

а1

а2

а3

а4

а5

Задача 3.6.1

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

Зріст кожного з 22 учнів класу представлений у вигляді масиву. Визначити кількість учнів,зріст яких не перевищує значення s .

Вхідні дані :

значення s – змінна цілого типу - int s, одновимірний масив цілого типу - int A[N];

Вихідні дані :

кількість учнів,зріст яких не перевищує значення s – змінна цілого типу – int k;

  1. Схема алгоритму рішення задачі.

А[i]

k,s


1 0

Рис. 29 Схема алгоритму задачі 3.6.1

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

const int N=22;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int A[N],s,k=0;

cout<<"Введите значение s :";

cin>>s;

for(int i=1;i<=N;i++)


{

cout<<"Введите рост ученика "<<i<<" :";

cin>>A[i];

}

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

if(A[i]>s)k++;

cout<<"Количество учеников,рост которых не превышает значение s : "<<k<<endl;

system("pause");

}

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

Рис.30. Результат тестування задачі 3.6.1

3.7 Програмна обробка двовимірних масивів

Двовимірний масив - це масив, де кожному елементу ставиться у відповідність два індекси. Для початку роботи з масивом готуємо місце в пам'яті у вигляді прямокутника, що має задану кількість рядків і стовпчиків. Для цього описуємо його в розділі оголошень, використовуючи зарезервоване слово Аrray, після якого в квадратних дужках вказуємо розмірність масиву, причому враховуємо, що на першому місці вказуються індекси рядків, а на другому - стовпчиків, і обов'язково тип елементів.).

Задача 3.7.1

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

Нехай 6 населених пунктів позначені номерами від 1 до 6 (величина k), а 5 кандидатів – номерами від1 до 5 (величина n). Кількість голосів,набраних кандидатами у кожному пункті визначити за допомогою генератора випадкових чисел. Вивести на екран таблицю результатів голосування, де у рядках є дані з населених пунктів, а у стовпцях – дані щодо конкретних кандидатів. Хто з кандидатів набрав максимальну. А хто – мінімальну кількість голосів у четвертому населеному пункті?

Вхідні дані :

двовимірний масив цілого типу - int A[k][n];

Вихідні дані :

мінімальна кількість голосів у четвертому населеному пункті – змінна цілого типу – int min, максимальна кількість голосів у четвертому населеному пункті – змінна цілого типу – int mах;

  1. Схема алгоритму рішення задачі.

A[i;j]


min=A[3][j]; max=A[3][j]


Рис. 31 Схема алгоритму задачі 3.7.1

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include<windows.h>

#include <math.h>

using namespace std;

const int n=5,k=6;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int A[k][n],max,min;

for(int i=0;i<k;i++)

for(int j=0;j<n;j++)

A[i][j]=rand()%10;

for(int i=0;i<k;i++)

{

cout<<endl<<"Номер населённого пункта "<<i+1<<":";

for(int j=0;j<n;j++)

{

cout<<'\t';

cout<<A[i][j];

}

}

min=max=A[3][0];

for(int j=0;j<n;j++)

{

if(A[3][j]<min)min=A[3][j];

}

cout<<endl<<"Минимальное количество голосов в четвёртом населённом пункте:"<<min;

for(int j=0;j<n;j++)

{

if(A[3][j]>max)max=A[3][j];

}

cout<<endl<<"Максимальное количество голосов в четвёртом населённом пункте:"<<max;

cout<<endl;

system("pause");

}

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

Рис.32 Результат тестування задачі 3.7.1



Список використаної літератури

  1. Давыдов В.Г./Программирование и основы алгоритмизации: Учеб. пособие/— М.: Высш. шк., 2003. — 447 е.: ил.

  2. Павловская Т.А./C/C++. Программирование на языке высокого уровня / — СПб. : Питер, 2003. —461 с: ил.

  3. Семакин И. Г., Шестаков А. П./С12 Основы программирования: Учебник. — М.: Мастерство,2002. - 432 с.