АЛГОРТМИ «ЕТАПИ РОЗВЯЗАННЯ ЗАДАЧ МОВОЮ ПРОГРАМУВАННЯ»

Про матеріал
ЕТАПИ РОЗВ’ЯЗАННЯ ЗАДАЧ З ВИКОРИСТАННЯМ ЕОМ Процес розв’язку більшості задач з використанням ЕОМ можна розбити на декілька характерних етапів: постановка задачі, описання алгоритму, запис і трансляція програми, налагодження програми, експлуатація програми. І етап. Постановка задачі Для того, щоб розв’язати задачу, пов’язану з дослідженням реального об’єкта, необхідно спочатку описати цей об’єкт у математичних термінах, тобто побудувати його математичну модель. Математична модель дозволяє звести розв’язування реальної задачі до розв’язування задачі математичної. У найпростішому випадку для задач на обчислення математична модель являє собою математичну формулу. ІІ етап. Описання алгоритму Після того, як математична модель задачі побудована, необхідно знайти та описати спосіб розв’язку цієї зад чі математичної. У найпростішому випадку для задач на обчислення математична модель являє собою математичну формулу. ІІ етап. Описання алгоритму Після того, як математична модель задачі побудована, необхідно знайти та описати спосіб розв’язку цієї задачі. У найпростішому випадку розв’язок задачі можна одержати у явному вигляді, тобто у вигляді формули, яка пов’язує вхідні дані та результати. Але і тоді, крім знаходження відповідної формули, необхідно вирішити ряд інших технологічних питань, враховуючи те, що задача буде розв’язуватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі. Побудова алгоритму ачі. У найпростішому випадку розв’язок задачі можна одержати у явному вигляді, тобто у вигляді формули, яка пов’язує вхідні дані та результати. Але і тоді, крім знаходження відповідної формули, необхідно вирішити ряд інших технологічних питань, враховуючи те, що задача буде розв’язуватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі. Побудова алгоритму носить творчий характер – кожна нова задача вимагає нових підходів і нових способів розв’язку, але для того, щоб побудувати алгоритм, який можна легко зрозуміти, модифікувати й удосконалити, необхідно дотримуватися певної дисципліни та технології його конструювання. Зрозуміло, що той, хто описує алгоритм, насамперед сам повинен вміти і знати як розв’язується задача. ІІІ етап. Запис і трансляція програми Якщо алгоритм складено, з погляду на розв’язок задачі на ЕОМ користувачу залишається більш технічна, аніж уватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі. Побудова алгоритму носить творчий характер – кожна нова задача вимагає нових підходів і нових способів розв’язку, але для того, щоб побудувати алгоритм, який можна легко зрозуміти, модифікувати й удосконалити, необхідно дотримуватися певної дисципліни та технології його конструювання. Зрозуміло, що той, хто описує алгоритм, насамперед сам повинен вміти і знати як розв’язується задача. ІІІ етап. Запис і трансляція програми Якщо алгоритм складено, з погляду на розв’язок задачі на ЕОМ користувачу залишається більш технічна, аніж творча робота. Враховуючи характер задачі необхідно вибрати певну мову програмування для запису програми та записати її текст. Зрозуміло, що користувач повинен володіти потрібним обсягом знань з використання команд (операторів) обраної мови. Кожна мова програмування має свій транслятор, що дозволяє автоматично перекласти текст програми на машинну мову. При цьому одержується текст програми на машинній мові, який еквівалентний тексту програми на мові програмування, тому що ці тексти реалізують один і той же алгоритм. ІV етап. Налагодження програми На цьому етапі виявляються можливі помилки, які допущені на попередніх етапах. Синтаксичні помилки у тексті програми автоматично виявляються ще на етапі трансляції і користувач вносить відповідні зміни до тексту. Може статися так, що текст програми записано вірно, а помилка допущена при складанні алгоритму - програма працює, але видає неправильні результати. Якщо ж помилку допущено на етапі постановки задачі, то програма працює правильно, але розв’язує іншу задачу. Отже, метою налагодження є одержання правильної програми, результатам роботи якої можна було б довіряти. Суть налагодження полягає у тому, що користувач розробляє систему тестів, за допомогою якої перевіряється робота програми у різних можливих режимах. Кожен тест має набір вхідних даних, для яких відомий результат. Тест намагаються вибрати так, щоб не тільки встановити сам факт помилки, але й локалізувати її, тобто виявити та звузити частину програми, що містить помилку. До складу систем програмування включають спеціальні можливості налагодження програм. Користувач формулює завдання, а система виконує це завдання і видає користувачу необхідну інформацію про те, як веде себе програма. Така інформація значно полегшує пошук та виправлення помилок. V етап. Експлуатація програми Якщо розроблена програма розрахована на тривалу експлуатацію, розрахована на розв’язання серйозних задач, то необхідно її супроводжувати. Адже протягом використання програми можуть змінитися, наприклад, вимоги до розв’язуваної задачі, операційна система, на базі якої виконується дана програма тощо. Це може вимагати внесення змін до програми, а внесені зміни – нового налагодження програми. Такі роботи виконує розробник програми або група супроводу.
Перегляд файлу

 

 

 

 

 

 

 

 

 

АЛГОРТМИ

«Етапи розвязання задач мовою програмування»
ЕТАПИ РОЗВ’ЯЗАННЯ ЗАДАЧ З ВИКОРИСТАННЯМ ЕОМ

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

І етап. Постановка задачі

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

ІІ етап. Описання алгоритму

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

ІІ етап. Описання алгоритму

Після того, як математична модель задачі побудована, необхідно знайти та описати спосіб розв’язку цієї задачі. У найпростішому випадку розв’язок задачі можна одержати у явному вигляді, тобто у вигляді формули, яка пов’язує вхідні дані та результати. Але і тоді, крім знаходження відповідної формули, необхідно вирішити ряд інших технологічних питань, враховуючи те, що задача буде розв’язуватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі.

Побудова алгоритму ачі. У найпростішому випадку розв’язок задачі можна одержати у явному вигляді, тобто у вигляді формули, яка пов’язує вхідні дані та результати. Але і тоді, крім знаходження відповідної формули, необхідно вирішити ряд інших технологічних питань, враховуючи те, що задача буде розв’язуватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі.

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

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

ІІІ етап. Запис і трансляція програми

Якщо алгоритм складено, з погляду на розв’язок задачі на ЕОМ користувачу залишається більш технічна, аніж уватися на ЕОМ. Наприклад, якого типу мають бути вхідні дані, у якому порядку їх вводити до ЕОМ, як і з якою точністю одержати проміжні величини, у якій формі і з якою точністю вивести результати тощо. Тому описання алгоритму – наступний етап розв’язку задачі.

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

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

ІІІ етап. Запис і трансляція програми

Якщо алгоритм складено, з погляду на розв’язок задачі на ЕОМ користувачу залишається більш технічна, аніж творча робота. Враховуючи характер задачі необхідно вибрати певну мову програмування для запису програми та записати її текст. Зрозуміло, що користувач повинен володіти потрібним обсягом знань з використання команд (операторів) обраної мови.

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

ІV етап. Налагодження програми

На цьому етапі виявляються можливі помилки, які допущені на попередніх етапах. Синтаксичні помилки у тексті програми автоматично виявляються ще на етапі трансляції і користувач вносить відповідні зміни до тексту. Може статися так, що текст програми записано вірно, а помилка допущена при складанні алгоритму - програма працює, але видає неправильні результати. Якщо ж помилку допущено  на етапі постановки задачі, то програма працює правильно, але розв’язує іншу задачу.

Отже, метою налагодження є одержання правильної програми, результатам роботи якої можна було б довіряти.

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

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

V етап. Експлуатація програми

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

 

 

 

 

Алгоритм програми

 

Блок схема алгоритма программы

Блок схема - графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).

Каждое действие в блок схеме графически изображается в виде геометрической фигуры:

начало | конец программы

Эта фигура означает либо начало программы, либо ее конец. В функции ею обозначаются вызов или возврат из функции.

арифметические операции

Этой фигурой выполняются различные арифметические операции.

операторы ветвления

В этой фигуре выполняются различные операторы ветвления и, соответственно, проверяемые условия.

вызов подпрограммы

Здесь описывают вызов подпрограммы и параметры, которые передаются в нее.

операции ввода | вывода

Данные нужно куда-то выводить или вводить. Вот для этих целей используют эту фигуру.

операция цикла

Эта фигура нужна, если у нас есть цикл. Тут прописывается начальное значение цикла, его шаг и ,конечно же, условие окончания цикла.

Пример:

int main(int argc, char* argv[])
{
    int count = 0;

    for (int i=0; i<5; i++){
       if (i%2 == 0) cout << i;
       else cout << i+1; 
    }

    getch();
return 0;
}

Блок схема:

блок схема алгоритма программы ( построение и составление )

Заметьте, что по этой блок схеме можно написать программу на любом языке, так как синтаксис тут стандартный и удовлетворяет практически любому языку программирования.

Блок схемы нужны, что бы облегчить процесс программирования, поэтому всегда старайтесь при решении любой задачи сначала составлять алгоритм программы, а потом уже бросать кодить на выбранном языке.


uses PT4ExamWeb;

 

var

  N,i,num,year: integer;

  c: char;

  abitur: array [1990..2010] of integer;

  max: integer;

 

begin

  Task('ExamC1');

  readln(N);

  for i:=1 to N do

  begin

    repeat

      read(c)

    until c = ' ';

    repeat

      read(c)

    until c = ' ';

    read(num);

    readln(year);    

    abitur[year] := abitur[year] + 1;

  end;

  max := 0;

  for i:=1990 to 2010 do

    if abitur[i]>max then

      max := abitur[i];

  writeln(max);

  for i:=1990 to 2010 do

    if abitur[i]=max then

      writeln(i);

end.


Известны год и номер месяца рождения человека. Определить возраст человека на март(3 месяц) 2008 года

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int year = 1967, month = 8;

    if (month < 3 )
        cout << "Его возраст: " << (2008 - year - 1) << '\n';
    else
        cout << "Его возраст: " << (2008 - year) << '\n';
    getch();
return 0;
}

 

Определить максимальное и минимальное значения из двух различных вещественных чисел

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    float a = 2.14, b = 3.54;

    if (a > b)
       cout << a << "-Max "
            << b << "-Min\n" ;
    else
       cout << b << "-Max "
            << a << "-Min\n" ;
    getch();
return 0;
}

Определить, есть ли среди цифр заданного целого трёхзначного числа одинаковые

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int a=144, edinici, decjatki, sotni;
    sotni = a / 100;
    decjatki = (a % 100)/10;
    edinici = a % 10;

    if (sotni == decjatki)
       cout << "Есть одинаковые цифры!";
    if (sotni == edinici)
       cout << "Есть одинаковые цифры!";
    if (decjatki == edinici)
       cout << "Есть одинаковые цифры!";

    getch();
return 0;
}

Выбрать наибольшее из трёх заданных чисел

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int a = 15, b = 12, c = 35;

    if (a > b && a > c)
       cout << "a самое большее число";
    if (b > c && b > a)
       cout << "b самое большее число";
    if (c > a && c > b)
       cout << "c самое большее число";

    getch();
return 0;
}

Написать программу, вычисляющую стоимость 10 минутного междугороднего разговора в зависимости от кода города. ( Москва(905) - 4.15руб. Ростов(194) - 1.98руб. Краснодар(491) - 2.69руб. Киров(800) - 5.00руб. )

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
int kod;

    cin >> kod;
    switch(kod){
        case 905:
            cout << "стоимость = " << 4.15*10 << "руб.";
            break;
        case 194:
            cout << "стоимость = " << 1.98*10 << "руб.";
            break;
        case 491:
            cout << "стоимость = " << 2.69*10 << "руб.";
            break;
        case 800:
            cout << "стоимость = " << 5.00*10 << "руб.";
            break;
        default:
            cout << "Неверный код города!";
        }

    getch();
return 0;
}

Составить программу, которая в зависимости от порядкового номера дня недели (1..2) выводит на экран его название (понедельник, вторник..., воскресенье)

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int day;
    cin >> day;

    switch(day){
       case 1:
          cout << "Понедельник";
          break;
       case 2:
          cout << "Вторник";
          break;
       case 3:
          cout << "Среда";
          break;
       case 4:
          cout << "Четверг";
          break;
       case 5:
          cout << "Пятница";
          break;
       case 6:
          cout << "Суббота";
          break;
       case 7:
          cout << "Воскресенье";
          break;
    }
    getch();
return 0;
}

Найти сумму всех чисел от 1 до 100

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int sum = 0,i;

    for (i=1;i!=101;i++){
       sum+=i;
    }
    cout << sum;
    getch();
return 0;
}

Подсчитать количество натуральных чисел n ( 102 < n > 987 ), в которых все три цифры различны

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int edinici, decjatki, sotni, tri_razlichni=0;

    for (int n=102; n < 967; n++) {
       sotni = n / 100;
       decjatki = (n % 100)/10;
       edinici = n % 10;
       if (sotni != decjatki != edinici)
          tri_razlichni++;
    }

    cout << "Всего различных: " << tri_razlichni << "чисел";
    getch();
return 0;
}

Вводить различные числа. Когда будет введен 0, то программа выходит из цикла

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int chislo;

    do {
       cin >> chislo;
    }
    while (chislo != 0);
    
    getch();
return 0;
}

20 инопланетян поочередно прилетают на землю с целью исследования поведения людей. Каждый инопланетянин находится на земле, пока не пройдет 5 лет. Напишите алгоритм их маневра в виде программы, что бы ученые смогли найти средство борьбы

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int nlo = 20;

    for (int i=0;i < nlo; i++){
       int prebivanie = 0;
       while (prebivanie++ < 5){
          cout << "Инопланетянен-номер: " << nlo
               << "находится на земле: " << prebivanie 
               << " лет" << '\n';
       }
    } 
    getch();
return 0;
}

Создайте одномерный массив, состоящий из 5 элементов. Далее, заполните его элементы значениями, введенными с клавиатуры и выведете заполненный массив на экран

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int arr[5];

    for (int i=0; i < 5;i++)
       cin >> arr[i];
    for (int i=0; i < 5;i++)
       cout << arr[i] << ' '; 
    getch();
return 0;
}

У нас есть строка str = "Rabota ne volk v les ne ybeshit". Нужно составить двумерный массив символов размером 4*4

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    char *str = "Rabota ne volk v les ne ybeshit", arr[4][4];
    int count = 0;
    for (int i=0;i < 4;i++){
       for (int j=0;j < 4;j++){
          arr[i][j] = str[count++];
       }
    }

    for (int i=0;i < 4;i++){
       for (int j=0;j < 4;j++){
          cout << arr[i][j] << ' ';
       }
       cout << '\n';
    }

    getch();
return 0;
}

Вся сила языка Си состоит в указателях а мы о них пока не вспоминали. Теперь давайте заполним с клавиатуры и выведем на экран одномерный массив на 6 чисел

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
    int arr[6];

    for (int i=0;i < 6;i++){
       cin >> *(arr+i);
    }
    for (int i=0;i < 6;i++){
       cout << *(arr+i) << ' ';
    } 
    getch();
return 0;
}

Создайте функцию, которая меняет местами значения двух элементов

#include <iostream.h>
#include <conio.h>

void swap (int& a, int& b){
    int c;

    c = a;
    a = b;
    b = c;
}
int main(int argc, char* argv[])
{
    int x = 10, y = 15;

    swap(x,y);
    cout << x << ' ' << y;
    getch();
return 0;
}

Создайте функцию, которая принимает в качестве аргумента массив значений и возвращает наибольший элемент в массиве

#include <iostream.h>
#include <conio.h>

int max (int arr[7]){
    int temp_max=0;
    for (int i=0;i < 7;i++){
       if (arr[i] > temp_max)
          temp_max = arr[i];
    }
return temp_max;
}

int main(int argc, char* argv[])
{
    int arr[7] = {4, 45, 12 ,-9, 120, 8, 1};
    cout << max(arr);

    getch();
return 0;
}

 

doc
Додано
28 березня 2019
Переглядів
1749
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку