ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ - 1
Методичні вказівки до виконання комп’ютерних практикумів
для студентів напряму підготовки 6.050702 "Електромеханіка",
спеціальності "Електромеханічні системи автоматизації та електропривод"
денної форми навчання
Рекомендовано Методичною радою НТУУ "КПІ"
Київ
НТУУ “КПІ”
Обчислювальна техніка та програмування-1: Методичні вказівки до виконання комп'ютерних практикумів для студентів напряму підготовки 6.050702 "Електромеханіка", спеціальності "Електромеханічні системи автоматизації та електропривод" денної форми навчання / Уклад. М.Я.Островерхов, О.І.Кіселичник, М.О.Островерхов. – К.: НТУУ ”КПІ”, 2011. – 198 с.
Гриф надано Методичною радою НТУУ "КПІ"
(Протокол № 6 від 24 лютого 2011 р.)
Навчальне видання
ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ - 1
Методичні вказівки до виконання комп’ютерних практикумів
для студентів напряму підготовки 6.050702 "Електромеханіка",
спеціальності "Електромеханічні системи автоматизації та електропривод"
денної форми навчання
Укладачі:
Островерхов Микола Якович, канд. техн. наук, доц.
Кіселичник Олег Іванович, канд. техн. наук, доц.
Островерхов Максим Олександрович, б/ст., ас.
Відповідальний редактор Ковбаса С.М., канд. техн. наук, доц.
Рецензент Анпілогов М.Г., канд. техн. наук, доц.
ВСТУП
Компютерний практикум з кредитного модуля “Обчислювальна техніка та програмування-1” призначений для закріплення теоретичних знань й надбання практичних навичок при розробці й налагодженні програм на мові програмування “Паскаль” та “Сі”.
Методичні вказівки до кожного практикуму включають назву та мету, короткі теоретичні відомості, завдання на роботу та контрольні запитання.
Текст програми для виконання комп'ютерного практикуму готується відповідно з варіантом завдання до початку аудиторного заняття. Під час аудиторного заняття здійснюється набір тексту програми на комп’ютері, відлагодження програми, отримання й зарахування результатів. При виводі результатів роботи програми на екран обов’язково повинні використовуватися формати виводу, а також команди очистки екрана, завдання кольорів символів та фону.
На наступному занятті проходить захист звіту комп'ютерного практикуму. Звіт оформлюється на аркушах паперу формату А4, які ліворуч жорстко скріплюються. Текст та інші матеріали звіту розміщується з однієї сторони аркушів паперу. Звіт складається з титульного листа, мети роботи, номера й змісту завдання, алгоритму програми, тексту робочої програми, висновку. Приклад оформлення титульного листа наведено в додатку А.
Основи роботи в інтегрованому середовищі “Тurbo Рascal 7.0” та “Turbo C 3.0” представлено в додатку Б.
Комп'ютерний практикум № 1
СИМВОЛИ КОДОВОЇ ТАБЛИЦІ ASCII
Мета практикуму – вивчення послідовності створення, компіляції та запуску програми на мові програмування "Паскаль", а також детальне вивчення та практичне застосування пунктів меню File, Compile, Run інтегрованого середовища мови.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Структурно програма на мові “Паскаль” складається з необов'язкового заголовка, що починається зі слова Program, та описуючої й виконавчої частини.
Описуюча частина в загальному випадку може мати сім розділів Uses (бібліотеки), Type (типи даних), Const (константи), Var (змінні), Label (мітки), Procedure (підпрограми-процедури), Function (підпрограми-функції), тобто вона містить перелік усіх елементів, що використовуються у виконавчій частині програми. Це збільшує громіздкість мови програмування, проте забезпечує високу надійність її роботи. Кожен розділ описуючої частини, в т.ч. і всі, в залежності від задачі програмування може бути відсутнім або повторюватися. Не може повторюватися лише розділ Uses, крім того, він повинен записуватися першим.
Виконавча частина складається з операторів, які вирішують задачу програмування. Ця частина починається з оператора Begin, а завершується оператором End із крапкою у кінці.
1.2. За основу кодування символів в ЕОМ узято американський стандартний код для обміну інформації (ASCII), створений у 1963 р. для телеграфу. Для кодування символів використовувалось машинне слово у 8 біт (один байт), із яких 7 біт ішло безпосередньо на кодування, а один – на контроль правильності передачі даних за парною чи непарною кількістю одиничних бітів у слові. За допомогою 7 біт було закодовано 27=128 символів, це – 33 керуючі символи (початок та кінець тексту, перехід на новий рядок тощо) та 95 символів друкарської машинки (великі та малі латинські букви, цифри, символи операцій) та інших символів. Цих символів було явно недостатньо для реалізації національних алфавітів, тому фірма ІВМ розширила таблицю ASCII за рахунок біту контролю, що дозволило отримати додатково ще 128 символів (28=256). Було зареєстровано декілька розширених таблиць, наприклад, за номером 437 для Північної Америки, 850 для Європи, 866 для країн СНД. До них увійшли грецький алфавіт, псевдографічні й математичні символи, а також у залежності від номера таблиці оригінальні букви національних алфавітів на основі латиниці, кирилиці тощо. Кодову таблицю ASCII можна знайти у додатках майже усіх довідників та підручників з мов програмування.
Зареєстрована також 16-ти бітна таблиця кодування UniCode, яка вміщує 216=65536 символів. Вона включає алфавіти майже усіх мов світу, в т.ч. китайські, корейські та японські ієрогліфи, та має резерв близько 30 тис. місць. Частина символів цієї таблиці використовується у графічних інтерфейсних системах, зокрема, у Windows.
1.3. Символи кодової таблиці ASCII із клавіатури персонального комп'ютера можна увести декількома способами:
1) Усі символи друкарської машинки та чотири керуючі символи (Esc,Tab,Enter,BackSpace) уводяться натисканням відповідних клавіш на клавіатури;
2) Усі символи таблиці, крім символу з нульовим кодом Nul, вводяться за допомогою комбінації клавіші Alt та десяткового коду відповідного символу на малій цифровій клавіатурі. Наприклад, велика латинська буква А має десятковий код 65. Для її вводу натискається комбінація клавіш Alt-65. Символ з'являється на екрані при відпусканні клавіші Alt;
3) Усі керуючі символи, крім символу Nul, вводяться за допомогою комбінації клавіші Ctrl та клавіші із символом, код якого на 40Н більше коду керуючого символу. Наприклад, керуючий символ Bel (дзвінок) має шістнадцятковий код 07Н. Код 07Н+40Н=47Н має символ G. Для вводу символу Bel натискається комбінація Ctrl-G.
1.4. Програмно на мові “Паскаль” символи кодової таблиці ASCII вводяться за допомогою функції Chr(I), де І – десятковий код символу від 0 до 255 у вигляді цілочислової змінної.
1.5. Дію, зворотну до функції Chr виконує функція Ord(Ch), яка повертає десятковий код символу Ch, наприклад, при натисканні клавіші на клавіатурі.
Приклад 1. Визначити код символу клавіатури.
Program Code_Key;
Uses Crt;
Var
Ch: char;
Begin
TextColor (blue);
TextBackground (lightgray);
ClrScr;
Writeln ('Натисніть клавiшу');
Ch:= ReadKey;
if Ch = #0 then
begin
Ch:= ReadKey;
WriteLn('Ви натиснули спецклавiшу з кодом ',
Ord(Ch));
end
else
WriteLn('Ви натиснули клавiшу з кодом ASCII ',
Ord(Ch));
Readln;
End.
2. ЗАВДАННЯ НА РОБОТУ
Набрати на мові програмування “Паскаль” текст нижченаведеної програми Code_ASCII, яка повертає символи кодової таблиці ASCII за їх десятковим кодом, відлагодити, відкомпілювати та запустити її у роботу При цьому детально вивчити та практично застосувати пункти меню File,Compile,Run інтегрованого середовища мови. За результатами роботи програми записати отримані коди та відповідні символи таблиці ASCII.
Program Code_ASCII;
Uses Crt;
Var I:byte;
Begin
TextBackground (lightgray);
ClrScr;
TextColor (blue);
Writeln;
Write (' ':25,'Коди символiв таблицi');
TextColor (black);
Write (' ASCII');
Window (10,4,80,25);
For I:=0 to 255 do
begin
ClrScr;
TextColor (red);
Write ('Десятковий код: ');
TextColor (yellow);
Writeln (I);
TextColor (red);
Write ('Символ: ');
TextColor (yellow);
Writeln (Chr (I):2);
TextColor (red);
Writeln;
TextColor (green+ blink);
GotoXY (17,19);
Write ('Натиснiть клавiшу "ENTER" ');
Readln;
end;
Readln;
Window (1,1,80,25);
End.
3. КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Що взято за основу кодування символів в ЕОМ.
3.2. Скільки символів уміщує кодова таблиця ASCII.
3.3. Які є способи вводу символів кодової таблиці ASCII.
3.4. Що таке компіляція програми та як вона здійснюється.
3.5. Як визначити місце помилки в тексті програми під час компіляції програми.
Комп'ютерний практикум № 2
УМОВНІ ПЕРЕХОДИ НА МОВІ "ПАСКАЛЬ"
Мета практикуму – розробка програмного забезпечення на мові програмування "Паскаль" з реалізації розгалужених структур алгоритмів, а також детальне вивчення та практичне застосування пункту меню Edit інтегрованого середовища мови.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Для реалізації розгалужених структур алгоритмів на мові “Паскаль” застосовується оператор умовного переходу if та оператор вибору case. В залежності від виконання заданих у цих операторах умов змінюється логічний хід програми.
1.2. Оператор умовного переходу має наступну специфікацію (за допомогою кутових дужок <..> нижче і в подальшому будуть вказуватися елементи операторів, які вільно задає програміст у залежності від задачі, що вирішується)
if <умова> then <оператор 1> else <оператор 2>;
Якщо <умова> приймає значення True, тобто “істина”, то виконується <оператор 1>. Якщо ж <умова> приймає значення False, тобто “неістина”, то виконується <оператор 2>. Наприклад,
if A>B then C:=A+B else C:=A-B;
Якщо в then чи else -гілці необхідно виконати більше одного оператора, то використовуються операторні дужки begin..end, наприклад,
If A>B then
Begin
C:=A+B;
D:=A*B;
End
Else
Begin
C:=A-B;
D:=A/B;
end;
При цьому перед словом else крапка з комою; не ставиться, бо оператор if ще не завершився.
Складна <умова> реалізується за допомогою логічних функцій: “І” – and, “АБО” – or, “НІ” – not, “Виключаюче АБО” – xor, наприклад,
if (A>B)and(C<=D)or(C>0) then C:=A+B else C:=A-B;
Оператор if може застосовуватися без else -гілки, наприклад,
if A>B then C:=A+B;
В цьому випадку, якщо <умова> приймає значення False, то оператор if пропускається й виконується наступний за ним оператор програми.
Оператор if може бути вкладеним, проте, більше трьох вкладень не робиться із-за складності аналізу роботи операторів. Для зміни області дії then та else -гілок різних операторів if застосовуються операторні дужки begin..end, наприклад,
If A>B then
Begin
if C<=D then C:=A+B else C:=A-B;
End
Else
C:=A/B;
Приклад 1. Визначити поведінку космічного корабля, що стартує із Землі, в залежності від його швидкості відносно 1-ї, 2-ї та 3-ї космічної швидкості.
Program If_Kosmos;
Uses CRT;
Const
V1=7.9; {Перша космічна швидкість, км/с}
V2=11.2; {Друга космічна швидкість, км/с}
V3=16.6; {Третя космічна швидкість, км/с}
Var
V:real;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (blue);
GotoXY (7,2);
Writeln ('ПРОГРАМА ВИЗНАЧЕННЯ ПОВЕДIНКИ
КОСМIЧНОГО КОРАБЛЯ');
TextColor (red);
GotoXY (9,4);
Write ('Введiть швидкiсть корабля, км/с: ');
TextColor (black);
Readln (V);
GotoXY (9,6);
TextColor (yellow);
if V<V1 then
Writeln ('Корабель впаде на Землю!!!');
if (V>=V1)and(V<V2) then
Writeln ('Корабель стане супутником Землi!!!');
if (V>=V2)and(V<V3) then
Writeln ('Корабель досягне iнших планет
Сонячної системи!!!');
if V>V3 then
Writeln ('Корабель покине Сонячну систему!!!');
Repeat Until KeyPressed;
End.
1.3. Оператор вибору case використовується для реалізації умови з багатьма виходами. Його специфікація наступна
Case<змінна>of
<1-е значення змінної>: <оператор 1>;
<2-е значення змінної>: <оператор 2>;
<N-е значення змінної>: <оператор N>;
else <оператор>;
end;
В залежності від <значення змінної> виконується один з операторів проміжку від <оператор 1> до <оператор N>. Якщо ж змінна не має заданих значень, то виконується <оператор> else -гілки. <Змінна>, за значенням якої здійснюється вибір, може бути будь-якого простого (скалярного) типу даних, крім, дійсного. Наприклад, для змінної вибору цілочислового типу оператор може мати такий вигляд
Case J of
1: C:=A+B;
3: C:=A-B;
7: C:=A*B;
else C:=A/B;
end;
Оператор може застосовуватися без else -гілки, наприклад,
Case J of
1: C:=A+B;
3: C:=A-B;
7: C:=A*B;
end;
Значення змінної вибори для виконання одного й того ж оператора можуть об'єднуватися через кому або через проміжок, який задається двома послідовними крапками, наприклад,
Case J of
1,2: C:=A+B;
3,4,6: C:=A-B;
7..13: C:=A*B;
end;
Якщо для значення змінної вибору необхідно виконати більше одного оператора, то використовуються операторні дужки begin..end, наприклад,
Case J of
Begin
C:=A+B;
D:=(A-B)/2;
end;
3: C:=A-B;
7: C:=A*B;
else C:=A/B;
end;
2. ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу програму на мові програмування “Паскаль”, яка вирішує задачу відповідно до заданого нижче варіанта. При цьому детально вивчити та практично застосувати пункт меню Edit інтегрованого середовища мови.
2.1. Визначити, в якому квадранті (четверті), на осі чи в початку координат знаходиться точка з уведеними з клавіатури координатами (х,у).
2.2. Увести з клавіатури ПІБ студента, оцінку з математики, хімії, фізики. Підрахувати середній бал та визначити право студента на отримання базової та підвищеної стипендії, якщо середній бал не менше "4' та "5" відповідно.
2.3. Увести з клавіатури ПІБ студента, кількість "3", кількість "4", кількість "5", оцінку за дипломний проект. Визначити право студента на отримання диплома з відзнакою, якщо відсутні "3", "4" не більше 25 %, а за дипломний проект оцінка "5".
2.4. Увести з клавіатури марку автомобіля, пройдений шлях, ціну, об'єм двигуна. Рекомендувати автомобіль до придбання, якщо його ціна нижча заданої, а об'єм двигуна більший заданого.
2.5. Увести з клавіатури ПІБ продавця, обсяг продажу товару, стаж роботи. Визначити розмір премії, як відсоток від обсягу продажу (відсоток дорівнює стажу роботи), та право на подарунок, якщо стаж роботи й обсяг продажу більші заданих.
2.6. Увести з клавіатури ПІБ студента, стать, кількість "3", кількість "4", кількість "5" у заліковій книжці. Рекомендувати студентів чоловічої статі до навчання на військовій кафедрі, якщо середній бал не нижче 3,9.
2.7. Увести з клавіатури ПІБ студента, оцінку за контрольну роботу, оцінку за розрахункову роботу, оцінку за лабораторні роботи. Рекомендувати студента на отримання заліку з дисципліни, якщо вказані оцінки не нижче "4".
2.8. Увести з клавіатури ПІБ, кількість "3", "4", "5" у заліковій книжці, назву іноземної мови для трьох студентів. Визначити студента з найвищим середнім балом для навчання за додатковою програмою, якщо іноземною є німецька мова.
2.9. Увести з клавіатури ПІБ студента, стать, оцінку з іноземної мови та обчислювальної техніки. Визначити студентів жіночої статі для участі в міжнародній олімпіаді, якщо оцінка з обчислювальної техніки "5", а з іноземної мови не нижче "4'.
2.10. Знайти корні квадратного рівняння ax2+bx+c=0. Значення коефіцієнтів рівняння увести з клавіатури.
3. КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Які оператори застосовуються для реалізації розгалужень програми.
3.2. Яка специфікація оператора умовного переходу.
3.3. Як реалізується складна умова умовного оператора.
3.4. Як виконати більше одного оператора у гілках оператора умовного переходу.
3.5. Яка специфікація оператора вибору.
3.6. Який тип даних може мати змінна вибору оператора вибору.
Комп'ютерний практикум № 3
ЦИКЛИ НА МОВІ "ПАСКАЛЬ"
Мета практикуму – розробка програмного забезпечення на мові програмування "Паскаль" з реалізації циклічних структур алгоритмів, а також детальне вивчення та практичне застосування пунктів меню Search, Help інтегрованого середовища мови.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Цикл – це послідовність операторів, яка може виконуватися більше одного разу.
Для реалізації циклів із заданим числом повторень найчастіше застосовується оператор повторення for. Якщо параметр циклу змінюється з кроком відмінним від одиниці, то може використовуватися оператор циклу з передумовою while чи з постумовою repeat.
1.2. Оператор циклу for застосовується, якщо крок зміни параметра циклу дорівнює 1 чи -1. При кроці, рівному одиниці, цей оператор має наступну специфікацію
for <параметр> := <поч.зн.> to <кінц.зн.> do <оператор>;
Параметр циклу <параметр> та його початкове <поч.зн.> і кінцеве <кінц.зн.> значення можуть мати будь-який простий (скалярний) тип даних, крім дійсного. При повторі значення параметра збільшується на одиницю, тому кінцеве значення не повинно бути менше за початкове. Якщо ж вони рівні, то <оператор> виконується один раз. Після завершення виконання циклу параметр циклу залишається рівним кінцевому значенню. В тілі циклу програміст не може змінити значення параметра.
Для цілочислового типу параметра, позначеного ідентифікатором І, цикл може мати такий вигляд
for I:=3 to 21 do Writeln (I);
Якщо у циклі необхідно виконати більше одного оператора, то використовуються операторні дужки begin..end, наприклад,
for I:=3 to 21 do
Begin
C:=A+B;
D:=A-B;
Writeln (I,C,D);
end;
При від’ємному кроці -1 (мінус один) оператор for має таку специфікацію
for <параметр> := <поч.зн.> downto <кінц.зн.> do <оператор>;
При повторенні значення параметра зменшується на одиницю, тому кінцеве значення не повинно бути більше за початкове, наприклад,
for I:=23 downto 11 do
Begin
C:=A+B;
D:=A-B;
Writeln (I,C,D);
end;
Приклад 1. Знайти добуток елементів дійсного масиву А12.
Program Dobutok_Array;
Uses Crt;
Const
n=12;
Var
A: array [1..n] of real;
I: byte;
Dobutok: real;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (yellow);
GotoXY (17,2);
Writeln ('ВИЗНАЧЕННЯ ДОБУТКУ ЕЛЕМЕНТIВ МАТРИЦI');
GotoXY (25,4);
Write ('Введiть елемент матрицi ');
TextColor (black);
for I:= 1 to n do
begin
GotoXY (49,4);
Write ('a[',i,']= ');
Read (A[i]);
GotoXY (49,4);
ClrEol;
end;
Dobutok:= 1;
for I:= 1 to n do Dobutok:=Dobutok* A[i];
TextColor (red);
GotoXY (21,7);
Writeln ('Добуток елементiв дорiвнює: ', Dobutok:9);
Repeat Until KeyPressed;
End.
1.3. Цикл із перед- та постумовою можна застосувати для вирішення задач, у яких параметр циклу змінюється з кроком, відмінним від одиниці. Для цього перед початком циклу задається початкове значення параметра циклу, а в тілі циклу – закон його зміни.
У циклі з передумовою
while <умова> do <оператор>;
<оператор> виконується, поки <умова> має значення True, тобто “істина”, наприклад,
while A>B do C:=A+B;
Якщо в циклі необхідно виконати більше одного оператора, то використовуються операторні дужки begin..end. Для запобігання зациклювання програміст повинен забезпечити умову виходу з циклу, наприклад, цілочислова змінна А змінюється від 10 до 4 із від’ємним кроком -2
А:=10;
while A>=4 do
Begin
C:=A+D;
write (C);
A:=A-2;
end;
1.4. Оператори у циклі з постумовою
Repeat
<оператор 1>;
<оператор 2>;
<оператор N>;
until <умова>;
виконуються, поки <умова> має значення False, тобто “неістина”, наприклад, для вищенаведеної змінної А цикл має такий вигляд
А:=10;
Repeat
C:=A+D;
write (C);
A:=A-2;
until A<4;
1.5. Цикл із невідомим числом повторень виконується поки не досягається умова виходу, наприклад, досягнення заданої точності обчислень тощо. Забезпеченню умови виходу необхідно приділити особливу увагу, інакше програма безнадійно зациклиться. Для реалізації циклу застосовується оператор із передумовою while чи постумовою repeat.
1.6. Оператори тіла циклу з передумовою, які обмежені операторними дужками begin..end, виконуються, поки <умова> має значення True, тобто “істина”
While<умова>do
Begin
<оператор 1>;
<оператор 2>;
<оператор N>;
end;
1.7. Оператори тіла циклу з постумовою обмежені словами repeat.. until й виконуються на відміну від попереднього циклу, поки <умова> має значення False, тобто “неістина”
Repeat
<оператор 1>;
<оператор 2>;
<оператор N>;
until <умова>;
Приклад 2. Знайти найменше натуральне число k, при якому функція y=xk/k стає меншою за задане додатне число а, де х – задане додатне число менше одиниці.
Program Minimum_K;
Uses Crt;
Var
a, x, y:real;
k:word;
Begin
TextBackground (lightgray);
ClrScr;
TextColor (blue);
Writeln ('ЗНАХОДЖЕННЯ ЗНАЧЕННЯ "к", ПРИ ЯКОМУ
ФУНКЦIЯ y=x^k/k < a');
Writeln;
TextColor (red);
Write (' ':9,'Ввeдiть значення "a" та "x": ');
TextColor (black);
Readln (a, x);
k:=0;
repeat
k:= k+1;
y:= Exp(k*Ln(x))/k;
until y < a;
TextColor (yellow);
Writeln;
Writeln (' ':9,'Функцiя y < a при к= ',k);
Readln;
End.
1.8. Цикл, що містить у своєму тілі один чи декілька інших циклів називається вкладеним. Правила організації зовнішнього та внутрішніх циклів такі як і для звичайного циклу, проте цикли не повинні перехрещуватися. При цьому за одну зміну параметра зовнішнього циклу, параметр внутрішнього циклу кожен раз перебігає всі свої значення від початкового до кінцевого. Вкладені цикли реалізуються за допомогою операторів for, while чи repeat.
1.9. Оператор for застосовується для циклів із заданим числом повторень, наприклад, при роботі з масивами.
Приклад 3. Знайти суму елементів кожного рядка дійсної матриці А 3х5.
Program Summa_String;
Uses Crt;
Const
N=3;
M=5;
Var
A:array [1..N,1..M] of real;