субота, 7 січня 2017 р.

Тест. Операції у мові Pascal


Початковий курс
пошукачів різноманітних алгоритмів

1. Який запис мовою Pascal присвоює цілій змінній n округлене до цілого дійсне число x? ( n - набуває типу Integer або Longint).

n:=trunc(x);
n:=frac(x);
n:=int(x);
n:=round(x).

2. Який запис мовою Pascal присвоює цілій змінній m дробову частину від дійсного числа x? (відкидається ціла частина, а дробова частина записується як ціле число, тобто m - набуває типу Integer або Longint).

m:=frac(x);
m:=trunc(x);
m:=round(x);
m:=int(x).

3. Який запис мовою Pascal присвоює цілій змінній g цілу частину від дійсного числа h? (від числа h відкидається дробова частина, а g - набуває типу Longint )

g:=frac(h);
g:=round(h);
g:=trunc(h);
g:=int(h).

4. Який запис мовою Pascal присвоює дійсній змінній s цілу частину числа q? (s - набуває типу real).

s:=trunc(q);
s:=int(q);
s:=frac(q);
s:=round(q).

5. Який запис мовою Pascal присвоює дійсній змінній v модуль числа w?

v:=sqr(w);
v:=int(w);
v:=abs(w);
v:=odd(w).

6. Який запис мовою Pascal присвоює дійсній змінній k корінь квадратний з цілого числа z?

k:=sqrt(z);
k:=abs(z);
k:=sqr(z);
k:=odd(z).

7. Який запис мовою Pascal присвоює цілій змінній d збільшене на 1 цілe числo m?

d:=inc(m);
d:=dec(m);
d:=random(m);
d:=pred(m).

8. Який запис мовою Pascal логічна змінна logic(типу Boolean) – true, якщо число m парне або false в противному випадку?

logic:=sqrt(m);
logic:=abs(m);
logic:=sqr(m);
logic:=odd(m).

9. Який запис мовою Pascal присвоює порядковій змінній d наступне за m порядкове значення?

d:=random(m);
d:=pred(m);
d:=succ(m);
d:=frac(m).

10. Який запис мовою Pascal присвоює порядковій змінній n попереднє від g порядкове значення?

n:=pred(g);
n:=succ(g);
n:=abc(g);
n:=sqrt(g).

11. Який запис мовою Pascal присвоює цілій змінній d зменшене на 1 цілe числo m?

d:=dec(m);
d:=random(m);
d:=pred(m);
d:=succ(m);

12. Який запис мовою Pascal присвоює цілій змінній d випадкове цілe числo від 0 до m?

d:=succ(m);
d:=pred(m);
d:=random(m);
d:=frac(m).


Ви відповіли на всі запитання? Тепер натисніть на кнопку:


В інформатиці не все так просто і легко, як іноді здається. 






 Крім шести арифметичних операцій, у мові Pascal є ще ряд математичних функцій, з деякими з яких ви вже встигли познайомитись на уроках математики, а деякі будете вивчати трохи пізніше. Опишемо всі математичні функції і приведемо приклади їх застосування.
  • Abs(x) – модуль числа х. На мові математики еквівалентне запису |х|. Як змінна х так і результат дії над нею функції Abs може набувати як цілочисельного типу, так і типу Real – дійсні числа.
  • Sqr(x) – квадрат числа х. На мові математики еквівалентне запису х2. Як змінна х так і результат дії над нею функції Sqr може набувати як цілочисельного типу, так і типу Real – дійсні числа.
  • Sqrt(x) – корінь квадратний з числа х. На мові математики еквівалентне запису . Результат дії над змінною функції Sqrt набуває типу Real – дійсні числа.
  • Дві наступні функції знають старшокласники, для інших просто слід запам’ятати, що вони визначені в розглядуваній мові як математичні операції.
  • Exp(x) – експонента числа х. На мові математики еквівалентне запису ех. Результат дії над функції Exp набуває типу Real – дійсні числа.
  • Ln(x) – натуральний логарифм числа х. На мові математики еквівалентне запису ln х. Результат дії функції Ln набуває типу Real – дійсні числа.
Для розуміння наступних трьох функцій введемо нову міру для вимірювання кута.

    Означення: Центральний кут, довжина дуги якого дорівнює радіусу кола називається кутом в 1 радіан.
    Оскільки довжина кола L = 2pR, то коло містить 2p радіан, тобто 2p=360о. Знаючи це співвідношення легко переводити кути з радіанної міри в градусну і навпаки. Наш електронний партнер знає лише вимірювання кута в радіанах, тому всі наступні значення кута, де це не буде обумовлено нами окремо, вимірюються в радіанах. Саме тому значення числа p ПЕОМ в мові Pascal знає, але позначається дана константа як pi. У пам’яті комп’ютера зберігається число pi=3.1415926536, про що ми вже згадували раніше. Якщо вам необхідно використовувати градусну міру вимірювання кута, то необхідно самостійно виконати нескладні математичні перетворення, що базуються на властивостях пропорцій. Наголошуємо ще раз, що у всіх подальших записах кут буде виражено в радіанах.
  • Sin(x) – cинус кута х. На мові математики еквівалентне запису Sin х. Результат дії функції Sin набуває типу Real – дійсні числа.
  • Cos(x) – коcинус кута х. На мові математики еквівалентне запису Cosх. Результат дії функції Cos набуває типу Real – дійсні числа.
  • Arctan(x) – арктангенс числа х. На мові математики еквівалентне запису arctg  х. Результат дії функції Arctan набуває типу Real –дійсні числа і міститься на проміжку від –p/2 до + p/2.
  • Крім цих тригонометричних функцій, в мові визначені ще і такі операції:
  • Round(x) – округлює число до цілого, згідно математичних правил округлення. Результат дії функції Round набуває типу Integer або Longint – цілі числа у вказаних для даного типу межах.
  • Trunc(x) – ціла частина числа: від числа відкидається дробова частина. Результат дії функції Trunc набуває типу Integer або Longint – цілі числа у вказаних для даного типу межах.
  • Frac(x) – дробова частина числа: відкидається ціла частина, а дробова частина записується як ціле число. Результат дії функції Frac набуває типу Integer або Longint – цілі числа у вказаних для даного типу межах.
  • Odd(x) – визначає, до парних чи непарних чисел відноситься дане число. Результат дії функції Odd набуває типу Boolean – true, якщо число парне або false в противному випадку.
  • Int(x) – ціла частина числа, тобто, те ж саме, що і функція trunc, але на відміну від дії функції trunc, результат дії функції Int залишається типу real.
  • Для прикладу розв’яжемо декілька задач.
    Задача 1. Обчислити площу трикутника, якщо відомо координати його вершин.
    Розв’язання :  Досить відома в математиці задача, розв’язання якої базується на знанні формули Герона та знаходження довжини відрізка на підставі координат його кінців у декартовій системі координат. Для спрощення будемо вважати, що координати вершин трикутника завжди є цілими числами. Всі інші дії прокоментуємо в коментарях до програми.

program geron;
var xa, ya, xb, yb, xc, yc : integer;
    a, b, c, S, p : real;
begin
  write('Координата Х точки А: ');readln(xa);
  write('Координата Y точки А: ');readln(ya);
  write('Координата Х точки B: ');readln(xb);
  write('Координата Y точки B: ');readln(yb);
  write('Координата Х точки C: ');readln(xc);
  write('Координата Y точки C: ');readln(yc);
  a := sqrt(sqr(xc-xb)+sqr(yc-yb));                 { Довжина сторони а }
  b := sqrt(sqr(xc-xa)+sqr(yc-ya));                 { Довжина сторони b }
  c := sqrt(sqr(xb-xa)+sqr(yb-ya));                 { Довжина сторони с }
  p := (a + b + c)/2;                                 { Пiвпериметр}
  S := sqrt(p*(p-a)*(p-b)*(p-c));                    { Формула Герона}
  write(' S = ',S:4:2);
  readln;
end.
    При розв’язанні даної задачі можна було обійтись без введення додаткових змінних для обчислення довжин сторін і півпериметра, але в цьому випадку значно збільшився б вираз для обчислення площі і значення виразу для обчислення площі стало б практично не зрозумілим із–за його складності.
    Введення додаткових змінних полегшує написання зрозумілих програм, але відмітимо, що і тут потрібно бути раціональним – якби ми ще ввели додаткові змінні для обчислення коренів квадратних, то від цього програма навряд чи стала б зрозумілішою, більше того, вона стала б більш не зрозумілою.

    Задача 2. Округлити дробове число з заданою точністю.
    Розв’язання :  Зверніть увагу на формулювання задачі: нам потрібно округлити число з заданою точністю, а не вивести на екран з заданою точністю, тобто при подальших розрахунках нам, можливо, потрібно буде знову використовувати дане округлене число, а не його початкове значення.
Ідея округлення полягає в слідуючому:
  • вводимо число;
  • визначаємо, скільки знаків після коми нам потрібно мати;
  • множимо дане число на 10 в степені «кількість значущих цифр після коми»;
  • до отриманого числа застосовуємо функцію round;
  • отримане число ділимо на 10 в степені «кількість значущих цифр після коми».
    Все на перший погляд просто, але нам потрібно знайти спосіб знаходження числа 10 в степені «кількість значущих цифр після коми». Якби ми розв’язували цю задачу трохи пізніше, то проблем не було б, але в даний момент ми не знаємо ні операторів циклів, ні, навіть, умовного оператора. Тому на допомогу нам у цьому випадку приходить математика. У мові Паскаль немає операції піднесення до степеня (крім піднесення до квадрату), проте є дві функції, які можуть допомогти: exp(x) i ln(x), отже маємо програму:

program demoround;
var a,b,c : real;
    n : byte;
begin
  write('Введiть число: '); readln(a);
  write('Скiльки знакiв пiсля коми залишити: '); readln(n);
  b := a*exp(ln(10)*n);                  { множимо на 10n }
  b := round(b);                           { округлюємо до цілих }
  c := b*(exp(ln(10)*(-n)));              { ділимо на 10n }
  writeln('Шукана точнiсть ',c:2:n);
  readln;
end.
    

Немає коментарів:

Дописати коментар