Ази програмування в Pascal

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Національний технічний університет України

«Київський Політехнічний Інститут»

Міжуніверситетський Медико-Інженерний Факультет

ДОМАШНЯ РОБОТА

з курсу

«Обчислювальна техніка — 1. Теорія алгоритмів»

Викладач: Зінченко Ніна Павлівна

Виконав: студент ММІФ, гр. БМ-13

Федорчук Максим

Київ — 2011

Завдання 1

Якщо у — дійсна змінна, а п — ціла, тоді які з наступних операторів присвоювання правильні, а які ні и чому?

а) у: = n+1; б) n: = y — 1; в) n: = 4. 0;

г) y: = trunc (y); д) n: = n div 2;

е) у: = у div 2; ж) n: = n/2; з) n: = sqr (sqrt (n))

Для вирішення задачі розглянемо кожен варіант окремо:

А) у: = n+1

За умови що «у» — дійсне число що може змінюватись і не залежить від «n», то цей оператор присвоювання не є правильним. Так як «у» не обов’язково ціле число. Неправильний оператор присвоювання.

У програмі це виглядає так:

Б) n: = y — 1

Так само як і у прикладі (а) стоїть рівність між «у» та «n», а «у» не обов’язково є цілим, Але вираз «у-1» ми присвоюємо «n», а не навпаки, тому розв’язок цієї програми є:

І сам розв’язок:

В) n: = 4. 0

Правильний оператор присвоювання (n — ціле). Відповідь:

Г) y: = trunc (y)

Неправильний вираз як математичне рівняння. Проте у мові програмування може використовуватись з нового рядка, після одних операторів та перед наступними (для виконання яких потрібно використати дійсне число «у» як ціле число). Правильний оператор присвоювання. У відповіді при цьому нам видасть значення ««, що дорівнює 0:

Д) n: = n div 2

Таке значення може бути використаним для присвоювання значенню «n» вдвічі меншого значення для подальших розрахунків. Але в нашому випадку «n» має бути цілим, і тому це неправильний оператор присвоювання:

Е) у: = у div 2

Правильний оператор присвоювання. Проте «n» такий як і у випадку (Г):

Ж) n: = n/2

n/2 від цього числа за даних умов задачі може приймати лише значення «0». Допустимий оператор присвоювання:

З) n: = sqr (sqrt (n))

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

Потім нас запитують про значення «n» — «n: =»

І після обрахунку одразу програма висвічує результат:

Все, задачу виконано.

Завдання 2

Довести тотожність: a and b? (a< true) < b;

Зобразивши у текстовому вигляді отримаємо:

[Довести тотожність: значення «а» та значення «b» правильні для виразу, де «а» менше свого правильного значення і при цьому менше значення «b"].

За визначеннями взятими з дискретної математики при доведенні тотожності можна йти від зворотного, тобто припускаючи протилежний результат пояснити існування тієї чи іншої залежності (тотожності).

Припустимо що існує таке «а» яке може бути більше за заданий для нього діапазон (а> true) < b:

З самого початку варто визначитись з обмеженнями:

Для того щоб число «а» могло бути менше свого істинного значення, його можна подати у вигляді значення з обмеженим діапазоном значень. Для прикладу можна взяти діапазон «byte». Значенню «b» тоді можна присвоїти такий самий діапазон.

Program totognist;

Var a: array [1. 255] of integer; b: byte; sum: integer;

Begin

Write (`vvedite a');

For a: <1 do

Begin

Sum: =a+b;

Writeln (`summa chisel='sum);

End.

При запуску такої програми буде видавати наступну помилку:

Помилкова змінна, яка задає команду «For»:

Це означає що програма не може виконувати дії з числами що виходять за межі заданого для них діапазону. Отже вираз (а> true) < b не може бути вірним.

Завдання 3

Пошук помилок у програмі:

program errors;

const L = 18;

label 19;

var x, y: integer;

begin y: =0;

8: read (x); if x<0 then goto L;

у: =у+х; goto 18;

19L: writeln (y)

end.

Дізнатись про всі помилки в задачі можна написавши її та перевіривши у Паскалі.

Першою помилкою є значення у третьому рядку: «label 18. 8» що має набувати цілого значення відповідно до змінних, для яких вона є міткою. А змінні у нас є цілими.

Другою помилкою є невідомий ідентифікатор «8» у 6-му рядку:

Рис. 4. 1

Цей ідентифікатор потрібно замінити на відомий ідентифікатор для програми, тобто на ті значення які програма вже знає:

програмування pascal тотожність оператор

Рис. 4. 2

З малюнку 4.2 одразу можна побачити наступну помилку в тому самому рядку — Невірний ідентифікатор мітки. Це означає що на цьому місці має бути цифрове значення що відоме програмі.

Виправивши цей пункт маємо:

Рис. 4. 3

Тепер помилкою є запис в передостанньому рядку. Для того щоб виконати команду «writeln (y)», не потрібно присвоювати їй ідентифікатори на початку рядка.

Виправши цю, останню, помилку, маємо кінцевий результат:

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

ПоказатьСвернуть
Заполнить форму текущей работой