
|
|
Главная \ Методичні вказівки \ Основи інформаційних технологій та програмування
Основи інформаційних технологій та програмування« Назад
Основи інформаційних технологій та програмування 25.07.2015 07:43
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
УКРАЇНСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ ВОДНОГО ГОСПОДАРСТВА І ПРИРОДОКОРИСТУВАННЯ
Кафедра прикладної математики
100-43
МЕТОДИЧНІ ВКАЗІВКИ ТА ЗАВДАННЯ
для виконання контрольної роботи з дисципліни “Основи інформаційних технологій та програмування”
для студентів 1 курсу заочної форми навчання спеціальності 6.090500 “Теплоенергетика”
Затверджено на засіданні методичної комісії механічного факультету Протокол № 3 від 18 грудня 2003р.
РІВНЕ-2003
Методичні вказівки до виконання контрольної роботи з дисципліни “Основи інформаційних технологій та програмування” для студентів заочної форми навчання спеціальності “Теплоенергетика” /В.Кузьменко. -Рівне: УДУВГП, 2003.-35c.
Упорядники: В.Кузьменко – старший викладач кафедри прикладної математики
Відповідальний за випуск: А.Власюк – доктор технічних наук, професор, завідувач кафедри прикладної математики
Зміст
1. Навчально-методичні матеріали...........................................................3 2. Програма дисципліни.....................................................................................4 3. Програмування в середовищі Turbo Pascal..................................................5 3.1. Вступ.........................................................................................................5 3.2. Структура Pascal-програми. Найпростіші програми на мові Pascal...5 3.3. Оператори введення та виведення даних..............................................7 3.4. Оператор присвоєння...............................................................................7 3.5. Оператор розгалуження if. Оператор вибору Case...............................9 3.6. Циклічні алгоритми................................................................................12 3.7. Масиви даних. Обробка одновимірних та двовимірних масивів…...16 3.8. Процедури та функції у мові Pascal.....................................................20 4. Правила виконання та оформлення контрольної роботи..........................24 5. Таблиця варіантів..........................................................................................24 6. Завдання до контрольної роботи.................................................................25
Навчально-методичні матеріали
Література
2000.-248с.
10. Джонс Ж.., Хароу К. Решение задач в системе Турбо Паскаль, М.:Финансы и статистика, 1991. 11. Довгаль С. И., Сбитнев А. И. Персональные ВМ: Турбо Паскаль 7.0, объектное програмирование.- К.: Довгаль, 1995. 12. Верлань А.Ф., Апатова Н. В. Інформатика:Підручник для учнів 10-11 кл. серед. загальноосв. шк.- К.: Форум, 2000-223с. Методичні вказівки
Програма дисципліни.
ВступМетою курсу є ознайомлення з сучасним станом комп’ютерної техніки та її програмним забезпеченням, перспективними напрямками використання сучасних ПЕОМ, вивчення способів і методів підготовки та розв’язування задач інженерного характеру на ПЕОМ. Завдання:
Алгоритмічна мова Pascal була розроблена математиком Ніклаусом Віртом. В 1968 році була розроблена перша версія мови Pascal, названа на честь великого французького математика і механіка Блеза Паскаля. Мова Pascal є мовою високого рівня програмування, зі строгим контролем типів, що підтримує структурне та об’єктно-орієнтоване програмування. До її переваг можна віднести легкий для читання код, швидку трансляцію та можливість використання кількох файлів-модулів для модульного програмування.
Найпростіші програми на мові Pascal.Структура Pascal-програмиАлфавіт мови Pascal складається із: 1) великих та маленьких латинських букв, які не розрізняються, та символа підкреслення; 2) десяти арабських цифр: 0..9; 3) спеціальних розділових знаків. Із елементів алфавіту будуються всі конструкції мови. Програма на мові Pascal має чітко організовану структуру. Вона починається із заголовка, потім розміщується описова частина, в якій визначаються дані, що використовуються в програмі, і, нарешті, - тіло програми, блок операторів, що послідовно виконуються. Оператори, що складають тіло програми, повинні бути заключені у операторні дужки begin i end. Після кожного оператора обов’язково ставиться крапка з комою, в кінці програми - крапка. Загальний вигляд програми: Program <ім’я програми>; Label {блок описання міток}; Const {блок описання констант}; Type {описи нестандартних типів даних}; Var {блок описання змінних}; Begin {початок програми} {тіло програми} End. {кінець програми} Найпростіша Pascal-програма матиме такий вигляд: Program pr1; BeginWriteln (‘Моя перша програма’); End. Заголовок програми не є обов’язковим. Він використовується лише для того, щоб нагадати користувачу для чого була призначена дана програма. Описові розділи Const, Label, Type, Var також не є обов’язковими і використовуються лише при потребі описання констант, міток, нестандартних типів та змінних відповідно. Вони можуть записуватись в довільному порядку, повторюватись, але вони обов’язково мають бути розміщені перед ключовим словом Begin. Розглянемо основні розділи Pascal-програми детальніше. Блок описання констант починається із службового слова Const після якого вказується список імен констант та їхнє значення через знак “=”. Наприклад, Const Pi=3.1415; Step=2E-3; {Такий запис називається експоненціальною формою дійсного числа. Літера E означає множення на 10 у вказаному після неї степені. Тобто, 2E-3=0.002} A=12; B=12.0; C=A+B; Використання констант робить програму більш зручною для розуміння та внесення виправлень. Блок описання міток, якщо вони використовуються в програмі, починається із службового слова Label, після якого вказується список імен міток через кому. Наприклад, Label L1, lab; Мітки використовуються для переходу з однієї частини програми в іншу, без послідовного виконання операторів. Використання міток не є хорошим стилем програмування. Блок описання типів починається службовим словом Type. У мові Pascal є ряд стандартних типів. Наприклад, - Integer, Byte, ShortInt, Word, LongInt {цілі типи даних //1,100,-5}; - Real, Single, Double, Extended {дійсні типи даних // 2.005, -4.23924, 5e4}; - Boolean {логічний тип // true (істинне), false (хибне)}; - Char {символьний тип // ‘a’, ‘5’,’#’}; - String{рядковий тип // ‘Університет’, ‘Я студент 1-го курсу’}. Всі типи змінних нестандартного типу повинні бути оголошені у розділі Type програми. Наприклад, Type Ar=Array [1..10] of integer; {масив десяти цілих чисел} Найважливішим серед описових розділів є розділ Var, у якому вказуються імена та тип змінних, що використовуються в програмі. Змінна – це величина, звертання до якої проводиться по імені. Будь-яка змінна, що зустрічається у програмі повинна бути оголошена у розділі змінних Var. Наприклад, Var a1, a2: Real; {оголошені дві дійсні змінні a1 та a2} B: Integer; {оголошена змінна B цілого типу} S, C: Char; {S та C оголошені як символьні змінні} L: Boolean; {L оголошена як змінна логічного типу}. Будь-які імена змінних, типів, констант являються ідентифікаторами. Ідентифікатор – це послідовність латинських букв та цифр (може використовуватись також знак підкреслення), але першою обов’язково повинна бути буква. Кількість символів може бути довільною, але розрізняються лише перші 64. Оператори введення та виведення данихДля написання найпростіших програм потрібно знати оператори введення та виведення даних. Оператор введення поміщає значення змінної, яка вводиться, у відповідну ділянку пам’яті. Він має такий вигляд: Read (<список імен змінних>); або Readln (<список імен змінних>); При виконанні оператора Read програма зупиняється і чекає поки користувач введе з клавіатури значення і натисне клавішу пробіл чи клавішу Enter. Дія оператора Readlnаналогічна, за виключенням того, що курсор на екрані дисплея після виконання оператора переходить на новий рядок. Для виведення результатів роботи програми на екран дисплея використовується оператор: Write (<список виведення>); або Writeln (<список виведення>); Список виведення складається із імен змінних та виразів. Наприклад, Write (‘Значення суми ’,S); Writeln (‘а = ’,a, ’ b = ’,b); Оператор Writeln відрізняється від Write лише тим, що після виведення даних переводить курсор на екрані дисплея на новий рядок. Допускаються також порожні оператори Readlnта Writeln. Рядок Readln; в програмі чекатиме натиснення клавіші Enter, але введені з клавіатури значення не будуть нікуди заноситись. Порожній оператор Writeln; лише переводитиме курсор на новий рядок. Оператор присвоєнняДля надання змінній нового значення використовується оператор присвоєння. Загальний вигляд оператора присвоєння такий: <Ім’я змінної>:=<вираз>; Знак “:=” означає “присвоїти”, надати змінній значення. При виконанні оператора присвоєння спочатку обчислюється значення виразу, записаного зліва від оператора присвоєння, і одержане значення записується у змінну, що вказана зправа від знака присвоєння. Наприклад, Y:=Sin(x)+Cos(x);{змінній Y присвоїти значення Sin(x)+Cos(x)} i:=i+1;{збільшити значення змінної i на одиницю} d:=b*b-4*a*c;{змінній d надати значення виразу b*b-4*a*c } У мові Pascal існує жорсткий контроль типів. Тому тип виразу, що знаходиться зправа від оператора присвоєння повинен відповідати типу змінної, що записана зліва від знака присвоєння. Приклади програм:Приклад 1: Написати програму для обчислення площі круга та довжини кола за відомим радіусом. Program pr1; ConstPi=3.141592;VarR, L, S: Real; BeginWriteln (’Введіть радіус’); Readln(R); L:=2*Pi*R; S:=Pi*R*R; Writeln(’Довжина кола = ’,L); Writeln(’Площа круга = ’,S); End.Приклад 2: Знайти середнє арифметичне трьох цілих чисел і вивести його на екран дисплея. Program pr2; Vara, b, c: Integer; s: Real; BeginWriteln (’Введіть три цілих числа’); Readln(a, b, c); s:=(a+b+c)/3; Writeln(’Середнє арифметичне = ’,s); End.Для виконання завдань контрольної роботи потрібно знати як стандартні математичні функції записуються мовою Pascal. Приведемо наступну таблицю:
Оператор розгалуженняIf. Оператор вибору Case.
При програмуванні здебільшого використовуються три типи команд: присвоювання, розгалуження і повторення. Для здійснення розгалуження у Pascal-програмі використовується умовний оператор if. Оператор if може використовуватись у повній та неповній формі. Синтаксис умовного оператора такий: If <умова> then <оператор>; або If <умова> then <оператор 1> else < оператор 2>; Оператор if обчислює значення логічного виразу <умова> і якщо цей вираз приймає значення true (істинне), то виконується оператор, вказаний після службового слова then, а якщо <умова> приймає значення false (хибне), то, або виконується оператор, який слідує за оператором if (якщо оператор if неповний), або виконується оператор, вказаний після службового слова else. Наприклад, If c<>0 then a:=b/c; {виключаєм випадок ділення на нуль} If c<>0 then a:=b/c else Writeln(‘Помилка! Ділення на нуль!’); Якщо після слів then чи else треба записати не один оператор, а кілька, слід використовувати операторні дужки begin <послідовність операторів> end. Наприклад, If x<y then begin z:=x; x:=y; y:=z; end; {якщо x менший за y, то міняємо значення змінних x та y місцями}. Для побудови складних умов використовуються логічні операції and (і), or (або) та not(не). Таблички істинності для цих операцій мають вигляд:
Наприклад, щоб перевірити чи належить x проміжку [-1; 4] слід написати: If (x>=-1)and(x<=4) then Writeln(‘Так !’) else Writeln(‘Ні !’); Допускається використання будь-якої кількості вкладених операторів If. Наприклад, If (x>=-1) then if (x<=4) thenWriteln(‘Так !’) else Writeln(‘Ні !’); У останньому прикладі вітка else відноситься до останнього оператора if. Оператор вибору Case
Умовний оператор дозволяє здійснювати розгалуження програми тільки за двома напрямками. Якщо для змінної необхідно перевірити ряд умов, слід використовувати або вкладені оператори if, або оператор вибору Case. Синтаксис оператора Case такий: Case <змінна або вираз> of <мітка 1>: <оператор 1>; <мітка 2>:<оператор 2>; . . . . . <мітка N>:<оператор N>; else <оператор N+1>; end;В результаті дії оператора вибору виконається лише оператор, позначений міткою, що відповідає значенню змінної (виразу), вказаної після службового слова Case. Якщо значення змінної не співпаде з жодною із міток, то виконається оператор вказаний після службового слова else. Вітка else є необов’язковою. Параметр <змінна або вираз> може бути цілого, символьного та перелічуваного типів. Наприклад, Case Variant of {змінна Variant містить номер варіанту} 1: Writeln(‘Варіант 1’);{виконається, якщо змінна Variant=1} 2: Writeln(‘Варіант 2’);{виконається, якщо змінна Variant=2} else Writeln(‘Не вірне значення варіанту!’);{ виконається, в усіх інших випадках} end; {вказує на кінець оператора Case}
Стандартні типи данихДля програмування складних задач потрібно використовувати різні типи даних. Наведемо наступну таблицю стандартних типів мови Pascal. Цілі типи даних
Над цілими числами можна виконувати стандартні математичні операції: додавання (+), віднімання (-), множення (*), ділення націло (div), обчислення остачі від ділення (mod). Дійсні типи даних
Для округлення дійсних змінних використовують наступні функції мови Pascal: Round(x) – округлити x; Trunc(x) – відкинути дробову частину x; Int(x) – взяти цілу частину від x; Frac(x) – взяти дробову частину від x.
Символьний тип Char Для розміщення об’єктів типу Char використовується комірка оперативної пам’яті розміром 1 байт, в який записується код символа. Для кодування символів використовується таблиця ASCII. Перші 128 символів включають управляючі символи, арабські цифри та символи латинського алфавіту. У другій половині кодової таблиці розміщені графічні символи та символи національних алфавітів. Впорядкування символів в алфавіті співпадає з їх впорядкуванням у кодовій таблиці. Об‘єкти типу Char можна порівнювати між собою. Символ вважається більшим, якщо його ASCII-код більший. Наприклад, ‘A’<’C’ {код ‘A’=65, код ’C’=67} Функція, що повертає код символа називається Ord(). Обернена до неї функція Chr() за кодом повертає сам символ. Наприклад, Ord(‘A’)=65, Chr(67)=’C’. Кількість всіх символів, які можуть використовуватись у мові Pascal, дорівнює 256. Логічний тип Boolean Змінна логічного типу може приймати лише два значення True (істинно) або False (хибно), хоча для її розміщення використовується комірка пам’яті розміром 1 байт. До змінних логічного типу можна застосовувати логічні операції: not, and, or, таблички істинності яких наведені вище. Приклади програмПриклад 3: Перевірити чи належить точка з координатами (x,y) колу радіусом R з центром в т.(0,0) Program pr3; VarB: Boolean; x, y, R: Real; BeginWriteln(‘Введіть радіус R’); Readln(R); Writeln(‘Введіть координати (x, y)’); Readln(x, y); B:=Sqr(x)+Sqr(y)<=Sqr(R); Writeln(B); End.Приклад 4: Знайти корені квадратного рівняння . Program pr4; Vara, b, c, D: Real; BeginWriteln (’Введіть коефіцієнти рівняння a, b, c’); Readln(a, b, c); D:=b*b-4*a*c; If D>0 then begin D:=Sqrt(D); Writeln(‘x1=’,(-b-D)/(2*a); Writeln(‘x2=’ ,(-b+D)/(2*a)); end else If D=0 then Writeln(‘x1=x2=’,-b/(2*a)) else Writeln(‘Немає коренів!’); End.Приклад 5: Написати програму для здійснення операцій додавання, віднімання, множення, ділення за вибором користувача. Program pr5; Varop: Char; a, b: Real; BeginWriteln (’Введіть операцію (+,-,*,/)’); Readln(op); Writeln (’Введіть значення a та b’); Readln(a, b); Case op of ‘+’: Writeln(‘Результат =’,a+b); ‘-’: Writeln(‘Результат =’,a-b); ‘*’: Writeln(‘Результат =’,a*b); ‘/’: Writeln(‘Результат =’,a/b); else Writeln(‘Невідома операція!’); end; End.
Циклічні алгоритми.Циклом називається повторення одних і тих самих дій. У мові Pascal є кілька різних операторів циклу. Розглянемо кожен із них. Оператор циклу For.Якщо потрібно повторити цикл наперед відоме число разів, то зручно використовувати оператор циклу for (для): for i:=n1 to n2 do <тіло циклу>; Змінна і називається змінною циклу, яка змінюється від значення n1 до n2 з кроком 1. Тобто, перший раз тіло циклу виконається для значення i=n1, другий раз для значення i=n1+1, і т.д. Останній раз тіло циклу виконається для значення i=n2. Якщо n1>n2, то тіло циклу не виконається жодного разу. Наприклад, рядок програми for i:=1 to 10 do Writeln('Цикл виконується ', i ,'-й раз !'); надрукує на екрані дисплея 10 повідомлень: Цикл виконується 1-й раз ! Цикл виконується 2-й раз ! . . . . . . . . . Цикл виконується 10-й раз ! Якщо потрібно щоб значення параметра циклу зменшувалось від більшого значення до меншого, то використовують такий варіант циклу for: for i:=5 downto 1 do Writeln('Через ', i ,' кроків закінчиться цикл !'); Крок, на який змінюється параметр циклу for завжди 1 (for-to) або -1 (for-downto). У наведених прикладах тіло циклу складалось із одного оператора. Якщо потрібно виконати в циклі цілий блок операторів, використовують операторні дужки begin-end. Наприклад, наступний фрагмент виводитиме на екран табличку значень функції на проміжку [-1; 1] з кроком 0.1. for i:=-10 to 10 do begin x:=i*0.1; y:=Sqr(x); Writeln('При х=',x:8:4,'y= ',y:8:4); end; Записи x:8:4 та y:8:4 означають, що для виведення дійсних чисел x та у відведеться 8 позицій, 4 з яких - для запису знаків після коми. Оператор циклу while.Якщо кількість повторень циклу невідома наперед, або якщо крок параметру циклу відмінний від одиниці, то використовують оператор циклу while (поки). Синтаксис оператора while такий: while <умова> do <тіло циклу>; По іншому оператор циклу while називають циклом із передумовою. Цикл виконується поки вказана <умова> приймає істинне значення (True). І як тільки умова прийме хибне значення (False), цикл припиниться і програма перейде на виконання наступного оператора. Наприклад, while c<>'q' do begin Writeln('Введіть значення'); Readln(c); end; У наведеному прикладі програма пропонуватиме ввести значення змінної с, поки з клавіатури не буде введено символ 'q'. Але, якщо перед початком циклу с буде дорівнювати 'q' тіло циклу не виконається жодного разу, так як умова c<>'q' прийме значення False. Оператор циклу repeat - untilУ випадках, якщо потрібно, щоб тіло циклу виконалось принаймні один раз, використовують цикл із післяумовою repeat - until (повторювати поки): repeat <тіло циклу> until <умова>; Тіло циклу обов'язково виконується перший раз, потім перевіряється вказана<умова>, і якщо вона виконується, то програма виходить з циклу, інакше тіло циклу повторюється до тих пір, поки умова не прийме значення True. Зазначимо, що<умова> в циклі repeat - until є умовою виходу із циклу, а в циклі while - умовою продовження циклу. Для однієї задачі ці умови є протилежними.
Організація циклів за допомогою оператора безумовного переходу goto
Оператор безумовного переходу goto дозволяє перейти на виконання іншого оператора (поміченого міткою) замість послідовного виконання команд. Синтаксис оператора безумовного переходу такий: goto <мітка>; Один із операторів програми повинен бути помічений вказаною міткою, а мітка обов'язково описана в розділі Label програми. Як організувати цикл за допомогою оператора goto, розглянемо на наступному прикладі: Program Example1; {малює на екрані 10 символів '*'//**********} Label L1; {описана мітка L1 в розділі Label} Var i: Integer; Begini:=0; L1:write('*'); {рядок помічений міткою L1} i:=i+1; {збільшуємо i на 1} if i<10 then goto L1;{якщо i<10, то переходимо на помічений міткою рядок} End. Будь-який циклічний процес можна запрограмувати без використання міток, за допомогою операторів циклу for, while та repeat-until. Приклади програм:Прикдад 6: Обчислити значення , x - дійсне, n - ціле. Врахувати випадок від'ємного n. Program pr6; Varx, p: Real; i, n: Integer; BeginReadln(n); p:=1; if n<0 then begin x:=1/x; n:=-n; end; for i:=1 to n do p:=p*x; Writeln('Значення х^n = ', p); End. Приклад 7: Знайти суму всіх парних натуральних чисел, що не перевищують деякого n і не діляться на 13. Program pr7; Var i, n, S: Integer;BeginWriteln('Введіть n'); Readln(n); S:=0; i:=2; while i<=n do begin if (i mod 13 <> 0) then S:=S+i; {додаємо до змінної S лише ті числа i, для яких остача від ділення на 13 відмінна від нуля} i:=i+2; {збільшуєм на 2, так як потрібно переглянути лише парні числа} end; Writeln('Значення суми = ', S); End. Приклад 8: Написати програму для вгадування числа від 1 до 100 задуманого програмою за допомогою генератора випадкових чисел Random. Функція Random(n) – повертає випадкове число від 0 до n-1. Program pr8; Uses crt;{підключаємо модуль crt, для використання функції random} Varx, y: Byte; BeginRandomize;{для того, щоб значення random не повторювались при новому запуску програми} x:=Random(100)+1;{повертає число від 1 до 100} repeat Writeln('Введіть число'); Readln(y); If x<y then Writeln(‘Задумане число менше !’) else If x>y then Writeln(‘Задумане число більше !’); Until x=y; Writeln(‘Ви відгадали !’); End.
Масиви даних Масивом називається впорядкована скінченна послідовність однотипних даних, які називаються елементами масиву. Тип даних може бути довільним. Порядок елементів в масиві задається набором індексів-чисел, які однозначно визначають місце елемента в масиві та забезпечують прямий доступ до його елементів. Масив характеризується іменем, типом даних, які його утворюють, вимірністю (кількістю індексів) та максимальним значенням кожного індекса. За вимірнісю розрізняють одновимірні (один індекс), двовимірні (два індекси) масиви і т.д. Для звертання до масиву досить вказати його ім’я, для доступу до його елемента вказують ім’я масиву та, у квадратних дужках, через кому, значення відповідних індексів даного елемента. Наприклад, B[1]-перший елемент масиву B, Y1[i]- i-й елемент масиву Y1, SS[5,2]-елемент двовимірного масиву SS, який стоїть на перетині п’ятого рядка та другого стовпчика. Будь-який масив, що використовується в програмі, повинен бути описаним в розділі описів прграми.При цьому вказується тип масиву та межі зміни його індексів. Опис має вигляд <ім´я масиву>: Array [список індексів] of <тип масиву>
Одновимірні масиви Приклади опису одновимірних масивів змінних: Var A, B: array [1..10] of Real; {A, B-одновимірні масиви дійсних чисел} N: array [1..10] of Integer; {N-одновимірний масив цілих чисел} P: array [1..10] of String [15]; {P-одновимірний масив рядкових змінних} Приклади опису одновимірних масивів констант: ConstX: array [1..10] of real=(1.2,-4.5,0.8,9.1,0.1,-6.4,3.9,-7.6,1.4,3.6); P: array [1..10] of String [15]=(‘Комаров’,’Степанчук’,…); Введення значень елементів одновимірного масиву зручно робити так: For i:=1 no 10 do Readln(A[i]); або з підказкою: For i:=1 no 10 do Begin Write(‘Введіть A’,i:1,’=’); Readln(A[i]); End; При цьому оператор Write виконує допоміжну роль, виводячи на екран пояснюючий текст. Надання значень елементам масиву можна здійснювати, використовуючи типізовані константи або шляхом присвоєння. Виведення на екран значень елементів масиву змінних можна виконати так: For i:=1 to 10 do Writeln(‘A’,i:1,’=’,A[i]:8:2); Тепер розглянемо приклади використання масивів при розв’ язку задач. Приклад 1. Протабулювати функцію в нерівновіддалених точках. Так як точки нерівновіддалені, то їх абсциси можуть бути задані масивом . Тоді програма обчислення значень функції при відомих може мати наступну структуру: Program tabul; Const n=10; VarX:array[1..n] of real; Y:real; i:integer; Begin{Введення елементів масиву Х} for i:=1 to n do readln(x[i]); {Обчислення значень функції} for i:=1 to n do begin y:=x[i]+sin(abs(x[i])); writeln(y:10:2,x[i]:6:2) end; End. Приклад 2. Нехай в одновимірному масиві {}потрібно обчислити суму додатніх і суму від´ємних елементів масиву. Враховуючи, що нульовий елемент суми не змінює, програма розв´язку даної задачі матиме наступний вигляд: Program sum; Const n=20; VarX:array[1..n] of real; sd,sv:real; i:integer; Begin{Введення елементів масиву Х} for i:=1 to n do readln(x[i]); sd:=0; sv:=0; {Обчислення суми додатніх та від´ємних елементів масиву x} for i:=1 to n do if x[i]>0 then sd:=sd+x[i] else sv:=sv+x[i]; writeln(‘Сума додатніх елементів масиву =’,sd:8:2, ‘Сума від´ємних елементів масиву=’,sv:8:2); End. Приклад3. В цьому прикладі розглянемо задачу обчислення мінімального елементу масиву та його місцезнаходження.Процес знаходження мінімального елементу побудуємо як процес багаторазового порівняння мінімального елементу з наступним вибраним елементом масиву. В якості такого мінімального елементу на початку візьмемо перший елемент масиву. Тоді програма розв´язку задачі матиме наступний вигляд: Program min; Const n=20; VarX:array[1..n] of real; min:real; i,k:integer; Begin{Введення елементів масиву Х} for i:=1 to n do readln(x[i]); {Обчислення мінімального елемету в масиві Х} min:=x[1]; k:=1; for i:=2 to n do if min>x[i] then begin min:=x[i]; k:=i end; writeln(‘Значення мінімального елементу масиву =’,min:8:2,’ ,його індекс=’,k) End.
Двовимірні масиви Як і для одновимірних масивів опис двовимірного масиву може задаватись через типізований масив або безпосередньо. Структура опису через типізований масив така: Type mass=array[1..m,1..n] of real; Var x,y:mass; Безпосередньо опис масивів можна задати у такому вигляді: Var x,y:array[1..m,1..n] of real; Матриця В дійсних чисел розмірності 4*4, заповнена значеннями
може бути описана так:
Const B:array[1..4,1..4] of Real= ((2.5,3.6,6.4,9.5), (4.0,3.2,7.8,8.0), (1.0,5.4,3.6,2.0), (1.9,2.1,1.7,3.7)); Введення значень двовимірногомасиву можна здійснити так: For i:=1 to 4 do Begin For j:=1 to 4 do Read(B[i,j]); writeln; end; Виведення на екран значень елементів двовимірного масиву організовується так: For i:=1 to 4 do Begin For j:=1 to 4 do write(B[i,j]:8:2); writeln; end; Приклад 4. Записати програму знаходження максимального елемента в матриці і його індексів. Програма розв´язку поставленої задачі буде такою: Program max; Const m=4;n=4; VarX:array[1..m,1..n] of real; max:real; i,j,imax,jmax:integer; Begin{Введення елементів матриці Х} for i:=1 to m do for j:=1 to n do readln(x[i,j]); {Обчислення максимального елемету в матриці Х} max:=x[1,1]; imax:=1; jmax:=1; for i:=1 to m do for j:=1 to n do if x[i,j]>max then begin max:=x[i,j]; imax:=i; jmax:=j; end; writeln(‘Значення максимального елементу матриці =’,max:8:2,’Він розміщений в’,imax:2,’рядку і’,jmax:2,’стовпчику’) End. Процедури та функції у мові Pascal.При розробці програми часто виникає необхідність поділити програму на функціонально незалежні частини, підпрограми. Використання підпрограм дозволяє розробляти програму частинами цілій групі розробників, полегшує читабельність та відладку програми, забезпечує можливість модульного програмування. Підпрограмою називають частину програми, яка є самостійною одиницею і, по суті, сама може бути програмою. В мові Pascal є два види підпрограм: процедури та функції. Різниця між ними полягає у тому, що, на відміну від процедур, функції самі можуть приймати певне значення. Процедури та функції описуються в описовій частині програми і можуть мати всі ті розділи, що і основна програма. В описовій частині процедур знову можуть бути описані деякі процедури. Дані, описані в розділах процедури або функції можуть використовуватись лише всередині підпрограми. Тому їх називають локальними даними. Змінні, описані у основній програмі можуть використовуватись і у підпрограмі. Такі змінні називають глобальними. Процедура – це підпрограма, яка має будь-яку кількість вхідних і вихідних даних. Для обміну інформацією між процедурою і програмою, що її викликає, використовуються параметри, які потрібно описати в заголовку процедури. Процедура може бути описана з параметрами та без них. Процедури без параметрівОпис процедури без параметрів має такий вигляд: Procedure <ім’я процедури>; Const{опис локальних констант}Type{опис локальних типів} Var {опис локальних змінних}Begin{тіло процедури} End;Розглянемо приклад процедури без параметрів Line, що малює на екрані в текстовому режимі горизонтальну лінію, утворену символами ‘*’. Program Example2; Procedure Line; Vari: Integer; BeginFor i:=1 to 79 do Write(‘*’); Writeln; End;BeginLine; Writeln(‘Механічний факультет’); Line; End.Програма почне виконуватись з оператора, розміщеного після слова Begin основної програми. У нашому прикладі цим оператором є виклик процедури Line. При цьому програма перейде на виконання тіла процедури Line. Тобто, виконається послідовність операторів, записана між словами Begin та End процедури Line. В результаті, на екрані дисплею буде намальовано горизонтальну лінію символом ‘*’. Після завершення виконання процедури Line продовжиться виконання основної програми. Оператор Writeln виведе на екран заданий текст ‘Механічний факультет’. І знову відбудеться виклик процедури Line, яка намалює на екрані другу горизонтальну лінію символом ‘*’. Процедури з параметрамиДля передачі даних у процедуру та отримання з неї результатів використовуються формальні та фактичні параметри. Формальні параметри – це умовні позначення в заголовку процедури. Реальні значення, які вказуються у дужках при виклику процедури і конкретизують значення формальних параметрів називають фактичними. Кількість фактичних та формальних параметрів повинна співпадати, відповідні параметри повинні узгоджуватись за типами. Нехай до попередньої програми ми хочемо додати можливість побудови лінії за допомогою різних символів та різної довжини. Тоді використаємо наступну процедуру з двома параметрами: Program Example3; Procedure Line(с: Char; n: Integer); Vari: Integer; BeginFor i:=1 to n do Write(c); Writeln; End;BeginLine(‘-’,20); Writeln(‘Механічний факультет’); Line(‘+’,15); End.Змінні с та n – формальні параметри, які при першому виклику процедури набувають фактичних значень ‘-’ та 20, а при другому – ‘+’ та 15. У даному прикладі ми передаємо значення параметрів лише у процедуру. Така передача параметрів називається передачею по значенню. Тому, фактичні параметри можуть бути не обов’язково змінними, а й виразами відповідного типу. Якщо ж ми хочемо не тільки передати, а й повернути результат із процедури у основну програму, то потрібно використовувати передачу параметра по імені. Для цього перед іменем змінної при описанні процедури слід вказати ключове слово var. Якщо слова var немає, то параметри передаються по значенню. Фактичний параметр, що передається у процедуру по імені обов’язково повинен бути змінною. Розглянемо приклад процедури, що повертає мінімум із двох дійсних чисел: Procedure Min (a, b: Real; var m: Real); BeginIf a<b then m:=a else m:=b; End.Викликом процедури Min може бути Min(3,102,x), Min(x, y, x), але не Min(x, y, 2). Перші два параметри a та b передаються по значенню лише у процедуру. Третій параметр m передається по імені. Його значення повертається у викликаючу частину програми. Громіздкі структури даних рекомендується передавати по імені з метою економії оперативної пам’яті. Функції в мові PascalФункції цілком аналогічні процедурам, за виключенням того, що вони самі можуть приймати значення. У функцію так само як і в процедуру параметри можуть передаватись як по імені, так і по значенню. Опис функції має такий вигляд: Function <назва функції>(<список параметрів>):<тип результату>; {опис локальних даних} Begin{тіло функції} End; Розглянемо попередній приклад з використанням функції. Program Example4; Function Min (a, b: Real):Real; BeginIf a<b then Min:=a else Min:=b; End;Varx, y: Real; BeginReadln(x, y); x:=Min(x, y) Writeln(‘Min=’, x); End.Приклади програмПриклад 9: Написати функцію для перевірки чи є натуральне число простим. Використовуючи дану функцію, вивести всі прості числа від 1 до n. Program p9; Function Simple (a: Word):Boolean; {передача параметрів по значенню} Vari: Word; b: Boolean; Begini:=2; b:=True; i:=2; While b and (i<=Round(Sqrt(a))) do Begin b:= (a mod i <> 0); i:=i+1; End; Simple:=b; End;Vari, n: Word; BeginWriteln(‘Введіть n’); Readln(n); For i:=2 to n do If Simple(i) then Write(i:5); End.Приклад 10: Написати програму, яка впорядковує значення змінних a, b, c по зростанню. Program p10; Procedure Sort (var a, b: Integer); {передача параметрів по імені} Var d: Integer;BeginIf a>b then begin d:=a; a:=b b:=d; end End;Vara, b, c: Integer; BeginWriteln(‘Введіть a, b, c’); Readln(a, b, c); Sort(a, b); Sort(a, c); Sort(b, c); Writeln(a, b, c); End.
Правила виконання та оформлення контрольної роботи
Виконання контрольної роботи спрямоване на перевірку та закріплення знань, які отримані студентом при самостіному вивченні курсу. Номер варіанту складають дві останні цифри номера залікової книжки студента. При оформленні роботи умову кожного завдання необхідно записати повністю. Відповідь на перше питання повинна бути обсягом 1-2 сторінки. Розв´язками інших завдань служать алгоритми у вигляді блок-схем та тексти PASCAL-програм із необхідними поясненнями використаних студентом об´єктів програми. Студент допускається до іспиту лише при наявності позитивної рецензії та відмітки про допуск контрольної роботи до співбесіди.
Таблиця варіантів завдань.
Завдання контрольної роботи
Завдання №1. Програмне забезпечення персонального комп´ютера.Підготувати реферат обсягом на 1-2 сторінки, який висвітлює нижче наведене питання:
Завдання №2. Розгалужені алгоритми. До даного завдання скласти алгоритм та написати програму мовою Pascal з виведенням результатів на екран:
, , . Знайти мінімальне число. Значення задати довільні.
, , . Знайти максимальне число. Значення задати довільні.
, , . Вибрати серед них від’ємні та надрукувати їх та квадратні корені з їх модулів. Значення задати довільні.
, , . Вибрати серед них ті, що належать проміжку [- 4,7]. Значення задати довільні.
.
.
.
.
.
Завдання №3. Циклічні алгоритми. До даного завдання скласти алгоритм та написати програму мовою Pascal з виведенням результатів на екран:
.
Завдання №4. Обробка одновимірних та двовимірних масивів. До даного завдання скласти алгоритм та написати програму мовою Pascal з виведенням результатів на екран:
б) Вивести на друк кількість всіх від´ємнх елементів матриці
одновимірного масиву А. Знайти найбільший прибуток підприємства за місяць, якщо А=(38.6; 53.8; 25.6; 88.5; 36.6; 39.8; 31.1).
б) Замінити нулями всі додатні елементи матриці і вивести на друк нову матрицю.
одновимірного масиву А. Знайти загальний прибуток малого підприємства, якщо А=(27.8; 34.5; 35.5; 36.9; 67.4; 46.6; 27.8).
б) Замінити всі нулі матриці числом 34 івивести на друк нову матрицю.
б) Всі додатні елементи матриці збільшити на 10 і вивести на друк дану матрицю і перетворену матрицю.
б) Вивести на друк середнє арифметичне всіх елементів матриці і саму матрицю А.
б) Всі від´ємні елементи матриці замінити на 25 і вивести на друк перетворену матрицю.
б) Вивести на друк суму двох матриць і .
б) Вивести на друк різницю двох матриць .
б) Знайти квадрат найбільшого елемента масиву .
б) В матриці знайти суму елементів, що лежать вище головної діагоналі.
б) В матриці знайти добуток елементів головної діагоналі.
б) В матриці поміняти місцями перший і другий стовпці.
б) В квадратній матриці підрахувати і вивести на друк окремо суму додатніх та від´ємних елементів, підрахувавши при цьому їх кількість.
б) В заданому масиві підрахувати окремо суму кожного стовпця. З отриманих сум сформувати масив Х.
б) Провести перетворення матриці таким чином: додатні елементи замінити на число 0, від´ємні – на число 1, нульові – на число 3.
б) Транспонувати матрицю (зробити рядки стовпцями) .
б) Вивести на друк у вигляді масиву Х всі невід´ємні елементи матриці .
б) В матриці знайти найбільший елемент і вивести на друк разом з його індексами.
б) Всі елементи другого стовпця матриці збільшити в два рази і вивести на друк отриману матрицю.
б) Задана матриця . Сформувати нову матрицю Х, кожен елемент якої обчислюється за формулою: , де - найбільший елемент матриці Y.
Завдання №5. Використання підпрограм-процедур і підпрограм- функцій. Записати програму розв´язку задачі. Процедуру обчислень, що повторюються, записати у вигляді підпрограми.
Координати десяти точок на площині задані двома масивами: Х=(-4;3;-2.5;0.5;1.5;6;-5;5;-4.5;3.5), Y=(-3;-2;6.5;5;-4;3.5;-2;6;2.5;-4.5). Написати програму з використанням підпрограми-процедури або підпрограми-функції для наступних завдань (завдання 6-15):
КомментарииКомментариев пока нет Пожалуйста, авторизуйтесь, чтобы оставить комментарий. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||