Розробка простих програм обчислювального характеру

Тренуємося створювати прості програми, в яких потрібно обчислити значення за готовою формулою

Спочатку, перевіримо, як вам вдалось впоратися з домашнім завданням. Дайте відповіді на питання, наведені у тесті, але будьте дуже уважними: вам буде зараховано тільки ПЕРШУ спробу.

Доповнимо нашу програму з обчислення об'єму прямокутного паралелепіпеда

Завдання 3

Створити програму для виведення об'єму і площі поверхні прямокутного паралелепіпеда за трьома його вимірами

Формулу об'єму прямокутного паралелепіпеда V=a∙b∙c ми вже повторили, залишилось пригадати, що площа його поверхні (це сума площ усіх його прямокутників-граней) обчислюється за формулою S=(ab+ac+bc)∙2 і можна складати програм. Не забудьте про необхідність внести до переліку змінних ще одну - для позначення площі.

Спробуйте написати програму самостійно, а потім перевірите, відкривши цей спойлер

program obem_ploshcha;
var a,b,c,v,s:real;        //не забудьте описати УСІ змінні!
begin
    writeln('Введіть довжину');
    read(a);
    writeln('Введіть ширину');
    read(b);
    writeln('Введіть висоту');
    read(c);
    v:=a*b*c;
    s:=(a*b+a*c+b*c)*2;    //оператори множення ОБОВ'ЯЗКОВІ!
    writeln(v);
    writeln(s)
end.

І все б тут було добре, якби не відповідь:

На відміну від домашньої задачі ми обчислювали не один показник, а два. Значить, виводити довелось теж не один, а два результати. Питання: А ХТО З НИХ ХТО? 24 - це площа чи об'єм? Що таке 52 - об'єм чи площа? Для відповіді на ці питання доведеться дивитися в код програми, що ж виводилося першим! Але ж рядовий користувач, для якого ми напишемо програму, цього робити не буде! Більше того, він цього зробити навіть і НЕ ЗМОЖЕ, оскільки йому дадуть не код програми, а саму програму! Натомість, створити інтерфейс, дружній до користувача, з яким йому було б зручно й комфортно працювати - це якраз пряма задача програміста! Як же підписати виведені результати обчислень?

Для того, щоб вивести відповідь у форматі V=24, S=52, видозмінимо 12 і 13-й рядки програми:

12    writeln('V=',v);
13    writeln('S=',s);

Ми вже знаємо, що написане у одинарних лапках виводиться без змін, так, як воно і написане, а запис writeln(v) без лапок - це команда на виведення не самої літери v, а значення, якого набула змінна v.

Отже, комбінація цих двох способів призведе до того, що спочатку буде написано V=, а потім встик буде виведене значення змінної v. Аналогічно й зі змінною s.

От так уже значно краще!

В лапках можемо написати не математичний, а словесний вираз і тоді буде так:

Зверніть увагу на наявність пробіла після слова "дорівнює". Це зроблено для того, щоб число не "приліпилося" до тексту, а було виведене окремо.

Залишилось розшифрувати, що означає writeln('Об',#39,'єм дорівнює ',v);?

З виведенням фрази "Об'єм дорівнює" виникла проблема. Суть її у тому, що використовуваний у слові "об'єм" апостроф виглядає так само, як і одинарна лапка, а тому якщо ми напишемо 'Об'єм дорівнює', то Pascal "думає", що ми після буквосполучення "Об" закрили лапки й тим самим завершили введення тексту. Через це усе, що написано після апострофа - "єм дорівнює" ним зовсім не сприймається. Він не "розуміє", що це - текст чи якісь змінні. Виникає помилка:

Для усунення цієї помилки замість апострофа напишемо його ASCII-код. Цей код - 39. Позначення #39 одначає, що 39 - це не якесь число, а код символа, який потрібно вписати в потрібне місце. От і все. Таким чином записом writeln('Об',#39,'єм дорівнює ',v); ми даємо команду написати буквосполучення "Об", потім вставити апостроф і дописати фразу "єм дорівнює", зробити пробіл і після нього вивести значення змінної v.

Спробуємо тепер застосувати набуті уміння до розв'язування наступної задачі.

Завдання 4

Створити програму для обчислення довжини кола і площі круга за відомим радіусом

Ще одна проста задача з математики, на цей раз за 6 клас. Для її розв'язання достатньо знати дві формули: довжини кола C=2пR і площі круга S=пR². Для позначення константи "пі" в Pascal є своє позначення, яке виглядає як pi. Завдяки цьому ніякого 3.14 ніде писати не треба. Оператора піднесення до квадрата в Pascal немає, тому доведеться R множити саме на себе двічі. Таким чином, вираз для обчислення, наприклад, площі круга в Pascal матиме такий вигляд: s:=pi*R*R.

Відповідь традиційно під спойлером, а ви традиційно відкриваєте його тільки після того, як створите свою програму

program kolokrug;
var r,c,s:real; //Pascal не розрізняє велику й малу літеру, усе пишемо маленькими
begin
    writeln('Введіть радіус');
    read(r);
    c:=2*pi*r;  //довжина кола
    s:=pi*r*r;  //площа круга
    writeln('Довжина кола: ',c);
    writeln('Площа круга: ',s);
end.

ПІДСУМКИ

Отже, з цього уроку ви дізналися, що:

  • під час виведення повідомлень можна поєднувати текст і числові величини, записуючи їх у дужках після write чи writeln через кому;
  • для виведення апострофа в повідомлення потрібно вписувати його код у форматі #39;
  • оператора піднесення до квадрата в Pascal немає, а для піднесення будь-якої величини до квадрата її потрібно просто помножити саму на себе;
  • для константи "пі" в Pascal є своє позначення pi і в разі його використання, вводити 3.14 не потрібно, адже Pascal і так "знає", що pi - це 3.14

ДОМАШНЄ ЗАВДАННЯ:

Створіть програму для обчислення площі кільця, заданого своїми внутрішнім і зовнішнім радіусами. Відповідь подайте у вигляді "Площа кільця дорівнює (відповідь)". Файл .pas надішліть на перевірку. Формула площі кільця - на малюнку.

Підказка

Ви ж пам'ятаєте, що Pascal не розрізняє велику й малу літери? Отже, розумієте, що позначити в програмі радіуси як r і R - погана ідея. В таких ситуаціях краще створювати змінні з іменами, такими як r1 і r2. Позначте тільки в коментарі який r що означає, наприклад, так:

//r1 - радіус зовнішнього кола, r2 - радіус внутрішнього кола