Міністерство освіти і науки України
Національний технічний інститут України
«Київський політехнічний інститут»
Кафедра прикладної математики
Лабораторна робота №2
з дисципліни «Мови програмування»
Виконав:
Студент групи КМ-21 Бовтрюк Сергій Андрійович ___________
(підпис)
Перевірив:
Викладач Громова В.В Бали _________ ___________
(підпис)
Київ-2012
ЗМІСТ
1. ТЕОРИТИЧНІ ВІДОМОСТІ 6
1.1 Тема роботи: Розробка програми з диференційованою структурою. 6
1.2 Мета роботи: Набуття навичок по роботі з інтегрованим середовищем розробки Turbo Pascal. Вивчення принципів розроблення програм диференційованої структури з використанням оператора IF. Отримання навичок користування внутрішнім відладчиком. 6
1.3 Обладнання: ПК (операційна система Windows 7), Turbo Pascal v.7.1. 6
1.4 Завдання на лабораторну роботу: 6
Варіант № 1 6
1.5 Вимоги до програми: 6
1.6 Опис програми: 6
1.7 Склад і структура даних: 6
3. ВИСНОВКИ 9
4. ДОДАТКИ 10
a) Схема алгоритму програми: 10
b) Текст (код) програми: 11
program CountQube; 11
uses crt; 11
{-------------------------------------------------} 11
function menu(var code:real):byte;{Value function} 11
begin 11
if code=1 then menu:=1 11
else 11
if code=2 then menu:=2 11
else 11
menu:=3 11
end; 11
{-------------------------------------------------} 11
function ZeroTruble(side:real):real; {Debuger function} 11
var sideReal:real; 11
codeNum:integer; 11
sideString:string[20]; 11
begin 11
if side<=0 then 11
begin 11
str(side,sideString); 11
clrscr; 11
textcolor(4); 11
writeln('PROHIBITED!'); 11
textcolor(0); 11
writeln('+--------------------------------------------------+'); 11
writeln('| |'); 11
writeln('| Print new value of the side or print 0 to exit |'); 11
writeln('| |'); 11
writeln('+--------------------------------------------------+'); 11
textcolor(4); 11
writeln('ATTENTION: if you will print something <=0 program will stop'); 11
textcolor(0); 11
writeln('----------------------------------------------------'); 11
repeat 11
readln(sideString); 11
val(sideString,sideReal,codeNum); 11
textcolor(4); 11
if codeNum<>0 then writeln('Print NUMBER!'); 11
textcolor(0); 11
if sideReal<=0 then 11
begin 11
halt(0); 11
end 11
until codeNum=0; 11
end 11
else 11
begin 11
ZeroTruble:=side; 11
end; 11
end; 11
{--------------------------------------------------------------------} 11
var codeReal,res,sideOneNum,sideTwoNum,sideThreeNum,printNowReal:real; 11
codeNum:integer; 11
sideOne,sideTwo,sideThree,code,printNow:string[20]; 11
BEGIN 11
while TRUE do {place it into WHILE to prohibit SHUTTING DOWN when finished} 11
begin 11
{Starting user menu} 11
TextBackGround(15); 11
textcolor(0); 11
clrscr; 11
{Navigation menu} 11
writeln(' __________________________________________________________________'); 11
writeln(' | Lab. Work 1 |'); 11
writeln(' | |'); 11
writeln(' | THEME: developing programm wuth linear alhoritm. |'); 11
writeln(' | |'); 11
writeln(' | VARIANT: 1 |'); 11
writeln(' | |'); 11
writeln(' | GROUP: KM-21 |'); 11
writeln(' | |'); 11
writeln(' | AUTHOR: Serghij Bovtriuk |'); 11
writeln(' |------------------------------------------------------------------|'); 11
textcolor(1); 11
writeln(' | |'); 11
writeln(' | Press 1 and click ENTER to exit |'); 11
writeln(' | Press 2 and click ENTER to watch the text of the sum |'); 11
writeln(' | Press any other number and click ENTER to run program |'); 12
writeln(' | |'); 12
textcolor(4); 12
writeln(' | ATTENTION: if you will press any other key it will close program |'); 12
textcolor(0); 12
writeln(' +------------------------------------------------------------------+'); 12
{Enter the menu code} 12
repeat 12
readln(code); 12
val(code,codeReal,codeNum); 12
textcolor(4); 12
if codeNum<>0 then writeln('Print NUMBER!'); 12
textcolor(0); 12
until codeNum=0; 12
codeReal:=menu(codeReal); 12
{Call the function} 12
if codeReal=1 then halt(0); {close} 12
if codeReal=2 then {programm text} 12
begin 12
writeln('+-------------------------------------------------------------+'); 12
writeln('|The text of programm |'); 12
writeln('+-------------------------------------------------------------+'); 12
writeln('Print any key and press ENTER to go to menu, print 1 to exit'); 12
repeat 12
readln(printNow); 12
val(printNow,printNowReal,CodeNum); 12
textcolor(4); 12
if codeNum<>0 then writeln('Print NUMBER!'); 12
textcolor(0); 12
if printNowReal=1 then 12
begin 12
halt(0); 12
end; 12
until codeNum=0; 12
end; 12
if codeReal=3 then {call programm} 12
begin 12
writeln('+--------------------------------------------+'); 12
textcolor(4); 12
writeln('|ATTENTION: you are able to insert numbers>0 |'); 12
textcolor(0); 12
writeln('+--------------------------------------------+'); 12
writeln('Enter first side of the paralelogram:');{first side} 12
repeat 12
readln(sideOne); 12
val(sideOne,sideOneNum,codeNum); 12
textcolor(4); 12
if codeNum<>0 then writeln('Print NUMBER!'); 12
textcolor(0); 12
sideOneNum:=ZeroTruble(sideOneNum); 12
until codeNum=0; 12
writeln('Enter second side of the paralelogram:');{second side} 12
repeat 12
readln(sideTwo); 12
val(sideTwo,sideTwoNum,codeNum); 12
textcolor(4); 12
if codeNum<>0 then writeln('Print NUMBER!'); 12
textcolor(0); 12
sideTwoNum:=ZeroTruble(sideTwoNum); 12
until codeNum=0; 12
writeln('Enter third side of the paralelogram:');{third side} 12
repeat 12
readln(sideThree); 12
val(sideThree,sideThreeNum,codeNum); 12
textcolor(4); 12
if codeNum<>0 then writeln('Print NUMBER!'); 12
textcolor(0); 12
sideThreeNum:=ZeroTruble(sideThreeNum); 12
until codeNum=0; 12
{start count} 12
res:=sideOneNum*sideTwoNum*sideThreeNum; 12
textcolor(5); 12
writeln('The square of the paralelogram = ',res:4:2); 12
textcolor(0); 12
if sideOneNum=sideTwoNum then 12
begin 12
if sideThreeNum=sideOneNum then 12
begin 12
writeln('its a cube'); 12
end 13
else 13
begin 13
writeln('ITS NOT A CUBE'); 13
end; 13
end 13
else 13
begin 13
writeln('ITS NOT A CUBE'); 13
end; 13
writeln('Print any key and press ENTER to go to menu, print 1 to exit'); 13
repeat 13
readln(printNow); 13
val(printNow,printNowReal,CodeNum); 13
textcolor(4); 13
if codeNum<>0 then writeln('Print NUMBER!'); 13
textcolor(0); 13
until codeNum=0; 13
if printNowReal=1 then break 13
else continue; 13
end; 13
end; {end of WHILE} 13
END. 13
c) Вхідні дані та результати роботи програми: 14
Лабораторна робота №2
1. ТЕОРИТИЧНІ ВІДОМОСТІ
1.1 Тема роботи: Розробка програми з диференційованою структурою.
1.2 Мета роботи: Набуття навичок по роботі з інтегрованим середовищем розробки Turbo Pascal. Вивчення принципів розроблення програм диференційованої структури з використанням оператора IF. Отримання навичок користування внутрішнім відладчиком.
1.3 Обладнання: ПК (операційна система Windows 7), Turbo Pascal v.7.1.
1.4 Завдання на лабораторну роботу:
Вивчити основні можливості інтегрованого середовища розробки (ІСР) Turbo Pascal для підготовки тексту програми і запуску її на виконання;
Вивчитити та навчитися практично використовувати оператори IF, GOTO;
Розробити диференційовану програму відповідно до завдання варіанту.
Варіант № 1
Обчислити об’єм паралелепіпеда за 3 сторонами, ви значити чи є він кубом та вивести а екран інформацію з цього приводу.
1.5 Вимоги до програми:
Програма повинна:
виводити на екран інформацію про роботу
надавати користувачу право вибору
виконувати задану програму
виводити результат на екран монітору
пропонувати користувачу або продовжити дії, або вийти з програми
1.6 Опис програми:
Після запуску програма виводить на екран меню, з інформацією про програму, програміста та вказівками, що робити далі. При виборі 1 пункту меню програма завершить виконання. При виборі 2 пункту можна буде продивитися текст завдання. При виборі 3 пункту меню програма почне виконання. Треба буде ввести 3 сторони паралелограма. Всі вхідні данні контролюються. Після введення, програма виведе об’єм паралелепіпеда й покаже, чи є задане тіло кубом. Після виконання, вас повертає до головного меню.
1.7 Склад і структура даних:
codeReal – тип Real; код номеру вибору меню після трансформації
res – тип Real; змінна й результату
sideOneNum, sideTwoNum, sideThreeNum – тип Real; результати сторін паралелепіпеда після трансформації
printNowReal – тип Real; визначення коду помилок після трансформації
codeNum – тип Integer; Внутрішній аналізатор коду помилки
sideOne, sideTwo, sideThree – тип String; початкові значення сторін паралелепіпеда до трансформації
code – тип String; код номеру вибору меню до трансформації
printNow – тип String; визначення коду помилок до трансформації
2. Контрольні питання
Призначення, форма запису та порядок виконання оператору IF?
Розгалуження програми
If (условие) then
Begin
(тело);
End;
2. Особливості використання вкладених уловних змінних?
Їх не потрібно задавати в var;
Вони працюють лише у своїй функції/операторі;
Які відмінності оператора вибору CASE від IF?
Оператор CASE використовується якщо задана змінна певного порядкового типу і на кожне її значення програма повинна відреагувати індивідуально;
Які правила повинні використовуватися при використанні оператора CASE?
Логіка виконання CASE така: - Спочатку програма визначає змінну чи вираз порядкового типу
Далі шукаємо константу, яка співпадає з вказаним значенням, після чого виконується програма, розташована після знаку ‘:’
Якщо програма не може знайти константу, вона виконує оператор із альтернативної вітві, розташованої після оператору ELSE(він не є обов’язковим і використовується за бажанням і необхідністю)
Для чого потрібна відладка програми?
Для пошуку і виправлення помилок, щоб програма працювала коректно
Як виконувати пошаговий запуск програми?
Меню Паскаля RUN Step over ...
Меню Паскаля RUN Trace into ...
Гаряча клавіша F8
Гаряча клавіша F7
Як встановити і як видалити точки зупину?
Меню паскаля DEBUG Breakpoints…
Користуючись меню Breakpoints встановлювати й видаляти точки зупину
Як виконати програму до курсору?
Меню паскаля RUN Go to cursor…
Гаряча клавіша F4
Як відкрити вікно WATCH?
Меню паскаля Debug Watch
Як внести змінну в WATCH?
Встановити курсор на змінну, нажати Debug Add watch…Вона буде додана до екрану watch.
нажати Debug Add watch, внести свою змінну. Вона з’явиться додана до екрану watch.