КОНКУРСИ

Арифметичні операції, стандартні функції.
10.09.2013

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

Вказівка присвоювання

Вказівка присвоювання має вигляд: ім’я змінної := вираз;

Наприклад:
A := b + c; { в змінну A вкладається результат суми змінних b та c}
PROIZV := 6 * D;{в змінну PROIZV вкладається результат добутку числа 6 та змінної D}
SLOVO :=”книжка”;{ в змінну SLOVO вкладається вираз “книжка”}

Змінна і вираз повинні бути одного типу. Виняток становить випадок дійсної змінної, коли вираз може бути і цілого типу.

Наприклад:

Var
A:real;
B,C:integer;

begin

A:=B+C;

End.

Виконується вказівка присвоювання таким чином: спочатку обчислюється значення виразу в правій частині вказівки присвоювання, а вже потім результат обчислювання передається змінній, що вказана в лівій частині даної вказівки.

Вказівка введення даних

Загальний вигляд вказівок введення даних з клавіатури:
Read(список);
Readln(список);
Наприклад:
Read(X,Y);
Readln(X,Y,K,Z);

В списку через кому перелічуються змінні, значення яких вводиться з клавіатури.

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

Між вказівками Read і Readln є деяка різниця:

Read(змінна) – дана команда зчитує дані введені з клавіатури і заносить їх у змінну вказану у дужках;

Readln(змінна);– також виконує зчитування даних введених з клавіатури, заносить х в змінну вказану в дужках та переводить курсор на наступний рядок.

Readln; – просто призупиняє виконання програми до натиснення на клавішу ENTER, що дає змогу користувачу побачити результати виконання програми, які виводяться на монітор.

“Побачити результати виконання програми”? Яким чином? З тими командами, які ми розібрали це ж просто неможливо. Доведеться ще трішки зачекати перш ніж написати програму, але обіцяю це остання затримка.

Вказівка виведення даних

Виведення даних виконується вказівками Write та Writeln.

Загальний вигляд цих вказівок:
Write(список);
Writeln(список);
Writeln(‘текстовий вираз’, список);
Наприклад:
Write(X,Y);
Writeln(X);
Writeln(‘A + B = ‘,Y);
Writeln(‘A / B = ‘,Y:2:2);

Write(змінна) – дана команда виводить зміст змінної на монітор.

Writeln(змінна) – дана команда виводить зміст змінної на монітор і переводить курсор на інший рядок.

Останій запис, write(‘A / B = ‘,A/B:2:1);, мабудь визиває питання. Справа в тому, що присутність операції ділення вказує на те, що результат даної операції буде дійсним. А дійсні числа обчислюються з дуже великою точністтю, тому й виводиться результат буде на монітор з точністтю до 18-го знаку. Але у більшості випадків така точність не потрібна тому мі й вказуємо біля результату вираз: A/B:2:1. Цей вираз вказує на те, що кількість знаків після зап’ятої буде рівна другому числу в записі.

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

Арифметичні операції

* – множення;

/ – ділення;

+ – додавання;

– різниця;

div – ділення без залишку;

mod – залишок від ділення цілих чисел.

Стандартні функції

sin(x) – синус;

cos(x) – косинус;

arctan(x) – арктангенс;

ехр(х) – eх (експонента);

ln(x) – натуральний логарифм;

sqr(х) – x2;

abs(x) – |x| (модуль);

trunс(x)– ціла частина числа х;

frac(x) – дробова частина числа х;

round(x) – округлення до цілого значення;

chr(I) – символ, порядковий номер якого дорівнює I;

ord(c) – порядковий номер зазначеного символу с;

pred(k) – попередній для k елемент у числення типі;

succ(k) – наступний для k елемент у числення типі

sqrt(x)

.

Піднесення до степеня.

ХY = exp(ln(X)*Y)

Ну ось і все, тепер можна переходити до написання нашої першої програми.

Задача №1. Якщо на одну шальку терезів посадити Вінні Пуха, яки важить, n кілограмів, і П’ятачка, який важить на 10 кілограмів менше, а на іншу поставити глечик з медом, що важить m кілограмів, що набагато більше за вагу обох друзів, то скільки кілограмів меду доведеться з’їсти героям, що шальки терезів вирівнялися?

Математичний розв’язок. Хай вага Вінні Пуха n кілограмів, тоді вага П’ятачка буде n-10, разом вага друзів зіставить s=n+n-10. Щоб терези були в рівновазі друзям потрібно з’їсти стільки меду, скільки становить різниця між їхньою вагою і вагою глечика, тобто a(кількість потрібного для рівноваги меду)=m-s.

Що ж, як бачите, задача досить легка тепер подивимося на текст програми, яка знайде розв’язок цієї задачі.

Program zadacha1;
Var n, m, a, s : byte;
Begin
Writeln(‘Введіть вагу Вінні Пуха в кг’);
Readln(n);
Writeln(‘Введіть вагу горшіка з медом в кг’);
Readln(m);
s:=n+n-10;
a:=m-s;
Writeln(‘Доведеться з’їсти:’,a:1:1);
Readln;
End.

Розбір програми:

1. Назва програми zadacha1;
2. Визначаємо кількість змінних та їх тип;
3. Починаємо програму;
4. Виводимо на монітор запитання провагу Вінні Пуха;
5. Зчитуємо введене значення з клавіатури і записуємо в змінну n;
6. Виводимо на монітор запитання провагу горшіку з медом;
7. Зчитуємо введене значення з клавіатури і записуємо в змінну m;
8. вираховуємо вагу друзів та записуємо її в змінну s;
9. вираховуємо різницю ваги між друзями та горшіком та записуємо її в змінну a;
10. Виводимо на монітор кількість меду, яку необхідно з’їсти, щоб вирівняти терези;
11. Затримуємо подальше виконання програми, для перегляду результату;
12. Кінець програми.

Задача №2. Невдаха Сашко сів виконувати домашнє завдання і просидів за столом 2 години. З них Х хвилин він чухав потилицю і дивився у вікно, У хвилин шукав у письмовому столі гумку, щоб стерти у підручнику з англійської мови карикатуру на свого товариша, на малювання якої він витратив перед цим К хвилин. Весь останій час Сашко перекладав англійскі слова. Скільки слів він встиг перекласти, якщо на перекладення одного слова у ньго йшло 5 хвилин.

Математичний розв’язок. Хай Сашко чухав потилицю x хвилин, шукав гумку У хвилин, на малювання карикатури товариша він витратив k хвилин, тоді всього він витратив годин: T := 2*60-x-y-k; щоб визначити скільки Сашко переклав слів, треба весь витрачений ним час поділити на 5 (ця операція повинна виконатись націло). Отже маємо слідуючу прогщраму:


Program zadacha2;
Var x, y, T, k : byte;
Begin
Writeln(‘Введіть скільки хв Сашко чухав вуха’);
Readln(x);
Writeln(‘Введіть скільки хв Сашко шукав гумку’);
Readln(y);
Writeln(‘Введіть скільки хв Сашко витратив на малювання карикатури:’);
Readln(k);
T := 2*60;
T := T-x-y-k;
T := T div 5;
Writeln(‘Кількість слів, що переклав Сашко: Т = ‘,T );
Readln;
End.

Розбір програми:

1. Назва програми zadacha2;
2. Визначаємо кількість змінних та їх тип;
3. Починаємо програму;
4. Виводимо на монітор 1-ше запитання;
5. Зчитуємо введене значення з клавіатури і записуємо в змінну х;
6. Виводимо на монітор 2-ге запитання;
7. Зчитуємо введене значення з клавіатури і записуємо в змінну у;
8. Виводимо на монітор 3-е запитання;
9. Зчитуємо введене значення з клавіатури і записуємо в змінну к;
10. Переводимо 2 години у хвилини і записуємо результат в змінну Т;
11. Вираховуємо час який Сашко дійсно витратив на уроки, при чтому результат записуємо в Змінну Т, а в самому виразі використовуємо її попередній зміст;
12. Вираховуємо кількість слів яку переклав Сашко, для цього фактичний час розділимо на час, що виділяється для перекладу одного слова. Команда Div означає що ділення буде цілочисленим, без залишку;
13. Виводимо на монітор кількість слів, яку Переклав Сашко;
14. Затримуємо подальше виконання програми, для перегляду результату;
15. Кінець програми.

Тепер спробуйте написати розв’язки цих задач самостійно, і по можливості не підглядаючи на зразки. Вийшло? Впевнений, що все отрималося як найкраще. Ну а тепер наступний крок: пропоную декілька задач для закріплення матеріалу. Розв’яжіть їх самостійно а потім порівняйте з рішеням яке отримав я. Можливо ви зовсім по іншому розв’яжете поставлені задачі, але результат повинен отримуватися той самий.

Задача №3 Петрусь задумав число. На запитання друзів він сказав: якщо подвоїти число, а потім додати до нього 5, то отримається число n. Напишіть програму яка визначить, яке ж число задумав Петрусь?

Задача №4 На бульдозі Жорику сидить х бліх, а на вівчарці Ладі – у. Після того, як вівчарка і бульдог зустрілися і поговорили, 12 Жорикових бліх перейшли до Лади, а 17 Ладиних – на Жорика. Скільки бліх тепер сидить на Ладі, а скільки на Жорику?

Задача №5 По номеру квартири визначити номер під’їзду і поверх. Квартира знаходиться в п’ятиповерховому будинку, на кожному поверсі по чотири квартири.

Сподіваюся задані задачі не визвали труднощів у розв’язанні. Тепер можна й порівняти ваші результати з тими, що отримав я. Якщо ж виникли запитання, щодо тексту програм, прошу писати мені в у відповідному розділі. Буду радий допомогти у засвоєнні матеріалу. Можливо ви також маєте цікаві задачі надсилайте їх за допомогою поштової форми нашого сайту з поміткою: «програмування – цікавинки». / написати можна тут/

Розв’язки задач


Program zadacha_3;
var ch_zadumka, rezultat: real;
begin
write(‘vvedite chislo: ‘);
readln(rezultat);
ch_zadumka:=(rezultat-5)/2;
write(‘zadumane chislo = ‘,ch_zadumka:2:0);
readln;
end.


Program zadacha_4;
var Jora, Lada, x,y: byte;
begin
write(‘Jora mae blih = ‘);
readln(x);
write(‘Lada mae blih = ‘);
readln(y);
Jora:=x+17-12;
Lada:=x-17+12;
writeln(‘Jora mae blih pislya zustrichi: ‘,Jora);
write(‘Lada mae blih pislya zustrichi: ‘,Lada);
readln;
end.


Program zadacha_5;
var n_kv,pid,pov:integer;
begin
write(‘vvedite N kvartiri: ‘);
readln(n_kv);
pid:=((n_kv-1) div 20)+1;
writeln(‘N pid”izdu = ‘,pid);
pov:= ((n_kv-1) div 4+1)-((pid-1)*5);
writeln(‘N poverhu = ‘,pov);
readln;
end.

Related posts:

Коментування від Vkontakte
Коментування стандартною формою

Залиште Ваш коментар.

Поля, що позначені * обов'язкові до заповнення.