Етапи розв'язання задач на комп'ютері


НазваЕтапи розв'язання задач на комп'ютері
Дата конвертації12.03.2013
Розмір445 b.
ТипПрезентации


Етапи розв'язання задач на комп'ютері

  • Постановка задачі мовою чітко визначених математичних понять. Суть поставленої задачі, необхідні початкові дані та інформацію, що вважається результатами розв'язання.

  • Побудова математичної моделі. Створюється інформаційна математична модель об'єкта, і чим достовірніше вона відображає реальні сторони об'єкта, тим точніші одержані результати.

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




Оператори

  • Оператори

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

  • За конструкцією оператори поділяють на групи: прості, складені.

  • За характером дій: оператори-вирази, умовні оператори, переходу, циклу.

  • Окремий вид складеного оператора – блок. Це група довільних операторів, об’єднаних фігурними дужками {….}. Всередені блоку можна оголошувати локальні змінні.

  • {

  • double tm;

  • tm=u; u=v; v=tm;

  • }



Оператори-вирази

  • Кожен допустимий вираз, що закінчується ;

  • clrscr(); z=3.5*x;

  • Виділяють: оператори присвоєння та оператори звертання до функцій.

  • Умовні оператори

  • Реалізують розгалуження процесу виконання програми.

  • Використовують два види : if , switch



Оператор розгалуження if

  • Оператор розгалуження if

  • Оператор розгалуження призначений для виконання тих або інших дій в залежності від істинності або хибності деякої умови.

  • Синтаксис оператора : if (<умова>) <оператор1>;

  • [else <оператор2;>]

  • Умова хибна, якщо вона дорівнює нулю, в інших випадках вона істинна

  • Скорочений запис if (вираз) оператор;

  • Вкладення умовних операторів. За правилами – кожна else-частина умовного оператора пов’язується з найближчим if (інакше використовуємо фігурні дужки).



Приклад 1

  • Приклад 1

  • /* програма виводить результат ділення двох дійсних чисел */

  • #include

  • void main()

  • {  float a,b,c;

  •       printf ("Введiть число a :\n");

  •       scanf ("%f",&a);

  •       printf ("Введiть число b :\n");

  •       scanf ("%f",&b);

  •       if (b==0) printf ("Дiлення да нуль !\n");

  •       else

  •       {            c=a/b;

  •             printf ("a : b == %g",c);

  •       }

  • }



Приклад 2

  • Приклад 2

  • Обчислити значення функції:

  • #include

  • double x,y;

  • void main(void)

  • {

  • scanf ("%f",&x);

  • if (x < 0) y = x + 1; else

  • if (x < 10) y = x*x; else y = x - 4;

  • printf ("%f\n",y);

  • }



  • Призначений для переривання роботи оператора

  • вибору і операторів циклу.

  • Перериває виконання внутрішніх операторів switch і

  • передає керування оператору, наступному за

  • оператором вибору.

  • Якщо оператор break викликається в тілі циклу, то

  • виконання циклу відразу припиняється і керування

  • переходить до оператора, наступного за оператором

  • циклу



Оператор switch

  • Оператор switch

  • Синтаксис :

  • switch(<вираз цілого типу>)

  • {

  •       case <значення_1>:

  •             <послідовність_операторів_1>;

  •       break;

  •       case <значення_2>:

  •             <послідовність_операторів_2>;

  •       break;

  •       ..............................................................

  •       case <значення_n>:

  •             <послідовність_операторів_n>;

  •       break;

  •       [default:

  •             <послідовність_операторів_n+1>;]

  • }



Приклад :

  • Приклад :

  • switch(i) {

  •       case -1:   n++;

  •       break;

  •       case 0:   z++;

  •      break;

  •       case 1:    p++;

  •       break;

  • }

  • За відсутності операторів break відбувається послідовне виконання всіх внутрішніх операторів, починаючи з вибраної гілки розгалуження.



Оператор циклу з передумовою while

  • Оператор циклу з передумовою while

  • Оператор while використовується для організації циклічного виконання дій, поки виконується певна умова. while (<логічний вираз>) { <тіло циклу>  }

  • Приклад 1: Обчислити суму чисел от 1 до 100.

  • #include

  • int s,i;

  • void main(void)

  • {

  • s = 0; i = 100;

  • while(i > 0)

  • { s = s + i;

  • i--;

  • }

  • printf("%d\n",s);

  • }



  • Тіло циклу – довільний оператор (зокрема блок).

  • Оператором while виконуються наступні дії:

  • 1) обчислюється значення виразу;

  • 2) якщо значення виразу дорівнює нулю (умова хибна), то

  • виконання циклу завершується і керування передається

  • оператору, наступному за while;

  • 3) якщо значення виразу ненульове (умова істинна), то

  • виконується оператор тіла циклу;

  • 4) відбувається повернення до п.1 для наступної перевірки

  • умови виконання циклу.



Приклад 2: Обчислити y=sin(x)+k, де х змінюється від xmin до хmax

  • Приклад 2: Обчислити y=sin(x)+k, де х змінюється від xmin до хmax

  • з кроком х.

  • #include

  • #include

  • void main( )

  • { double x, y, xmin, dx, xmax, k=0.25;

  • puts (“Введіть xmin, dx, xmax”);

  • scanf (“%lf%lf%lf”, &xmin, &dx, &xmax);

  • x=xmin;

  • while (x<=xmax)

  • { y=sin(x)+k;

  • printf (“При x=%lf y=%lf\n”, x, y);

  • x+=dx; }

  • puts (“Вітаю з успіхом!”);

  • }



  • Оператор циклу з постумовою do … while

  • Оператор do…while використовується для організації циклічного виконання оператора або серії операторів, які називаються тілом циклу, до тих пір, поки умова не стане хибною.

  • Синтаксис : do { <оператор>; }

  • while (<логічний_вираз>);

  • Цикл обов’язково виконується ( хоч один раз).

  • Використання оператора do … while зручне у випадках, коли значення виразу-умови залежить від результатів виконання тіла циклу.



Приклад 1: Обчислити суму чисел от 1 до 100.

  • Приклад 1: Обчислити суму чисел от 1 до 100.

  • #include

  • int s,i;

  • void main(void)

  • {

  • s = 0; i = 100;

  • do {

  • s = s + i;

  • i--;

  • } while (i > 0);

  • printf ("%d\n", s);

  • }

  • Цикл do ... while припиняє виконання, коли умовний вираз обертається в нуль (стає невірним).



Приклад 2.

  • Приклад 2.

  • #include

  • void main()

  • {

  •       int n,i;

  •       float fact;

  •       printf ("Програма обчислення n!.\n");

  •       printf ("Введiть число n :\n");

  •       scanf ("%d", &n);

  •       i = 1;

  •       fact = 1;

  •       do {

  •             fact *= i;

  •             i++;

  •       } while (i <= n);

  •       printf ("n!==%g", fact);

  • }



Оператор циклу for

  • Оператор циклу for

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

  • for ([ініціалізація]; [перевірка_умови];[ нове_значення])

  • { оператор ;

  • }



Формально роботу циклу можна описати такими кроками

  • Формально роботу циклу можна описати такими кроками

  • 1)якщо перший вираз (ініціалізація) присутній, то він обчислюється;

  • 2) обчислюється вираз умови (якщо він присутній). Якщо умова дорівнює 0, тобто вона невірна, цикл припиняється, у протилежному випадку він буде продовжений;

  • 3) виконується тіло циклу;

  • 4) якщо присутній вираз зміни лічильника, то він обчислюється;

  • 5) надалі перехід до пункту під номером 2.

  • Поява у будь-якому місці циклу оператора continue призведе до негайного переходу до пункту 4.

  • Приклад : обчислити суму чисел от 1 до 100 for (s=0, i=1; i<=100; i++) s = s + i;



Приклад: друк парних чисел у проміжку від 500 до 0

  • Приклад: друк парних чисел у проміжку від 500 до 0

  • #include

  • void main(void) {       long i;      for (i=500; i>=0; i-=2)       printf ("\n%ld", i);       printf ("\n"); }

  • Для того, щоб продемонструвати гнучкість даного різновиду циклу, представимо весь перелік обчислень лише в одному операторі for, за яким слідує порожній оператор:

  • #include void main(void) {       long i;       for (i=500; i>=0; printf ("\n%ld", i), i-=2) ; }



  • #include

  • #include

  • void main ( )

  • {

  • float x, xmin, dx, xmax,y;

  • puts (“Введіть xmin, dx, xmax”);

  • scanf (“%f%f%f”, &xmin, &dx, &xmax);

  • for (x=xmin ; x<=xmax ; x+=dx)

  • {

  • y=exp(-x);

  • printf (“При x=%f y=%f\n”, x, y);

  • }

  • }



Вкладення циклів

  • Вкладення циклів

  • Якщо у тілі циклу організовано внутрішні циклічні дії, то такі цикли називають вкладеними. Приклад – виведення на екран піраміди літер.

  • #include

  • #define rmax 8 /*висота піраміди*/

  • int main()

  • {

  • int r, left, right, pos; /*номери рядка,початку і кінця рядка*/

  • for (r=1, left=right=rmax; r<=rmax; left--, right++, r++)

  • { for (pos=1; pos

  • putchar(‘ ‘); /*виведення символу пробілу*/

  • for ( ; pos<=right; pos++)

  • putchar(‘A’+r-1); /*виведення літер рядка r з кодом

  • на r-1 більшим за ‘A’*/

  • putchar (‘\n’);

  • }

  • return 0;

  • }



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

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

  • А

  • ВВВ

  • ССССС

  • DDDDDDD

  • EEEEEEEEE

  • FFFFFFFFFFF

  • GGGGGGGGGGGGG

  • HHHHHHHHHHHHHHH



Оператор продовження continue

  • Оператор продовження continue

  • Оператор continue передає управління на наступну ітерацію в операторах циклу do, for, while. Він може розміщуватися тільки в тілі цих операторів. В операторах do і while наступна ітерація починається з обчислення виразу умови. Для оператора for наступна ітерація починається з обчислення виразу зміни значення лічильника.

  •       Приклад : while (i-- > 0) {       x=f (i);       if (x == 1) continue;            else y=x*x; }



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

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

  • return - без повернення значення для функцій, що мають

  • тип void ;

  • return вираз - повертає значення вказаного виразу (після

  • перетворення до типу функції) в точку виклику

  • фунуції.

  • Виконання оператора return всередені main() завершує роботу програми.



Генерування послідовностей рівномірно розподілених

  • Генерування послідовностей рівномірно розподілених

  • випадкових чисел.

  • Потрібно підключити бібліотеку #include

  • Функція int rand (void) повертає псевдовипадкове число

  • з проміжку 0 ..INT_MAX ( 0,,32767)

  • Функція void srand ( unsigned seed) змінює стартове

  • значення функції rand , щоб у разі повторного запуску

  • програми генерувалась інша послідовність чисел.

  • Параметр функції – число, що слугуватиме затравкою для

  • наступного виклику rand .



У бібліотеці Borland C є додаткові функції:

  • У бібліотеці Borland C є додаткові функції:

  • int random ( int hval ) - повертає псевдовипадкове число з

  • діапазону 0 .. hval-1 ;

  • void randomize ( void ) - для затравки генератора поточним

  • значенням системного таймера.

  • Приклад – формування цілого випадкового числа з

  • проміжку RMIN .. RMAX

  • …………

  • int numb;

  • randomize ();

  • numb = RMIN + random (RMAX – RMIN +1) ;

  • …………



Масиви

  • Масиви

  • Масиви належать до складених типів даних. Масив являє собою кінцеву іменовану послідовність величин одного типу (елементів масиву). Опис масивів у програмі відрізняється від опису простої змінної наявністю після імені квадратних дужок «[ ]», в яких задається кількість елементів масиву (розмірність). Нумерація елементів масиву починається з 0.

  • Одновимірні масиви - це лінійна послідовність однотипних елементів (вектор). Кожен елемент має свій порядковий номер (індекс).

  • Масиви повинні бути оголошені явно, щоб компілятор міг виділити неперервну ділянку пам’яті обсягом

  • n * sizeof ( тип елементів)



<тип> <ім'я> [n]; <тип> <ім'я> [n] = {значення};

  • <тип> <ім'я> [n]; <тип> <ім'я> [n] = {значення};

  • <тип> <ім'я> [ ] = {значення};

  • Приклад: float m [6];

  • float m [6] = {3.4, 4.5, 5.6, 6.7, 8.9, 10.3};

    • float m [ ] = {3.45, 4.56, 5.67, 6.78};
  • Надалі кількість елементів змінити неможливо. Для того, щоб обнулити елементи оголошеного масиву, достатньо ініціювати його перший елемент:

  • int mas [0]= {0};



За замовчуванням, якщо в оголошеному масиві ініціюється тільки декілька перших елементів, то його інші елементи ініціюються нулями. Так, у випадку, коли float mas [10] =

  • За замовчуванням, якщо в оголошеному масиві ініціюється тільки декілька перших елементів, то його інші елементи ініціюються нулями. Так, у випадку, коли float mas [10] =

  • {2.2, 34.56}, останні вісім елементів масиву одержать значення 0.

  • Доступ до елементів реалізується через індекси або через вказівники (адреси).

  • У разі доступу через індекси застосовують конструкцію

  • ім’я масиву [індекс елементу]

  • Індекс може бути довільним виразом цілого типу: arr [ 2*k-5 ]





#include < stdio.h >

  • #include < stdio.h >

  • void main();

  • { int mas [10], i, k, s;

  • float sa;

  • k=0; s=0;

  • puts (“ Введіть елементи масиву\n”);

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

  • scanf (“%i”, &mas[i]);

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

  • if (mas[i]<0 ) { s+=mas[i]; k++};

  • sa= (float)s/k;

  • printf (“Середнє арифметичне від’ємних елементів

  • масиву %f \n”, sa);

  • printf (“Кількість: %i\n”, k);

  • }



#include < stdio.h >

  • #include < stdio.h >

  • void main()

  • {

  • int x[10], max, k, y[10], i, n;

  • puts (“Введіть елементи масиву х\n”);

  • for ( i=0; i<10; i++) scanf (“%i”, &x[i]);

  • max=x[0]; k=0;

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

  • if (x[i]>0 && x[i]>max) { max=x[i]; n=i; };

  • else if (x[i]<0) { y[k]=x[i]; k++; };

  • printf (“max=%i , його номер n=%i\n”, max, n);

  • printf (“Масив y з від’ємних елементів\n”);

  • for ( i=0; i

  • printf (“ %i ”,y[i]);

  • }





Багатовимірні масиви.

  • Багатовимірні масиви.

  • Масив, елементи якого є масиви меншої вимірності.

  • Матриці являють собою порядковий запис декількох одновимірних масивів. Місце розташування кожного елемента визначається за допомогою двох індексів — номера рядка і номера стовпця, тобто порядкового номера в рядку. Індекси двовимірних масивів записуються в квадратних дужках і нумерація індексів починається з нуля (0).

  • Двовимірні (і багатовимірні) масиви оголошуються так:

  • int mas [2] [5] ={ 1, 5, 3, 7, 4,

  • 10, 11, 13, 14, 25 };

  • int mas [ ][5] ={ 1, 5, 3, 7, 4,

  • 10, 11, 13, 14, 25 };

  • int mas [ ][5] ={ { 1, 5, 3, 7, 4 },

  • {10, 11, 13, 14, 25} }



#include< stdio.h >

  • #include< stdio.h >

  • void main()

  • {

  • int a[3][4], b[12], i, j, k;

  • for (i=0; i<3; i++)

  • for (j=0; j<4; j++)

  • scanf (“%i”, &a[i][j]);

  • k=0;

  • for (j=0; j<4; j++)

  • for (i=0; i<3; i++)

  • if (a[i][j]<0) { b[k]=a[i][j];

  • printf(“b[%i]=%i\n”, k, b[k]);

  • k++;

  • }

  • }





Приклад: Елементи головної та побічної діагоналей матриці С(4,4) поміняти місцями. Визначити максимальний елемент перетвореної матриці, а також номери рядка та стовпця, на перетині яких він знаходиться.

  • Приклад: Елементи головної та побічної діагоналей матриці С(4,4) поміняти місцями. Визначити максимальний елемент перетвореної матриці, а також номери рядка та стовпця, на перетині яких він знаходиться.

  • #include

  • void main()

  • {

  • const int n=4;

  • int i, j, imax, jmax;

  • float max, C[][n]={{3.6, 8.9, 1.9, 5.8}, {8.8, 4.1, 1.2, 6.3},

  • {2.5, 6.4, 0.1, 5.5}, {8.8, 4.1, 1.2, 6.3}};

  • puts ("massiv C[n][n]");

  • for (i=0; i

  • for (j=0; j

  • printf ("%0.1f ", C[i][j]);

  • printf ("\n");

  • }



  • float rab;

  • for (i=0; i

  • {

  • j=n-1-i;

  • rab=C[i][i];

  • C[i][i]=C[i][j];

  • C[i][j]=rab;

  • }

  • puts ("REZULT massiv");

  • for (i=0;i

  • for (j=0; j

  • printf ("%0.1f ",C[i][j]);

  • printf ("\n");

  • }



max=C[0][0];

  • max=C[0][0];

  • imax=jmax=0;

  • for (i=0; i

  • for (j=0; j

  • if (C[i][j]>max)

  • {

  • max=C[i][j];

  • imax=i;

  • jmax=j;

  • }

  • printf ("max=%5.1f index stroki=%i index

  • stolbca=%i", max, imax+1, jmax+1);

  • scanf ("%i", &i);

  • }



Схожі:

Етапи розв\Етапи розв'язання задач на комп'ютері
Суть поставленої задачі, необхідні початкові дані та інформацію, що вважається результатами розв'язання
Етапи розв\“Розв'язання задач на підбір параметра” План вивчення теми інструмент Підбір параметра
...
Етапи розв\Практична спрямованість навчання математики. Розв’язання текстових задач в 5 – 6 класах. Класифікація простих задач
Практична спрямованість навчання математики. Розв’язання текстових задач в 5 6 класах
Етапи розв\Профільна інформатика Лінія “Алгоритмізація та програмування” Тема Моделі та моделювання
Розв’язання задач із використанням комп’ютера характеризується декількома етапами, частина з яких виконуються безпосередньо людиною,...
Етапи розв\Основна мета: Ознайомити з поняттям рівняння з параметрами, областю допустимих значень параметра
Місце задач з параметрами в курсі елементарної математики. Класифікація задач з параметрами та методи їх розв’язання
Етапи розв\Розв'язання задач — зовсім не привілей математики. Усе людське пізнання — це не що інше, як постійна постановка і розв'язування все нових питань, проблем. Е.Ільєнков
Розв'язання задач зовсім не привілей математики. Усе людське пізнання це не що інше, як постійна постановка і розв'язування все нових...
Етапи розв\План предмет математичної статистики
Завдяки математичній статистиці розроблено ряд спеціальних методів та прийомів для розв'язання задач. До основних задач математичної...
Етапи розв\Розв'язання Розв'язання
Подамо процес розв’язання за допомогою таблиці, вказуючи індексом праворуч знизу номер логічного кроку. Початковими знаками "-" позначимо...
Етапи розв\Спецкурс «Microsoft Excel у профільному навчанні» Розділ 8 “Розв'язання оптимізаційних задач” План вивчення теми
Перш ніж приступати до розв'язування оптимізаційної задачі, потрібно описати її в математичному вигляді, тобто побудувати її математичну...
Етапи розв\Усне віднімання трицифрових чисел виду 600-270. Розв'язання задач на знаходження невідомого доданка


Додайте кнопку на своєму сайті:
dok.znaimo.com.ua


База даних захищена авторським правом ©dok.znaimo.com.ua 2013
звернутися до адміністрації
dok.znaimo.com.ua
Головна сторінка