Перші програми на мові програмування Pascal, створення, компіляція та збереження файлу програми
Настав час створити свою першу програму на мові Pascal. Оскільки найпростішими є математичні програми обчислювального характеру, в яких потрібно порахувати щось за відомою формулою, то розпочнемо саме з такого типу завдань.
Практично усі програми складаються з трьох етапів:
Розглянемо ці етапи на прикладі наступної задачі:
З клавіатури вводиться два числа. Вивести їх суму.
Для написання програми слід попередньо виконати (хоча б у себе в голові), принаймні, дві дії:
Алгоритм цієї програми досить простий:
Кількість потрібних змінних визначаємо, виходячи з таких міркувань: оскільки нам потрібно додавати два числа, значить, уже, як мінімум, дві змінні нам потрібні - під перше й під друге число. Результат додавання ми теж знати захочемо, а, отже, потрібна третя змінна - під відповідь. Отже, всього три змінні. Назвемо їх a
, b
і s
(тому що "сума"). Доданки можуть бути як цілими, так і дробовими числами, а значить має сенс узяти тип даних real
(десяткові дроби). Все. Переходимо до написання програми.
program suma;
var a,b,s:real; //зазначено три змінні, усі вонм типу real
begin
//Отримання даних
write('Введіть перший доданок'); //повідомлення про необхідність ввести дані
read(a); //зчитування першого доданка
write('Введіть другий доданок'); //повідомлення про наступне введення даних
read(b); //зчитування другого доданка
//Обробка даних
s:=a+b; //обчислення суми, результат записується як s
//Виведення відповіді
write(s) //виведення відповіді
end.
Тепер розбираємося, що ж усе те означає...
Перш за все, зверніть увагу на те, що написано після //. Це в програмуванні називається "коментар". Коментарі писати необов'язково, оскільки вони програмою не читаються і призначені лише для людей, які читатимуть текст (т.зв. "лістинг" - від англ."listing") нашої програми. Якщо коментар невеликий і поміщається в один рядок, то перед ним ставлять дві похилі риски ("слЕші") і все. Якщо ж коментар досить розлогий і займає декілька рядків, то його тоді беруть у фігурні дужки {...}. Якщо поставити подвійний слеш перед яким-небудь з рядків програми, тоді програма цей рядок просто пропустить, відбудеться те, що програмісти називають словом "закоментувати". Таким чином можна перевірити як працює програма без якогось її фрагмента. Так програмісти, зокрема, "відловлюють" помилки у коді.
Другий момент, на який слід звернути увагу, - це рядок з командою s:=a+b;
. Символ :=
(на клавіатурі набираємо два символи - двокрапку й "дорівнює" без пробілу між ними) називають оператором присвоєння. Це означає, що програмі потрібно обчислити результат додавання a+b
і отримане число "покласти" в те місце пам'яті, яке було зарезервовано для змінної s
. Кажуть, "змінній s присвоєно значення a+b
". Так, наприклад, якщо a=3
, і b=4
, то змінній s
буде надано значення 3+4=7
.
Окрім оператора присвоєння в Pascal використовуються також і інші оператори, наприклад, арифметичні +
- додавання, -
- віднімання, *
- множення, /
- ділення й деякі інші, про які піде мова пізніше.
І, нарешті, третє: запис write(s)
. Як бачимо, тут записане у дужках не містить одинарних лапок. Чому? Забули про лапки? Ні. Уся справа в тому, ЩО САМЕ ми примушуємо програму вивести. Те, що написано У ЛАПКАХ буде виведено без змін. Це одначає, що у відповідь на команду write('s')
буде виведена сама ця буква s
. Якщо написано write(s)
то буде виведено не букву s
, а те число, яке позначене буквою s
. Ще раз: якщо a=3
, і b=4
, то команда write('s')
напише нам букву s
, а команда write(s)
без лапок виведе нам число 7, бо s=3+4=7
.
Запустіть програму PascalABC.NET і наберіть у ній текст програми (можна без коментарів). Після того, як набір завершено, натисніть на кнопці з зеленим трикутником для запуску програми на виконання:
Якщо у програмі при наборі допущено помилки, то ви одразу отримаєте повідомлення про це:
Ось такий вигляд матиме повідомлення про пропущену крапку з комою. У табличці вам написано, що помилка виникла в рядку 8, а саме: очікувалася поява крапки з комою (після read(b))
, а замість цього написано s
.
А ось іще одна типова помилка - в тексті програми використовується змінна, яка не була заявлена:
...через це програма не може виконуватись, оскільки невідомо, що таке змінна s
і якого вона типу (а, значить, і невідомо, скільки пам'яті під неї потрібно виділити!). Невідомий тип змінної не дозволяє ще й перевірити, чи можна виконати зазначену дію, адже, якщо змінні a
і b
типу real
(6 байт), а змінна s
типу integer
(2 байти), то записати результат може бути просто нікуди - сума дробових чисел (real
) теж буде дробовим числом (real
), а шість байт у двох байтах не помістяться!
І от, нарешті, після того, як усі помилки виправлено, програма запрацювала:
Вводимо з клавіатури одне число, натискаємо Enter, вводимо друге, ще раз натискаємо Enter і отримуємо результат:
Результат обчислення отримано правильний, от тільки його відображення не зовсім гарне. Як бачимо, числа 10 і 20 "приліпилися" до слова "доданок". Чи можна це виправити? Можна. Потрібно тільки "погратися" з readln
і writeln
.
Якщо замість write
написати writeln
, введені з клавіатури числа будуть відображуватися на рядок нижче від запрошення ввести відповідне число:
Це все тому, що команда writeln
не тільки виводить повідомлення "Введіть перший доданок", а ще й переводить курсор на наступний рядок, а, значить, коли ми починаємо набирати щось на клавіатурі, то воно виводиться з наступного рядка (курсор-то уже там!).
Водночас, той самий "трюк" з командою read
не дає нічого і числа як були встик до тексту, так і залишаються:
Це тому, що команда readln
спочатку прочитує введене, а потім переводить курсор.
Отже, якщо хочемо, щоб запрошення до введення даних і самі дані виводилися в різних рядках, замість write
потрібно використовувати writeln
.
Залишилось розібратися, як зберегти результат роботи. Файл програми зберігається стандартним чином, через меню Файл → Зберегти (або Зберегти як).
Файлу програми потрібно буде дати назву і натиснути кнопку Зберегти. Файл програми буде збережено з розширенням .pas
З клавіатури вводяться сторони прямокутника. Обчислити його площу.
Спробуйте це завдання розв'язати самостійно, а потім "підглянете" результат. Розв'язання цієї задачі дуже схоже на попереднє.
program ploshcha;
var a,b,s:real;
begin
writeln('Введіть довжину');
read(a);
writeln('Введіть ширину');
read(b);
s:=a*b;
write(s)
end.
Створіть програму для обчислення об'єму прямокутного паралелепіпеда.
Підказка
Якщо ви розв'язали завдання з площею прямокутника, то завдання з об'ємом прямокутного паралелепіпеда зовсім не становить труднощів, оскільки формула об'єму, відома вам з п'ятого класу, схожа на формулу площі прямокутника - у прямокутника S=a∙b, а у паралелепіпеда V=a∙b∙c. Отже, в попередню програму потрібно лише додати ще одну змінну, аналогічно до змінних a
і b
організувати її прочитування, додати у формулу, за якою здійснюється обчислення, ще один множник і, мабуть змінити змінну s
на v
(оскільки обчислюємо не площу, а об'єм).