КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Приклад 12.4
Приклад 12.3 Приклад 12.2. Результати прикладу 12.1. У наведеному прикладі значення змінної d1 буде послідовно приймати значення від Monday до Sunday, а на екран в залежності від того яке значення надано змінній d1 будуть виводитися сталі рядкового типу Vyhidnyj або robochyj. Змінній dir не було надано значення, тому ні одна з умовних інструкцій не виконується. Спосіб надання значень змінним перелічувального типу Для надання значень змінним перелічувального типу можна використовувати інструкції привласнення. Суттєвий недолік даних перелічувального типу Дані перелічувального типу не можна вводити і виводити за домогою відповідно інструкцій Read (Readln) та Write (Writeln). Створити одновимірний масив, індексами якого будуть назви місяців, а елементами кількість днів відповідного місяця. Приклад 12.2. (розділ об’яв)
Program masiv_perelichuvalnyj; uses crt; Type m=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); days=1..31; var a: array[m] of days; t:m; Приклад 12.2. (розділ інструкцій)
Begin clrscr; for t:=jan to dec do case t of jan,mar,may,jul,aug,oct,dec: a[t]:=31; apr,jun,sep,nov: a[t]:=30; feb: a[t]:=28;end; for t:=jan to dec do writeln('m=',ord(t)+1, ' d=',a[t]); end. Задано type week=(mo,tu,we,th,fr,sa,sy); var year:array[1..365] of week; Визначити назву того дня тижня, на який випадає і-тий день невисокосного року, якщо 1 січня-середа. Program dni_roku; type week=(mo,tu,we,th,fr,sa,su); var year:array[1..365] of week; i,m,n:integer; t:week; f:text; begin assign(f,'dni_new.pas'); rewrite(f); for i:=2 to 365 do begin case year[i-1] of tu: year[i]:=we; we: year[i]:=th; th: year[i]:=fr; fr: year[i]:=sa; sa: year[i]:=su; su: year[i]:=mo; mo: year[i]:=tu; end; if year[i]=mo then writeln(f,'i=',i,' y=mo') else if year[i]=tu then writeln(f,'i=',i,' y=tu') else if year[i]=we then writeln(f,'i=',i,' y=we') else if year[i]=th then writeln(f,'i=',i,' y=th') else if year[i]=fr then writeln(f,'i=',i,' y=fr') else if year[i]=sa then writeln(f,'i=',i,' y=sa') else if year[i]=su then writeln(f,'i=',i,' y=su'); end; close(f); End. По заданій даті (число, місяць(цифра), рік) визначити дату наступного дня. Приклад 12.4 (розділ об’яв) program data; type month=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); day=1..31; year=1900..2000; var d:day; m:month; y:year; number:1..12; Приклад 12.4 (розділ інструкцій) begin Readln(d,number,y); case number of 1: m:=jan; 2: m:=feb; 3: m:=mar; 4: m:=apr; 5: m:=may; 6: m:=jun; 7: m:=jul; 8: m:=aug; 9: m:=sep; 10: m:=oct; 11: m:=nov; 12: m:=dec; end; case m of jan,mar,may,jul,aug,oct: if d=31 then begin d:=1; m:=succ(m); end else d:=d+1; apr,jun,sep,nov: if d=30 then begin d:=1; m:=succ(m);end else d:=d+1; dec:if d=31 then begin d:=1; m:=jan; y:=y+1; end else d:=d+1; feb: if (d=28) and (y mod 4<>0) then begin d:=1; m:=mar; end else if (d=29) then begin d:=1; m:=mar; end else d:=d+1; end; write(d:2); case m of jan: write('jan'); feb: write('feb'); mar: write('mar'); apr: write('apr'); may: write('may'); jun: write('jun'); jul: write('jul'); aug: write('aug'); sep: write('sep'); oct: write('oct'); nov: write('nov'); dec: write('dec'); end; writeln(y:5,'year'); end. Дані та результати програми 29 02 2009 30feb 2009 year 29 02 2009 1mar 2000 year 28 02 1996 29feb 1996 year 29 02 1996 1mar 1996 year 30 03 2009 31mar 2009 year 31 03 2009 1apr 2009 year Лекція 13 Двовимірні масиви Приклад 13.1. Задано матрицю А. Скласти програму обчислення матриці В=А2 та суми елементів кожного рядка матриці В. Матриці А і В мають розмірність (3 3). Cхему алгоритму представлено на рис. 9.1. program masrab2; type mas1=array[1..3] of integer; mas2=array[1..3,1..3] of integer; var y:mas1; a,b:mas2; b0,j,i,k:integer; begin for i:=1 to 3 do for j:=1 to 3 do read(a[i,j]); for i:=1 to 3 do begin for j:=1 to 3 do begin b0:=0; for k:=1 to 3 do b0:=b0+a[i,k]*a[k,j]; b[i,j]:=b0; write(b[i,j],' '); end; writeln; end; for i:=1 to 3 do begin b0:=0; for j:=1 to 3 do b0:=b0+b[i,j]; y[i]:=b0; writeln(y[i]); end; end.
Приклад 13.2. Задано матрицю C, яка має розмірність (4 3). Знайти найменший елемент матриці C та записати нулі в рядок і стовпчик на перетині яких знаходиться цей елемент. Cхему алгоритму представлено на рис. 13.2. Файл c:\bp\bin\pryklad\lecture\masiv\mminnul.pas program masprim20_4; uses crt; type mas2=array[1..4,1..3] of real; var c:mas2; s,t:text; j,i,stb,str:integer; min:real; begin clrscr; assign(S,'mminnuld.pas'); reset(S); assign(T,'mas2nrez.pas'); rewrite(T); Writeln(t,'masiv c'); for i:=1 to 4 do begin for j:=1 to 3 do begin read(s,c[i,j]); write (t,c[i,j]:6:2); end; writeln(t); end; min:=c[1,1]; for i:=1 to 4 do begin for j:=1 to 3 do begin if c[i,j]<min then begin min:=c[i,j]; str:=i; stb:=j; end; end; end; for i:=1 to 4 do if i<>str then c[i,stb]:=0; for j:=1 to 3 do if j<>stb then c[str,j]:=0; writeln (t,' new matrix '); for i:=1 to 4 do begin for j:=1 to 3 do write (t,c[i,j]:6:2); writeln(t); end; close(t); end. Файл даних c:\bp\bin\pryklad\lecture\masiv\mminnuld.pas 2.2 3.4 0.8 2.3 4.5 7.6 7.1 1.1 5.4 0.95 0.01 5.76 Файл результатів c:\bp\bin\pryklad\lecture\masiv\mas2nrez.pas
Рис.9.2
Приклад 13.3 Задано матрицю А, яка має розмірність (3х 3). Знайти найбільший та найменший елементи цієї матриці та номери їх рядків. Поміняти місцями рядок, що містить найбільший елемент, з рядком, який містить найменший елемент. Cхему алгоритму представлено на рис. 13.3 program mas2rab; {perestanovka mestami strok s max i min elementami} uses crt; const n=3; type mas2=array[1..n] of real; var a:array[1..n] of mas2; s,t:text; j,i,k,rmax,rmin:integer; per,max,min:real; begin clrscr; assign(S,'mas1dat.pas');reset(S); assign(T,'masrerez.pas');rewrite(T); Writeln(t,'masiv a'); for i:=1 to n do begin for j:=1 to n do begin read(s,a[i,j]); write (t,a[i,j]:6:2); end; writeln(t); end; writeln (t,'max element'); max:=a[1,1]; rmax:=1; min:=a[1,1]; rmin:=1; for i:=1 to n do for j:=1 to n do begin if a[i,j]> max then begin max:=a[i,j]; rmax:=i; end; if a[i,j]< min then begin min:=a[i,j]; rmin:=i; end; end; writeln (t,max:6:2,min:6:2); writeln (t,' perestanovka '); for j:=1 to n do begin per:=a[rmax,j]; a[rmax,j]:=a[rmin,j]; a[rmin,j]:=per; end; for i:=1 to n do begin for j:=1 to n do write (t,a[i,j]:6:2); writeln (t); end; close(t); end. 'mas1dat.pas' 2.2 3.4 0.8 2.3 4.5 7.6 7.1 1.1 5.4 masiv a 2.20 3.40 0.80 2.30 4.50 7.60 7.10 1.10 5.40 max element 7.60 0.80 perestanovka 2.30 4.50 7.60 2.20 3.40 0.80 7.10 1.10 5.40
Приклад 13.4 Задано матрицю А, яка має розмірність (5 5). Знайти локальні мінімуми цієї матриці. Cхему алгоритму представлено на рис.13.4. Program localmin; uses crt; const n=5; var a: array[1..n,1..n] of real; min,c:real; k,l,i,j:integer; f,f1:text; Begin clrscr; assign (f, 'lokaldat.pas'); reset(f); assign (f1,'lokalrez.pas'); rewrite(f1); for i:=1 to n do begin for j:=1 to n do begin read (f,a[i,j]); write (f1,a[i,j]:5:2); end; writeln (f1); end; for i:=2 to n-1 do for j:=2 to n-1 do begin min:=a[i,j]; for k:=(i-1) to (i+1) do for l:=(j-1) to (j+1) do if (min>a[k,l]) then min:=a[k,l]; writeln (f1,'min[',k,',',l,']=',min:5:2); end; close(f1); end. 2.20 3.40 0.80 2.30 4.50 min[3,3]= 0.60 min[4,5]= 0.20 7.60 7.10 1.10 5.40 0.20 min[3,4]= 0.60 min[5,3]= 0.10 1.10 4.50 0.60 8.90 5.20 min[3,5]= 0.20 min[5,4]= 0.10 3.10 3.40 0.50 9.80 1.90 min[4,3]= 0.50 min[5,5]= 0.50 7.60 0.10 6.10 4.70 8.30 min[4,4]= 0.50 Приклад 13.5 Задано матрицю розмірності 4х5,елементами якої є дійсні числа. Впорядкувати її рядки по зростанню перших елементів кожного рядка. Program TP_11; TYPE st=array[1..5] of real; mat=array[1..4] of st; var a:mat;x:st;i,j,k:integer; f,f1:text; Begin assign(f,'matr1.pas');reset(f); assign(f1,'rezultat1.pas');rewrite(f1); for i:=1 to 4 do begin for j:=1 to 5 do begin read(f,a[i,j]);write(f1,a[i,j]:8:2);end; writeln(f1);end; for k:=4 downto 2 do begin j:=1; for i:=2 to k do if a[i,1]>a[j,1] then j:=i; x:=a[k];a[k]:=a[j];a[j]:=x;end; writeln(f1,'rezultat'); for i:=1 to 4 do begin for j:=1 to 5 do begin write(f1,a[i,j]:8:2);end;writeln(f1);end; close(f1);end. -2 3 8 10 -12 15 -3 5 -25 36 -13 37 9 28 -5 5 7 10 -3 6 Файл результатів rezultat -2.00 3.00 8.00 10.00 -12.00 -13.00 37.00 9.00 28.00 -5.00 15.00 -3.00 5.00 -25.00 36.00 -2.00 3.00 8.00 10.00 -12.00 -13.00 37.00 9.00 28.00 -5.00 5.00 7.00 10.00 -3.00 6.00 5.00 7.00 10.00 -3.00 6.00 15.00 -3.00 5.00 -25.00 36.00 Лекція 14 Підпрограми Підпрограма у алгоритмічній мові Pascal. Алгоритмічна мова Pascal має засоби, завдяки яким можна оформлювати послідовність інструкцій, як підпрограму. Підпрограма у алгоритмічній мові Pascal – це частина програми, яку оформлено у вигляді окремої синтаксичної конструкції і цій конструкції програмістом надане ім'я. Виклик підпрограми. “Виклик” підпрограми, тобто виконання дій, заданих у підпрограмі у вигляді інструкцій, можна виконати у будь-якій частині програми і довільну кількість разів, вказавши ім'я цієї підпрограми. Опис підпрограми Опис підпрограми розташовується у розділі об'яв програми, завершуючи опис об'єктів програми і складається з трьох основних частин: Заголовку підпрограми; Розділу об'яв локальних змінних, які використовуються підпрограмою. Ця частина може бути відсутня. Розділу інструкцій (тіла підрограми), які і виконують обчислення. Два види підпрограм Розрізняють два види підпрограм - підпрограми-процедури та підпрограми-функції (у подальшому просто процедури та функції). Усі процедури і функції поділяються на два класи: стандартні і визначені користувачем. Стандартні процедури і функції Стандартні процедури і функції є частиною алгоритмічної мови (наприклад, sin(x), exp(x), процедури і функції, що реалізують роботу з даними рядкового типу) і тому не вимагають попереднього опису. Структура процедури і функції Маючи подібну структуру процедури і функції, відрізняються призначенням і засобом їхнього використання. Структура заголовків процедур та функцій Структура заголовків процедур та функцій дуже схожа. Починаються вони службовим словом, яке визначає вид підпрограми, далі слідує ім'я цієї підпрограми, за яким у дужках розташовуються формальні параметри (хоча вони можуть бути відсутні). Функція Для функцій необхідно вказати тип результата, який вони повертають у основну програму. Вказується тип після двокрапки за дужками з формальними параметрами. Тіло функції повинно включати інструкцію, у якій імені функції привласнюється результат обчислень Заголовок підпрограми За заголовком підпрограми, як і у програмі слідує розділ об'яв локальних змінних, які використовуватимуться у даній підпрограмі. Далі слідує тіло підпрограми, яке розташовується між операторними дужками begin…end. Підпрограма Підпрограма лише формалізує алгоритм обчислень, а виконуються обчислення лише після виклику підпрограми з основної програми. Виклик підпрограми відбувається після вказування імені відповідної підпрограми з фактичними параметрами у основній програмі.
Дата добавления: 2014-01-07; Просмотров: 241; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |