1

Тема: Оператор циклу (for, do while)

Завдання:
Побудувати таблицю значень для функції f(x)=sin(1/x) на відрізку [pi/8,2/pi] з числом розбиття відрізка m=10.
За допомогою двох циклів for і do while.

Прихований текст
#include <iostream>
#include <cmath>
#include <stdlib.h>

using namespace std;

double F(double x)
{
    return sin(1. / x);
}

int main()
{
    const int N = 10;

    const double M_PI = 3.14;
    double a = M_PI / 8;
    double b = 2 / M_PI;

    double h = (b - a) / N;

    int Press = 0;

    cout << "Menu:" << endl;
    cout << "Press 1 - for" << endl;
    cout << "Press 2 - do.... while" << endl;
    cout << "Press 3 - Exit" << endl;

    cin >> Press;

    cout << "  x" << "    " << "      F(x)" << endl;

    switch (Press)
    {
    case 1:
    {
        for (int i = 0; i <= N; i++)
        {
            cout << a + i * h << "  " << F(a + i * h) << endl;
        }
    }
    break;
    case 2:
    {
        do
        {
            cout << a << "  " << F(a) << endl;
            a += h;
        } while (a < b + h);
    }
    break;
    case 4:
    {
        exit(1);
    }
    break;
    }

    system("pause");

    return 0;
}

Чи правильно складено код і блок-схема?
http://replace.org.ua/misc.php?action=pun_attachment&amp;item=1918&amp;download=0

Post's attachments

123.jpg 131.89 kb, 69 downloads since 2018-10-16 

2

Re: Оператор циклу (for, do while)

Блок-схема виконана іноземною, до того ж не англійською, мовою. Навіщо?
Блок-схема вочевидь не відповідає коду. У коді жодного goto, самі цикли, а в блок-схемі самі переходи, жодного циклу. Крім того, в коді є switch, а в блок-схемі немає відповідної "гребінки".
Блок-схема щось дивне в циклі робить - точніше, нічого.
А ще ви чомусь проголошуєте власне M_PI із низькою точністю замість використання стандартного.

Подякували: FakiNyan, leofun012

3

Re: Оператор циклу (for, do while)

koala написав:

Блок-схема виконана іноземною, до того ж не англійською, мовою. Навіщо?
Блок-схема вочевидь не відповідає коду. У коді жодного goto, самі цикли, а в блок-схемі самі переходи, жодного циклу. Крім того, в коді є switch, а в блок-схемі немає відповідної "гребінки".
Блок-схема щось дивне в циклі робить - точніше, нічого.
А ще ви чомусь проголошуєте власне M_PI із низькою точністю замість використання стандартного.

така схема ніяк не пройде для здачі?

4

Re: Оператор циклу (for, do while)

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

Подякували: Kosssya, 0x9111A, leofun01, LoganRoss, ostap34PHP, P.Y.6

5

Re: Оператор циклу (for, do while)

Ну чому ж, переписати неструктурований код (поданий у вигляді блок-схеми чи програми, побудованої на умовних та безумовних переходах) у структурований — цілком реальна задача для тренування початківців. Зокрема, блок-схема може дати розуміння, що саме і в якій послідовності роблять оператори циклу та інші структуровані елементи (не дуже уявляю, як пояснити принцип їхньої роботи, повністю відмовившись від абстракцій переходу та галуження). Зрозуміло, після того, як студент навчився писати структурований код з нуля, блок-схеми алгоритмів стають для нього непотрібним баластом. Проте, навіть структурований код інколи треба розгорнути більш оптимальним способом — фактично, розкладаючи його на уявну блок-схему і складаючи в правильно структурований алгорим. Ну і мови, де засоби для написання структурованого коду неповні чи відсутні, остаточно нікуди не зникли — відкривши файл з розширенням .asm чи .bat, ніяких структурованих вкладених while'ів ви не побачите.

Подякували: koala1

6

Re: Оператор циклу (for, do while)

Але тут мова якраз про побудову блок-схеми по структурованому коду.

7

Re: Оператор циклу (for, do while)

Ну добре, робити блок-схеми до вже написаних та відлагоджених лаб та курсачів і виписувати їх на аркушах з ГОСТівською рамочкою — це мести плац ломами, згоден на 100%. Але якщо студент не може відрізнити на блок-схемі власний switch від чужого while (продубльованого в вигляді недопаскалівського коду на тому ж скріншоті), то аж самому кортить дати йому в руки лом і відправити на плац.

Подякували: koala1