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

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

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

Добавлен: 09.09.2024

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

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

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

Ваше завдання полягає в тому, аби навчитися личити до програмування професійно. Врешті-решт, професіонал відрізняється тим, що може досить точний оцінити, скільки часу у нього займе написання програми, яка працюватиме в повній відповідності з поставленим завданням. Окрім «розуму, смаку і терпіння», для цього потрібний досвід, а також знання основних принципів, вироблених програмістами протягом більш, ніж півстоліття розвитку цієї дисципліни. Навіть до написання найпростіших програм потрібно личити послідовно, дотримуючи певну дисципліну.» (Павлівська Т. А., стр.109)

Вирішення завдань по програмуванню передбачає ряд етапів:

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

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

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

  4. Виконання програми (вихідний модуль ->компилятор ->объектный модуль -> компонувальник -> виконуваний модуль)

  5. Тестування і відладка програми. При виконанні програми можуть виникнути помилки 3 типів:

    1. синтаксичні – виправляються на етапі компіляції;

    2. помилки виконання програми (ділення на 0, логарифм від негативного числа і т. п.) – виправляються при виконанні програми;

    3. семантичні (логічні) помилки – з'являються із-за завдання, що неправильно зрозуміло, неправильно складеного алгоритму.

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

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


  1. тестування класів вхідних даних, тобто набір тестів повинен містити по одному представникові кожного класу даних:

    X

    0

    1

    0

    1

    -1

    1

    -1

    Y

    0

    1

    1

    0

    1

    -1

    -1

  2. тестування класів вихідних даних, набір тестів повинен містити дані достатні для здобуття по одному представникові з кожного класу вихідних даних.

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

  1. Тестування команд. Набор тестів повинен забезпечувати проходження кожної команди не менше одного разу.

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

Програмування галужень

Завдання №1. Визначити, чи попаде крапка з координатами (х, в ) в заштриховану область.

-1

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

Результат: так чи ні

Математична модель:

Ok=I || II || III || VI, де I, II, III, IV – умови попадання крапки в заштриховану область для кожного квадранта.

Квадрант I: Область формується прямими 0Х і 0У, прямою, що проходить через крапки (0,1) і(1,0) і прямою, що проходить через крапки (0,3) і (2,0).


Необхідно визначити рівняння прямих у=ax+b. Вирішуємо дві системи рівнянь:

  1. 1=a*0+b;

0=a*1+b;

  1. 2=a*0+b;

0=a*3+b;

З цих систем отримуємо наступні рівняння прямих:

y=-1x+1;

y=-2/3x+1;

Тоді умова попадання крапки в I квадрант виглядатиме таким чином:

y>=-x+1&&y<=-2/3x+2&&y>=0&&x>=0.

Квадранти II і III: Область формується прямими 0Х і 0У і двома колами, описуваними формулами x2+y2=1, x2+y2=9.

Тоді умова попадання крапки в II і III квадранти виглядатиме таким чином:

x2+y2>=1&& x2+y2<=9&&&&x<=0.

Квадрант IV:

Область формується двома прямокутниками. Крапка може потрапляти або в перший прямокутник, або в другий.

Умова попадання крапки в IV квадрант виглядатиме таким чином:

(x>=0&&x<=1&&y<=-1&&y>=-3)|| (x>=1&&x<=3&&y<=0&&y>=-3) .

Програма:

#include <iostream.h>

#include <math.h>

void main()

{

float x,y;

cout<<"\nEnter x,y";

cin>>x>>y;

bool Ok=(y>=-x+1&&y<=2/3*x+2&&x>=0&&y>=0)||

(pow(x,2)+pow(у,2)>=1&&pow(x,2)+pow(у,2)<=9&&x<=0)||

(x>=0&&x<=1&&y<=-1&&y>=-3)||(x>=1&&x<=2&&y<=0&&y>=-3);

cout<<"\n"<<Ok;

}

Тести:

Квадрант

Вихідні дані (X,Y)

Результат (Ok)

I

0.2,0.2

0

I

0.7,0.5

1

II

-0.5, 0.5

0

II

-2,0

1

III

-0.5,-0,5

0

III

-2,-1

1

IV

0,5,-0.5

0

IV

1.5, -1

1

Центр системи координат

0,0

0


Програмування арифметичних циклів.

Для арифметичного циклу заздалегідь відомо скільки разів виконується тіло циклу.

Завдання №2

Дана послідовність цілих чисел з n елементів. Знайти середнє арифметичне цій послідовності.

#include <iostream.h>

#include <math.h>

void main()

{

int а,n,i,k=0;

double s=0;

cout<<"\nEnter n";

cin>>n;

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

{

cout<<"\nEnter а";

cin>>a;

s+=a;k++;

}

s=s/k;

cout<<"\nSr. arifm="<<s<<"\n";

}

Тести

N

5

A

1,2,3,4,5,3

S

3

Завдання №3

S=1+2+3+4+. . . +N

#include <iostream.h>

#include <math.h>

void main()

{

int n,i,s=0;

cout<<"\nEnter n";

cin>>n;

if(n<=0) {cout<<”\nN<=0”;return;}

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

cout<<"\nS="<<s<<"\n";

}

Тести

n

S

n=-1

N<=0

n=0

N<=0

n=5

S=15

Завдання №4

S=15-17+19-21+ . . ., всього n доданків.

#include <iostream.h>

#include <math.h>

void main()

{

int n,i,s=0,a=15;

cout<<"\nEnter n";

cin>>n;

if(n<=0) {cout<<”\nN<=0”;return;}

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

{

if(i%2==1) s+=a;

else s-=a;

a+=2;

}

cout<<"\nS="<<s<<"\n";

}

Тести

n

S

n=-1

N<=0

n=0

N<=0

n=3

S=17


Ітераційні цикли

Для ітераційного циклу відома умова виконання циклу.

Завдання №5

Дана послідовність цілих чисел, за якою слідує 0. Знайти мінімальний елемент цієї послідовності.

#include <iostream.h>

#include <math.h>

void main()

{

int а,min;

cout<<"\nEnter а";

cin>>a;

min=a;

while(а!=0) //for(;а!=0;)

{

cout<<"\nEnter а";

cin>>a;

if (а!=0&&a<min) min=a;

}

cout<<"\nmin="<<min<<"\n";

}

Тести:

а

2

55

-3

-10

0

min

-10

а

12

55

4

27

0

min

4

а

-6

-43

-15

-10

0

min

-10

Завдання №6: Знайти суму чисел Фібоначчі, менших заданого числа Q.

#include<iostream.h>

void main()

{

int a=1,b=1,s=2,Q,c;

cout<<"\nEnter Q";