http://liis.lv/nps Язык Паскаль, названный в честь французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-71 годах швейцарским ученым Никлаусом Виртом на кафедре информатики Стэнфордского университета (Цюрих). В настоящее время это язык имеет более широкую сферу применения, чем предусматривалось при его создании. Язык программирования Паскаль является первым в мире языком структурного программирования. Он разработан в 197Ø году профессором из Цюриха Никлаусом Виртом, автором идеи использовании в программировании так называемых структур. Первоначально Паскаль предназначался для обучения студентов программированию, но впоследствии язык нашел более широкое применение. Первая реализация для РС появилась в 1983 году. С тех пор вышло более 1Ø реализаций под операционную систему MS-DOS и почти столько же под Windows. Продолжением реализаций Паскаля стала интеграционная среда разработки программ «Delphi». Saturs: 1. Общий вид программы на Паскале.........................................................................................................2 2. Окно среды разработчика ........................................................................................................................3 3. Основные команды и горячие клавиши ..................................................................................................3 4. Простые типы данных ..............................................................................................................................4 5. Ievads programmēšanā..............................................................................................................................5 5.2 nodarbība. Piešķiršanas operatora lietošana, mainīgo lielumu vērtību maiņa. ....................................7 3. Izvēles konstrukcija CASE… OF.. END ...................................................................................................14 Oператор выбора ................................................................................................................................14 3. Sazarojuma konstrukcija IF-THEN-ELSE. ...............................................................................................18 K-2 1. variants. .............................................................................................................................................44 K-2 2.variants. ..............................................................................................................................................45 1. Общий вид программы на Паскале Программа на Паскале может состоять из следующих разделов: program заголовок программного модуля. program MyFirstPascalProgram; uses раздел подключения библиотечных модулей uses CRT, Graph, DOS; label раздел описания меток Использование переходов по меткам противоречит принципам структурного программирования, поэтому в данном курсе не рассматривается. const раздел описания констант Константа – постоянная величина в программе. const A = 5; B = ’*****’; E : array[1..2,Ø..1] of char = (('a','b'),('c','d')); type раздел описания собственных типов Раздел будет рассмотрен позже. var раздел описания переменных var A : integer; B : char; Некоторые стандартные типы переменных: shortint - целое в диапазоне –128…127 integer - целое в диапазоне –32768…32767 longint - целое в диапазоне –2147483648…2147483647 byte - целое в диапазоне Ø…255 word - целое в диапазоне Ø…65535 real - вещественное в диапазоне 2.9•1Ø-39…1.7•1Ø38 char - символьное значение из таблицы ASCII Такие типы данных, как: array, boolean, file, record и string будут рассмотрены позже. Тип set используется для представления множеств. procedure раздел описания собственных процедур Раздел будет рассмотрен позже. function раздел описания собственных функций Раздел будет рассмотрен позже. begin - end. раздел программного кода В данном разделе описывается последовательность операторов для реализации основного алгоритма программы. 2. Окно среды разработчика Основной экран интегрированной среды разработчика Turbo Pascal 7.0 выглядит следующим образом: Строка меню активизируется нажатием клавиши F10. В меню содержатся следующие разделы: File. Позволяет выполнять все основные действия с файлами (создание, открытие, сохранение ..) Edit. Позволяет выполнять все основные операции редактирования текста (копирование, вставка, удаление фрагментов, отмена последних изменений ..) Search. Позволяет осуществлять поиск и замену фрагментов текста. Run. Позволяет запускать программу, в том числе в пошаговом режиме. Compile. Позволяет осуществлять компиляцию программы. Debug. Содержит команды, облегчающие процесс поиска ошибок в программе. Tools. Содержит некоторые дополнительные средства Турбо Паскаль. Options. Позволяет установить необходимые для работы параметры компилятора и среды разработчика. Window. Позволяет выполнять все основные операции с окнами (открывать, закрывать, перемещать, изменять размер). Help. Позволяет получить имеющуюся в системе справочную информацию. Все пункты меню доступны через горячие клавиши. Для этого надо нажать клавишу Alt и ту букву, которая выделена красной в названии пункта меню. Меню также позволяет работать с мышью. 3. Основные команды и горячие клавиши Ctrl+F9 – запуск программы Alt+F5 – просмотр пользовательского экрана F2 – сохранение программы F3 – открытие сохраненной программы Alt+F3 – закрытие активного окна Alt+X – выход из Турбо Паскаль F1 – контекстная помощь Ctrl+F1 – справка об операторе, на котором установлен курсор Alt+Backspace – отмена последнео изменения Ctrl+Y – удаление строки Shift+стрелки – выделение блока текста Ctrl+Insert – копирование выделенного блока в буфер Shift+Insert – вставка из буфера 4. Простые типы данных Идентификатор Длина (байт) Диапазон значений Целые типы integer 2 byte 1 word 2 shortint 1 longint 4 Операции +, -, /, *, Div, Mod, >=, <=, =, <>, <, > +, -, /, *, Div, Mod, 0..255 >=, <=, =, <>, <, > +, -, /, *, Div, Mod, 0..65535 >=, <=, =, <>, <, > +, -, /, *, Div, Mod, -128..127 >=, <=, =, <>, <, > +, -, /, *, Div, Mod, -2147483648..2147483647 >=, <=, =, <>, <, > -32768..32767 Вещественные типы real 6 single 4 double 8 extended 10 +, -, /, *, >=, <=, =, <>, <, > +, -, /, *, 1,5×10-45 – 3,4×1038 >=, <=, =, <>, <, > +, -, /, *, 5×10-324 – 1,7×10308 >=, <=, =, <>, <, > +, -, /, *, 3,4×10-4932 – 1,1×104932 >=, <=, =, <>, <, > 2,9×10-39 – 1,7×1038 Логический тип boolean 1 true, false Not, And, Or, Xor, >=, <=, =, <>, <, > все символы кода ASCII +, >=, <=, =, <>, <, > Символьный тип char 1 http://liis.lv/nps 1. Ievads programmēšanā. Program Uzd1; {programmai tiek piešķirts nosaukums funkc1} Uses Crt; {programmai tiek piesaistītas TurboPascal standartbibliotēkas (skat. 1.3. Programmas struktūra)} Var A, B, C : Integer; {tiek nodefinēti visi programmā...} {...izmantotie mainīgie un to tipi (skat. 1.9. Pascal datu tipi)} Begin {galvenā programmas bloka sākums} Writeln ( 'Ievadi skaitli A' ); {Solis S1. Paziņojuma izvadīšana monitorā} Readln (A); Writeln ( 'Ievadi skaitli B' ); Readln (B); {mainīgo ievadīšana no klaviatūras} C :=A*B; {Solis S2.Mainīgajam x tiek piešķirta vērtība} Writeln ( ' C vertiba ir ' , {Solis S3.Mainīgajam y tiek piešķirta vērtība} {Solis S4.Mainīgajam t tiek piešķirta vērtība} C ); {Solis S5.Paziņojuma izvadīšana monitorā un...} {...mainīgā t vērtības izvadīšana monitorā} Readln; End. {programmai tiek piešķirts nosaukums funkc1} Program Udevums1; Uses Crt; {programmai tiek piesaistītas TurboPascal standartbibliotēkas (skat. 1.3. Programmas struktūra)} Var A, B, C, x, y, t : Integer; {tiek nodefinēti visi programmā...} {...izmantotie mainīgie un to tipi (skat. 1.9. Pascal datu tipi)} Begin {galvenā programmas bloka sākums} Writeln ( 'Ievadi skaitlus a, b, c' ); {Solis S1. Paziņojuma izvadīšana monitorā} {mainīgo ievadīšana no klaviatūras} Readln (A, B, C); x :=2*A*B; {Solis S2.Mainīgajam x tiek piešķirta vērtība} y :=5*C; {Solis S3.Mainīgajam y tiek piešķirta vērtība} t :=x+y; {Solis S4.Mainīgajam t tiek piešķirta vērtība} Writeln ( ' Funkcijas 2ab+5c vertiba ir ' , t ); {Solis S5.Paziņojuma izvadīšana monitorā un...} {...mainīgā t vērtības izvadīšana monitorā} Readln; End. 1.1 nodarbība. Informācijas izvadīšana uz monitora ekrāna un informācijas ievadīšana no tastatūras. Izmantotie operatori, funkcijas un procedūras: READLN, WRITELN, GOTOXY, CLRSCR. Piemēri: 1. Sastādi programmu, kas prasa lietotājam ierakstīt savu vārdu un izvada uz ekrāna paziņojumu, kurā iekļauts ievadītais vārds. program v111; uses crt; var vards:string; begin clrscr; writeln ('Ieraksti savu vardu! '); readln (vards); write ('Sveiki, ',vards,', apsveicu ar ieklusanu programmesanas valstiba!'); readln; end. Jautājumi: 1. Kā mainās programmas darbība, ja operatoram „writeln” noņem pēdējos 2 simbolus? 2. Kāda atšķirība operatoriem WRITE un WRITELN? 3. Kas ar WRITE operatoru tiek izvadīts uz ekrāna mainīgā „vards” vietā? 4. Kāda atšķirība izvadot mainīgā vērtības un tekstus (simbolu virknes)? 5. Kāda nozīme operatoram READLN bez mainīgā nosaukuma? 2. Pārveido iepriekšējo programmu, lai teksts uz ekrāna tiktu izvadīts atstatus no ekrāna malām. Piezīme: figūriekavās ievietoto tekstu programma ignorē, šos tekstus izmanto kā komentārus. program v112; uses crt; var vards,v:string; begin clrscr; {notira ekranu} gotoxy (25,5); {novieto kursoru 25. rinda un 5. kolona} write ('Ieraksti savu vardu! '); {izvada apastrofos ieklauto tekstu no tas vietas, kur bija novietots kursors} readln (vards); {gaida, kamer lietotajs ievadis simbolu virkni, to pieskir mainigajam "vards".} gotoxy (5,8); {novieto kursoru 5. kolona un 8. rinda} write ('Sveiki, ',vards,', apsveicu ar ieklusanu programmesanas valstiba!'); {izvada apastrofos ievietoto tekstu un mainīgā “vards” vērtību} readln; {partrauc programmas izpildi lidz "enter" nospiesanai} end. {programmas beigas.} 3. Sastādi programmu, kas no zvaigznītēm izveido uz ekrāna Latvijas simbolu „LV”. program v113; uses crt; begin clrscr; textcolor(7); gotoxy (35,7); write ('* * *'); gotoxy (35,8); write ('* * *'); gotoxy (35,9); write ('* * *'); gotoxy (35,10); write ('**** *'); readln; end. Piezīmes: 1. Ja izmanto operatoru GOTOXY, tad WRITELN vietā var lietot WRITE, jo nav vajadzības pēc simbolu izvadīšanas novietot kursoru jaunā rindā, to veic GOTOXY. 2. Vairākus operatorus var rakstīt vienā rindiņā, tos atdalot ar semikoliem. 3. Lai panāktu simbolu novietojumu noteiktos attālumos, starp tiem liek atstarpes. 4. Programmas rindiņu „gotoxy (35,10); write ('**** *');” var aizstāt ar sekojošu: „gotoxy (35,10); write ('****’); gotoxy(42,10); write(‘*’); 5. Lai ērtāk būtu izveidot zīmējumu uz ekrāna, to sākumā izdari uz rūtiņu papīra, noskaidro izvadāmo simbolu koordinātas un atstarpju skaitu starp simboliem. Vingrinājumi: 1. Sastādi programmu, kas izvada tavu vārdu visos 4 ekrāna stūros. 2. Sastādi programmu, kas uz ekrāna izveido tavu vārdu no simboliem „#”. 5.2 nodarbība. Piešķiršanas operatora lietošana, mainīgo lielumu vērtību maiņa. Izmantotie operatori, funkcijas un procedūras: READLN, WRITELN, GOTOXY, CLRSCR, piešķiršanas operators. Piemēri: 1. Sastādi programmu, kas pēc lietotāja ievadītā laika veselās sekundēs aprēķina ķermeņa koordināti, ja dots koordinātu vienādojums SI sistēmā: x=25-3t+t2 . program v121; uses crt; var x,t:integer; begin clrscr; gotoxy (10,5); write ('Ievadi laika vertibu sekundees '); readln (t); x:=25-3*t+t*t; gotoxy (10,7); writeln ('Kermena koordinate pec ',t,' sekundem ir ',x,' metri.'); readln; end. Jautājumi: 1. Paskaidro, kādu uzdevumu pilda katra programmas rindiņa! 2. Kas mainītos programmas izpildes gaitā, ja oranži iekrāsotajā programmas rindiņā WRITE vietā lietotu WRITELN? 3. Kāpēc sarkanā krāsā iekrāsotajā programmas rindiņā pirms un pēc apostrofiem atstātas atstarpes? 4. Kāpēc būtu jāmaina mainīgajam x tips, ja koordinātu vienādojums būtu sekojošs: x=2,5-3t+t2/3? 2. Zināms, ka dabā ir radioaktīvas vielas, kuru atomi pakāpeniski sabrūk pārvēršoties citu vielu atomos. Katrai šādai vielai ir raksturīgs laika intervāls – pussabrukšanas periods, kurā radioaktīvo atomu skaits samazinās divas reizes. Sastādi programmu, kas pēc lietotāja ievadītā sākotnējo atomu skaita aprēķina atlikušo radioaktīvo atomu skaitu pēc viena, diviem un trim pussabrukšanas periodiem. Piezīme: pievērs uzmanību, ka mainīgajam n vērtība programmas izpildes gaitā mainās, sākumā tā ir lietotāja piešķirtā vērtība, tad pēc katra perioda vērtība samazinās 2 reizes. program v122; uses crt; var n:real; begin clrscr; gotoxy (15,6); write ('Ievadi radioaktivo atomu skaitu sakuma! '); readln (n); clrscr; n:=n/2; gotoxy (5,6); writeln ('Pec viena pussabruksanas perioda radioaktivo atomu skaits ir ',n); readln; clrscr; n:=n/2; gotoxy (5,6); writeln ('Pec diviem pussabruksanas periodiem radioaktivo atomu skaits ir ',n:5:2); readln; clrscr; n:=n/2; gotoxy (5,6); writeln ('Pec trim pussabruksanas periodiem radioaktivo atomu skaits ir ',n:5:0); readln; end. Jautājumi: 1. Salīdzini izvadītās n vērtības pēc 1., 2., un 3. pussabrukšanas perioda, ar ko atšķiras izvadīto skaitļu pieraksts, kuras programmas vietas šos pierakstus nosaka? 2. Kas jāmaina programmā, lai visas izvadītās n vērtības tiktu parādītas kā veseli skaitļi? Vingrinājumi: 1. Sastādi programmu, kas lietotāja ievadīto leņķa lielumu grādos pārvērš uz radiāniem (formula: r = g*3,14/180, kur g ir leņķa lielums grādos, bet r – radiānos). 2. Pārveido programmu v121, lai lietotājam prasītu ievadīt arī sākuma ātruma vērtību, kas ir reizinātājs pie t (“3” vietā). 3. Anniņai nopirka n (zināms, ka n>20) šokolādes konfektes, no kurām viņa katru dienu apēda piecas. Sastādi programmu, kas prasa lietotājam ievadīt nopirkto konfekšu skaitu un izvada atlikušo konfekšu skaitu pēc 1., 2., un 3. dienām. 1.3 nodarbība. Darbs ar teksta un simbolu tipa mainīgajiem. Izmantotie operatori, funkcijas un procedūras: LENGTH, <virknes nosaukums>[i], READLN, WRITELN, CLRSCR, piešķiršanas operators. Piemēri: 1. uzdevums. program v131; uses crt; var alfabets:string; burts:char; begin clrscr; alfabets:='latviesu'; burts:='z'; writeln ('Burts ',burts,' ir ',alfabets,' alfabeta burts.'); readln; alfabets:='latinu'; burts:='w'; writeln ('Burts ',burts,' ir ',alfabets,' alfabeta burts.'); readln; end. Jautājumi: 1. Kādu uzdevumu veic katra programmas rindiņa? 2. Cik simbolu garas virknes var piešķirt mainīgajiem “alfabēts” un “burts”? 3. Cik atšķirīgas vērtības programmas izpildes laikā pieņem mainīgie?, Kādas ir šo mainīgo vērtības? 4. Kāda nozīme ir apostrofiem rindiņā: “writeln ('Burts ',burts,' ir ',alfabets,' alfabeta burts.');”? 5. Kādu tekstu programma izvada uz ekrāna pēc programmas rindiņas “writeln ('Burts ',burts,' ir ',alfabets,' alfabeta burts.');” izpildīšanas pirmo reizi? 2. Kādu uzdevumu veic sekojošā programma, kāda nozīme ir katrai programmas rindiņai? Ko programma izvadīs uz ekrāna pildot rindiņu “writeln ('Tu ievadiji automasinas marku "',auto,'" un vecumu ',vecums,' gadi');”? Kāda nozīme ir pēdiņām (iekrāsotas oranžā krāsā) pirms un pēc mainīgā auto? program v132; uses crt; var auto:string; vecums:integer; begin clrscr; writeln ('Ievadi automasinas marku!'); readln (auto); writeln ('Ievadi automasinas vecumu gados!'); readln (vecums); writeln ('Tu ievadiji automasinas marku "',auto,'" un vecumu ',vecums,' gadi'); readln; end. 3. Sastādi programmu, kas prasa lietotājam ievadīt simbolu virkni līdz 30 simboliem, nosaka šīs virknes garumu un izvada uz ekrāna virknes garumu, pirmo un pēdējo ievadīto virknes simbolu. program v133; uses crt; var virkne:string[30]; s:char;l:integer; begin clrscr; gotoxy (20,5); write ('Ievadi simbolu virkni lidz 30 simboliem'); gotoxy (25,6); readln (virkne); l:=length(virkne); s:=virkne[1]; gotoxy (20,10); write ('Ievaditas virknes garums ir ',l,'.'); gotoxy (20,12); write ('Virknes 1. simbols ir ',s,' bet pedejais ir ',virkne[l],'.'); gotoxy (1,1); readln; end. Piezīme: pievērs uzmanību, ka simbolu no virknes var izvadīt divos veidos: 1. simbolu piešķir mainīgajam s un izvada tā vērtību, 2. simbolu izvada kā funkcijas “virkne[l]” vērtību. Vingrinājums: Sastādi programmu, kas lietotājam prasa ievadīt savu vārdu un izvada šī vārda pēdējos 3 burtus. 1.4 nodarbība. Skaitlisko funkciju izmantošana. Izmantotie operatori, funkcijas un procedūras: READLN, WRITELN, CLRSCR, piešķiršanas operators, DIV, MOD, ABS, SQR, SQRT, ROUND. Piemēri: 1. Sastādi programmu, kas prasa lietotājam ievadīt divus veselus skaitļus, no kuriem otrais nav nulle un izvada šo skaitļu summu, starpību, reizinājumu, veselo dalījumu (rezultāts ir integer tipa), veselā dalījuma atlikumu un dalījumu, kura rezultāts ir reāls skaitlis. program v141; uses crt; var x,y,r1,r2,r3,r4,r5:integer; r6:real; begin clrscr; writeln ('Ievadi pirmo veselo skaitli!'); readln (x); writeln ('Ievadi otru no nulles atšķirīgu veselu skaitli!'); readln (y); r1:=x+y; r2:=x-y; r3:=x*y; r4:=x div y; r5:=x mod y; r6:=x/y; writeln ('skaitlu ',x,' un ',y,' summa ir ',r1); writeln ('skaitlu ',x,' un ',y,' starpiba ir ',r2); writeln ('skaitlu ',x,' un ',y,' reizinajums ir ',r3); writeln ('skaitlu ',x,' un ',y,' dalijums veselos skaitlos ir ',r4); writeln ('skaitlu ',x,' un ',y,' vesela dalijuma atlikums ir ',r5); writeln ('skaitlu ',x,' un ',y,' dalijums realos skaitlos ir ',r6); readln; end. 2. Sastādi programmu, kas lietotājam prasa ievadīt reālu skaitli (decimāldaļas atdalīšanai tiek izmantots punkts, nevis komats) un izvada šī skaitļa absolūto vērtību, kvadrātu un šī skaitļa moduļa kvadrātsakni. program v142; uses crt; var x,y1,y2,y3:real; begin clrscr; writeln ('Ievadi kadu pozitivu skaitli!'); readln (x); y1:=abs(x); y2:=sqr(x); y3:=sqrt(x); writeln ('skaitla ',x,' modulis ir ',y1); writeln ('skaitla ',x,' kvadrats ir ',y2); writeln ('skaitla ',x,' kvadratsakne ir ',y3); readln; end. Piezīmes: 1. Veselo un reālo skaitļu tipiem atšķiras izmantojamās darbības. 2. Mainīgajam drīkst piešķirt tāda tipa skaitliskās vērtības, kādām mainīgais ir definēts. 3. Matemātisko funkciju un darbību rezultāta tips var atšķirties no argumentu tipa. 4. Sastādot programmas ir jāparedz situācijas, kad kāda no darbībām vai funkcijām nav definēta (piem., dalīšana ar nulli). 3. Sastādi programmu, kas noapaļo lietotāja ievadīto skaitli ar 3 decimālo zīmju precizitāti. program v143; uses crt; var t:real; begin clrscr; writeln ('Ievadi realu skaitli lidz 8 zimem, kuraa nav vairak par 5 decimalajiem cipariem'); readln (t); t:=round(t*1000); { ievadīto skaitli pareizinātu ar 1000 funkcija ROUND noapaļo uz veselu skaitli} t:=t/1000; writeln ('Tavs ievaditais skaitlis noapalots ar 3 decimalam zimem ir ',t:6:3); readln; end. Vingrinājums: 1. Pārveido programmu v141, lai reālo dalījumu noapaļotu līdz 2 decimālajām zīmēm. 1.5 nodarbība. Simbolisko funkciju izmantošana. Izmantotie operatori, funkcijas un procedūras: READLN, WRITELN, CLRSCR, piešķiršanas operators, CHR, ORD, PRED, SUCC. Piemēri: 1. Sastādi programmu, kas lietotājam prasa ievadīt veselu skaitli no 32 līdz 64 un izvada šim skaitlim atbilstošo simbolu pēc ASCII kodu tabulas. program v151; uses crt; var t:integer; s:char; begin clrscr; writeln ('Ievadi veselu skaitli no 32 lidz 64!'); readln (t); s:=chr(t); writeln ('Ievaditam skaitlim pēc ASCII kodu tabulas atbilst simbols "',s,'"'); readln; end. 2. Sastādi programmu, kas prasa lietotājam ievadīt latīņu alfabēta burtu un izvada šim burtam atbilstošo ASCII kodu. Noskaidro, kāds kods ir burtiem „A” un „a”. program v152; uses crt; var b:char; i:integer; begin clrscr; writeln ('Ievadi latinu alfabeta burtu!'); readln (b); i:=ord (b); writeln ('Ievaditam burtam atbilstosais ASCII kods ir ',i); readln; end. Jautājumi: 1. Kāda tipa argumenti ir funkcijām CHR un ORD? 2. Kāda tipa rezultātu iegūst izmantojot funkcijas CHR un ORD? 3. Vai lielajiem un mazajiem burtiem ir vienādi ASCII kodi? 3. Sastādi programmu, kas prasa ievadīt latīņu alfabēta burtu un izvada šī burta un alfabētā blakus esošo burtu ASCII kodus. program v153; uses crt; var simb1, simb2, simb3:char; i1,i2,i3:integer; begin clrscr; writeln ('Ievadi kadu burtu!'); readln (simb1); i1:=ord(simb1); simb2:=pred(simb1); i2:=ord(simb2); simb3:=succ(simb1); i3:=ord(simb3); writeln ('Ievaditais burts ir ',simb1,' tam atbilstosais kods ir ',i1); writeln ('Pec kodu tabulas pirms "',simb1,'" atrodas simbols ',simb2,' ar kodu ',i2); writeln ('Pec kodu tabulas pec "',simb1,'" atrodas simbols ',simb3,' ar kodu ',i3); readln; end. Vingrinājumi: 1. Sastādi programmu, kas uz ekrāna izvada tavu vārdu izmantojot ASCII kodu tabulu. 2. Noskaidro, kādu uzdevumu pilda sekojoša programma, kas tiks izvadīts uz ekrāna: program v154; uses crt; var r:string; l:integer; begin clrscr; writeln ('Ievadi simbolu virkni!'); readln (r); l:=length(r); gotoxy (42,11); write (l); gotoxy (40,12); write (ord(r[1]),chr(32),ord(r[l])); gotoxy (1,24); readln; end. 1.12. Uzdevumi 1. uzdevums Sastādīt programmu, kura monitora centrā izvada šādu piramīdu: 2. uzdevums Sastādīt programmu, kura aprēķina un izvada monitorā funkciju x=5ad-4bc un y=7a-x vērtības, kur mainīgos a, b, c, d ievada lietotājs, bet mainīgos x un y aprēķina programma. 3. uzdevums Sastādīt programmu, kas monitorā parāda Tavu vizītkarti, piemēram: 4. uzdevums Sastādīt programmu, kurā lietotājs ievada personas vārdu, uzvārdu un dzimšanas gadu un aprēķina un izvada monitorā personas vecumu (2001. gadu izmantot kā konstanti). 2.LOĢISKIE MAINĪGIE Praktiski jebkurā programmā tiek pieņemti lēmumi. Šie lēmumi vienmēr balstās uz kāda nosacījuma pārbaudi. Nosacījumu uzstādīšanā var izmantot gan salīdzināšanas darbības, gan loģiskās operācijas. Loģiskās operācijas ir NOT (ne), AND (un), OR (vai). Loģisko operāciju, kas saista divas izteiksmes, rezultāti apskatāmi tabulā. patiess AND patiess = patiess patiess OR patiess = patiess NOT patiess = aplams patiess AND aplams = aplams patiess OR aplams = patiess NOT aplams = patiess aplams AND patiess = aplams aplams OR patiess = patiess aplams AND aplams = aplams aplams OR aplams = aplams Nosacījumu aprēķins pieļauj tikai vienu no divām vērtībām: TRUE (patiess), ja nosacījums izpildās, vai FALSE (aplams), ja neizpildās. Programmēšanā nosacījumu uzstādīšanai izmanto loģiskos mainīgos ar tipu BOOLEAN, ko definē šādi. var b: boolean; 10. piemērs Uzrakstīt programmu, kas pārbauda, vai lietotāja ievadītais skaitlis pieder skaitļu intervālam (5; 50]. program salīdzināšana; var b: boolean; x: integer; ļjniļiii vriteln ('Ievadi veselu skaitli intervāla no 5 lidz 50:'); readln (x); b:= (x>5) and (x<=50); writeln; readln; end. Loģiskie mainīgie Praktiski jebkurā programmā tiek pieņemti lēmumi. Šie lēmumi vienmēr balstās uz kāda nosacījuma pārbaudi. Uzstādot nosacījumus, var izmantot gan salīdzināšanas darbības, gan loģiskās funkcijas. Salīdzināšanas darbības ir: vienāds (=), lielāks (>), mazāks (<), lielāks vai vienāds (>=), mazāks vai vienāds (<=), nav vienāds (<>). Lūk, šādu nosacījumu piemēri: X>5; S='Q'; X<R. Loģiskās operācijas ir: NOT (ne), AND (un), OR (vai). Piemēram, nosacījums (X>5) OR (X<=R) nozīmē, ka mainīgā X vērtībai jābūt lielākai par 5 vai mazākai vai vienādai ar vērtību R. Nosacījumu aprēķins pieļauj tikai vienu no divām vērtībām: "patiess" (TRUE) — ja nosacījums izpildīts, "nepatiess" (FALSE) — ja tas nav izpildīts. Programmēšanā nosacījumu uzstādīšanai izmanto loģiskos mainīgos. Loģisko mainīgo tips — BOOLEAN. Apskatīsim uzdevumus, kuros tiek izmantoti loģiskie mainīgie. Uzdevums Uzrakstīt programmu, kas nolasa lietotāja ievadīto mainīgā vērtību, definē to kā loģisko mainīgo, salīdzina mainīgā vērtību ar nulli un uz ekrāna uzraksta "TRUE", ja skaitlis negatīvs, bet "FALSE", ja skaitlis nav negatīvs. Paskaidro'ums PR0CRAMP8; VAR B: BOOLEAN; X: INTECER; Mainīgā tipa definēšana. BECIN READ (X); B:= X<0; VVRITE (B), END. Ievadītā mainīgā nolasīšana. Mainīgā salīdzināšana ar nulli. Paziņojums, vai nosacījums ir patiess, vai nepatiess. Lūk, nedaudz sarežģītāka programma, kas atšķir mainīgā X diapazonu. Uzdevums Uzrakstīt programmu, kas pārbauda, vai lietotāja ievadītais skaitlis pieder skaitļu intervālamyfisQ; 100]. 3. Izvēles konstrukcija CASE… OF.. END Oператор выбора Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат: case выражение of вариант : оператор; ... вариант : оператор; end; или case выражение of вариант : оператор; ... вариант : оператор; else оператор end; выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантав записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть). Пример case ch of 'A'..'Z', 'a'..'z' : WriteLn('Буква'); '0'..'9' : WriteLn('Цифра'); '+', '-', '*', '/' : WriteLn('Оператор'); else WriteLn('Специальный символ') end; 2.5 nodarbība. Izvēles operatora izmantošana. Izmantotie operatori, funkcijas un procedūras: CLRSCR, WRITELN, READLN, CASE-OFEND. Piezīme: Ja sazarojuma konstrukcijā pie noteikumu pārbaudes iespējami vairāk kā divi gadījumi, ērtāk izmantot izvēles operatoru CASE-OF-END. Piemērs: 1. Sastādi programmu, kas pieprasa lietotājam ievadīt nedēļas dienas kārtas numuru un izvada dienas anglisko nosaukumu! program v251; uses crt; var a:integer; begin clrscr; writeln ('ievadi nedelas diena kartas numuru'); readln (a); case a of 1: writeln ('Monday'); 2: writeln ('Tuesday'); 3: writeln ('Wednesday'); 4: writeln ('Thursday'); 5: writeln ('Friday'); else writeln ('Pa brivdienam nestradaju, netulkosu!'); end; readln; end. Piezīme: mainīgā „a” iespējamās vērtības kalpo kā iezīmes operatora CASE izvēlnē. 2. Sastādi testa programmu, kas lietotājam liek izvēlēties informācijas pārsūtīšanas laiku caur internet, ja dots pārsūtāmās informācijas apjoms un informācijas vidējais pārsūtīšanas ātrums. Atbilžu variantu apzīmēšanai izvēlēties burtus! Kādam no atbilžu variantiem jābūt nepilnīgam. program v252; uses crt; var k:char; begin clrscr; gotoxy (5,7); writeln ('NO internet ftp servera uz lokala datora janokope 150 MB informacija.'); writeln ('Cik daudz laika nepieciesams informacijas nokopesanai, ja videjais tikla atrums ir 60 kbps?'); writeln('a) 341 sekunde,'); writeln('b) 341 stunda,'); writeln('c) 341 minute,'); writeln('d) 341 milisekunde,'); writeln('e) 5 stundas un 33 minute'); writeln; writeln ('Ievadi pareizas varianta burtu!'); readln (k); writeln; case k of 'c': writeln ('Pareizi'); 'e': writeln ('Gandriz pareizi! Tomer 1MB=1024kB un 1kB=1024B!'); 'a','b','d': writeln ('Nepareizi!'); end; readln; end. Piezīmes: 1. CASE-OF-END konstrukcijā var nebūt ELSE! 2. Par iezīmēm var tikt izmantotas vairākas selektora vērtības! Jautājumi: 1. Kādas ir pirmā izdrukājamā teksta sākuma koordinātes? 2. Kāda nozīme ir rindiņai, kurā ir operators WRITELN bez operanda? Vingrinājums: Pārveido programmu v252 izmantojot IF-THEN-ELSE konstrukciju! Vērtēšanas kritēriji. K-3 sākums 3. Sazarojuma konstrukcija IF-THEN-ELSE. Uzdevums_3 Program Uzd3; Uses Crt; Var a: integer; Begin ClrScr; Writeln(‘Ievadi skaitli’); Readln (a); If a mod 2 = 1 then Writeln (‘Dotais skaitlis ir nepara skaitlis’) Else Writeln (‘Dota skaitlis ir para skaitlis’); Readln; End. Uzdevums_4 Program Uzd4; Uses Crt; Var a,b,c : integer; Begin ClrScr; Writeln(‘MAX 3 skaitli ’); Readln (a); READLN (b); Readln(c); If a >=b then If a>=c then Writeln (‘MAX A=’, A) Else Writeln(‘MAX=’,C); Else {b>a} IF b>c Then Writeln (‘MAX B=’, B) Else Writeln (‘MAX C=’, C); Readln; End. Ievadīt x un y nē jā X>Y Liel:=y Liel:=x Izvadīt Liel beigas Uzdevums_5 Program Uzd_KV;{kvadratvienadijums} Uses Crt; Var a,b,c,D,x2 : integer; Begin ClrScr; Writeln(‘Atrisina kvadratvienadojumu ’); Writeln(‘Ievadi koeficientus A B C ’); Readln (a); READLN (b); Readln(c); D:=b*b - 4*a*c; Writeln (‘D=’, D); If D>0 then Writeln (‘X1= ’,((-b+SQRT(D)/(2*a)):2:2, ‘X2= ’,((-b-SQRT(D))/(2*a)):2:2 ); {If a>=c then Else Writeln(‘MAX=’,C); Else {b>a} IF b>c Then Writeln (‘MAX B=’, B) Else Writeln (‘MAX C=’, C); } Readln; End. Sazarojuma konstrukcija IF-THEN-ELSE. Izmantotie operatori, funkcijas un procedūras: CLRSCR, IF-THEN-ELSE, WRITELN, READLN, AND, OR. Piemērs: 1. Sastādīt programmu, kas pieprasa ievadīt divus veselus skaitļus un uz ekrāna izvada lielāko no šiem skaitļiem. Uzzīmē blokshēmu! program v211; uses crt; var x,y,Liel:integer; begin clrscr; writeln ('ievadi divus skaitlus!'); readln (x,y); writeln ('ievaditie skaitli ir ',x,' un ',y); if x>y then Liel:=x else Liel:=y; {lielāko piešķir mainīgam“Liel”} writeln('Lielakais ievaditais skaitlis ir ',Liel); readln; end. Jautājumi: 1. Kā jāpārveido programma, lai atrastu mazāko no ievadītiem skaitļiem? 2. Kā jāpārveido programma, lai tā izvadītu paziņojumu par to, vai ievadītie skaitļi ir vienādi vai nav? 3. Kādos gadījumos izmanto loģiskās funkcijas AND un OR? Vingrinājumi. 1. Noskaidro, kādu uzdevumu veic dotā programma: program v212; uses crt; var x:longint; begin clrscr; writeln ('ievadi veselu skaitli!'); readln (x); if (x>=-32768) and (x<=32767) then writeln ('ievaditais skaitlis atbilst vesela skaitļa tipam integer') else writeln ('ievaditais skaitlis atbilst tipam long integer'); readln; end. Piezīme: Pievērs uzmanību loģiskās funkcijas AND pielietojumam! 2. Sastādi programmu, lai tiktu pieprasīti divi veseli pozitīvi skaitļi līdz 100! Programmai jāizvada paziņojums, vai ievadītie skaitļi atbilst prasībām un tad jāatrod lielākais no šiem skaitļiem! 3. Sastādi programmu, kas lietotājam prasa ievadīt skaitli, kas pēc absolūtās vērtības ir lielāks par 10 un izvada paziņojumu, vai ievadītais skaitlis atbilst uzdevuma nosacījumiem! 2.2 nodarbība. Sazarojuma konstrukcija sazarojumā. Izmantotie operatori, funkcijas un procedūras: CLRSCR, IF-THEN-ELSE, WRITELN, READLN, AND, OR. Piemērs: 1. Sastādi programmu, kas prasa ievadīt 2 veselus skaitļus un izvada paziņojumu, ja skaitļi ir vienādi. Ja skaitļi nav vienādi, jāpaziņo lielākais no skaitļiem. nē jā X<>Y nē jā X>Y Skaitļi v ienādi Lielākais ir y Lielākais ir x program v221; uses crt; var x,y:shortint; begin clrscr; writeln ('ievadi divus veselus skaitlus!'); readln (x,y); writeln ('ievaditie skaitli ir ',x,' un ',y); if x<>y then if x>y then writeln('lielakais ir ',x) else writeln('lielakais ir ',y) else writeln ('ievaditie skaitli ir vienadi'); readln; end. Jautājumi: 1. Ko nozīmē pieraksts “x<>y” pārbaudot loģisko nosacījumu? 2. Kāda nozīme programmas struktūrā ir sarkanā krāsā iekrāsotām rindiņām? 3. Kāpēc iekrāsoto rindiņu beigās netiek lietoti semikoli? Vingrinājumi: 1. Kā mainīsies sazarojuma konstrukcija, ja ārējā sazarojumā loģiskais nosacījums “x<>y” tiks aizstāts ar sekojošu “x=y”? Uzzīmē šim gadījumam blokshēmu! 2. Kādu uzdevumu veic sekojoša programma: program v222; uses crt; var k:longint; begin clrscr; writeln ('ievadi veselu skaitli!'); readln (k); if (k<-128) or (k>127) then if (k>=-32768) and (k<=32767) then writeln ('ievaditais skaitlis ir integer tipa') else writeln ('ievaditais skaitlis ir long integer tipa') else writeln ('ievaditais skaitlis ir short integer tipa'); readln; end. 3. Sastādi programmu, prasa lietotājam ievadīt trīsstūra leņķa lielumu grādos un izvada paziņojumu, vai leņķis ir taisns, šaurs vai plats! 4. Sastādi programmu, kas prasa lietotājam ievadīt neformatēta teksta A4 lappušu skaitu, un pēc noglabājamā informācijas apjoma paziņo vajadzīgo atmiņas ierīci. Iespējamās atmiņas ierīces: diskete, 256 MB flash atmiņas ierīce un 800MB CD-ROM. 2.3 nodarbība. Sazarojumi ar teksta mainīgajiem. Izmantotie operatori, funkcijas un procedūras: IF-THEN-ELSE, CLRSCR, WRITELN, READLN, GOTO, AND, OR. Piezīme: Operatora GOTO izmantošana programmā nav ieteicama, jo šis operators izjauc operatoru secīgo izpildi. Turpmākās nodaļās šo operatoru centīsimies aizstāt ar cikla operatoriem. Piemēri: 1. Sastādi programmu, kas uzaicina ierakstīt Latvijas galvaspilsētas nosaukumu ar lielajiem burtiem un pārbauda, vai ievadītā informācija atbilst uzdevuma noteikumiem! program v231; uses crt; var a:string; begin clrscr; writeln (‘Ieraksti Latvijas galvaspilsetas nosaukumu ar lielajiem burtiem'); readln (a); if a='RIGA' then writeln ('pareizi') else writeln ('nepareizi'); readln; end. 2. Papildini programmu, lai galvaspilsētas nosaukums varētu būt gan ar lielajiem, gan mazajiem, gan pirmo lielo un pārējiem mazajiem burtiem. Dod iespēju lietotājam, neizejot no programmas, uzdevumu pildīt atkārtoti! program v232; uses crt; label l1; var a:string; b:char; begin l1: clrscr; writeln ('Ieraksti Latvijas galvaspilsetas nosaukumu'); readln (a); if (a='RIGA') or (a='Riga') or (a='riga') then begin writeln ('pareizi'); writeln ('lai turpinatu, nospied enter'); end else begin writeln ('nepareizi'); writeln ('lai turpinatu, nospied enter'); end; readln; writeln ('vai turpinat? J/N'); readln (b); if (b=’J') or (b='j') then goto l1; end. Piezīme: pievērs uzmanību semikolu lietošanai sazarojuma konstrukcijā! Jautājumi: 1. Kā tiek pārbaudīts, lai ievadītais teksts varētu būt ar gan ar lielajiem, gan mazajiem burtiem? 2. Kāpēc sazarojuma konstrukcijā tiek lietoti atslēgvārdi BEGIN un END? 3. Kādu funkciju veic iekrāsotās programmas rindiņas? 4. Kādas priekšrocības lietotājam dod treknrakstā izceltās rindiņas fragments? 5. Kas mainītos programmas izpildes gaitā, ja iezīmi L1 novietotu vienu rindiņu zemāk? Vingrinājumi: 1. Uzzīmē blokshēmu otrajai programmai! 2. Pārveido doto 2. programmu tā, lai programma liktu atkārtoti atbildēt uz jautājumu, ja atbilde nav pareiza (neatbilst pārbaudes kritērijiem)! 3. Sastādi programmu, kas prasa lietotājam ievadīt divas dažādas datora ārējās ierīces! Ja otrā nosauktā ierīce ir tāda pati, kā pirmā, tad jāpaziņo, ka nosauktās ierīces ir vienādas un jāliek atkārtoti ievadīt otro ierīci. 4. Sastādi programmu, kas lietotājam prasa ievadīt divus atšķirīgus veselus pozitīvus skaitļus. Ja ievadītie skaitļi neatbilst uzdevuma nosacījumiem, tie jāliek ievadīt atkārtoti. 2.4 nodarbība. Testa veidošana. Izmantotie operatori, funkcijas un procedūras: piešķiršanas operators, CLRSCR, GOTOXY, WRITELN, READLN, GOTO, IF-THEN-ELSE. Piemērs: 1. Sastādi testa programmu, kas lietotājam prasa izvēlēties monitora ekrāna mērvienības. Nepareizas atbildes gadījumā jāliek tests pildīt atkārtoti. Programmai jāsaskaita testa pildīšanas reizes un tās jāizvada pēc pareizās atbildes iegūšanas. Lietotājam jādod iespēja testu pildīt atkārtoti. program v241; (Uzdevums_5) uses crt; label l1,l2; var n,s:integer; b:char; begin l1: s:=0; l2: clrscr; s:=s+1; gotoxy (5,10); write ('Monitora izmerus pienemts merit pa ekrana diagonali:'); gotoxy (15,11); write('1. milimetros,'); gotoxy (15,12); write('2. centimetros,'); gotoxy (15,13); write('3. metros,'); gotoxy (15,14); write('4. collas,'); gotoxy (15,15); write('5. pedas,'); gotoxy (15,17); write('Ievadi pareizas atbildes numuru'); gotoxy (25,18); write('** **'); gotoxy (27,18); readln (n); if n<>4 then begin gotoxy (10,19); write ('Atbide nav pareiza, megini velreiz!'); gotoxy (10,20); writeln (‘Lai turpinatu, nospied enter'); readln; goto l2; end; writeln ('Pareizi, tu pareizo atbildi testa ieguvi ar ',s,'. reizi!'); writeln ('Lai turpinatu, nospied enter'); readln; writeln ('Vai turpinat? J/N'); readln (b); if (b='J') or (b='j') then goto l1; end. Jautājumi: 1. Kāda atšķirība starp gotoxy un goto? 2. Kādam nolūkam izmanto iezīmes? 3. Kādā veidā tiek panākta darbību skaitīšana programmas izpildes gaitā? 4. Kā tiek veidota sazarojuma konstrukcija IF, ja aiz THEN vai ELSE jālieto vairāki operatori? 5. Kādam nolūkam sazarojuma konstrukcijā starp BEGIN un END tiek izmantots READLN? 6. Vai lietotājs var pabeigt darbu ar programmu, ja nav pareizi atbildējis uz jautājumu? Kuras programmas rindiņas dod atbildi uz šo jautājumu? 7. Kura programmas rindiņa tiek izpildīta pēc pareizās atbildes ievadīšanas? 8. Kā varam panākt, lai kāda teksta vai simbolu ievadīšana uz ekrāna varētu notikt vienā un tajā pašā vietā vairākas reizes, kuras programmas rindiņas to nodrošina? 9. Kā panākt, lai lietotājs varētu uz jautājumiem atbildēt gan ar lieliem, gan maziem burtiem? 10. Kādam nolūkam tiek izmantoti mainīgie S un B, ar ko tie atšķiras savā starpā? 11. Kāda būs mainīgā S vērtība, ja lietotājs testā izvēlēsies pareizo atbildi pirmajā reizē, bet uz jautājumu, vai vēlās turpināt, atbildēs ar “N”? 12. Kā iespējams paātrināt šīs programmas darbu, samazinot izpildāmo operāciju skaitu? Vingrinājums: Sastādi testa programmu, kas lietotājam prasa izvēlēties no dažādām datora atmiņas ierīcēm diskešu ierīci! Nepareizas atbildes gadījumā tests jāpilda atkārtoti un jāskaita testa pildīšanas piegājienu skaits un jāizvada testa beigās. №1 Даны три действительные числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные. №2 Даны две точки А(х1, уг) и В(х2, у2)- Составить алгоритм, определяющий, которая из точек находится ближе к началу координат. №3 Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным. №4 Даны действительные числа х и у, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее — их удвоенным произведением. №5 На плоскости XOY задана своими координатами точка А. Указать, где она расположена: на какой оси или в каком координатном угле. №6 Даны целые числа т., п. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями. №7 Дано трехзначное число N. Проверить, будет ли сумма его цифр четным числом. №8 Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа. №9 Определить, является ли целое число N четным двузначным числом. № 10 Определить, является ли треугольник со сторонами а, b, с равносторонним. № 11 Определить, является ли треугольник со сторонами а,b, с равнобедренным . № 12 Определить, имеется ли среди чисел а, b, с хотя бы одна пара взаимно противоположных чисел. № 13 Подсчитать количество отрицательных чисел среди чисел а, b,с. № 14 Подсчитать количество положительных чисел среди чисел а, b, с. № 15 Подсчитать количество целых чисел среди чисел а, b, с. № 16 Определить, делителем каких чисел а, b, с является число k. № 17 Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до,4 минут в месяц оплачиваются В p., a разговоры сверх установленной нормы оплачиваются из расчета С р. в минуту. Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц. № 18 Даны три стороны одного и три стороны другого треугольника. Определить, будут ли эти треугольники равновеликими, т.е. имеют ли они равные площади. 19 Программа-льстец. На экране появляется вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «Мне нравятся девочки!» или «Мне нравятся мальчики!». № 20 Грузовой автомобиль выехал из одного города в другой со скоростью v1 км/ч. Через t ч в этом же направлении выехал легковой автомобиль со скоростью v2 км/ч. Составить программу, определяющую, догонит ли легковой автомобиль грузовой через tx ч после своего выезда. № 21 Перераспределить значения переменных х и у так, чтобы в х оказалось большее из этих значений, а в у — меньшее. № 22 Определить правильность даты, введенной с клавиатуры (число — от 1 до 31, месяц — от 1 до 12). Если введены некорректные данные, то сообщить об этом. № 23 Составить программу, определяющую результат гадания на ромашке — «любит — не любит», взяв за исходное данное количество лепестков п. Б № 24 Написать программу нахождения суммы большего и меньшего из 3 чисел. № 25 Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольные. Если таковых нет, то вычислить величину угла С. № 26 Найти max{rnm(a, Ъ), min(c, d)}. № 27 Даны три числа а, Ъ, с. Определить, какое из них равно d. Если ни одно не равно d, то найти max(da, d-b, d-c). № 28 Даны четыре точки Ax(xv yj, А2(х2, у2), А3(х3, у3), А4(х4, у4). Определить, будут ли они вершинами параллелограмма. Даны три точки A(xv yj, B(x2, у2) и С(х3, у3). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить Z.ABC. № 30 Даны действительные числа а, Ь, с. Удвоить эти числа, если а<Ъ<с, и заменить их абсолютными значениями, если это не так. № 31 На оси ОХ расположены три точки а, Ъ, с. Определить, какая из точек Ъ, с расположена ближе к а. № 32 Даны три положительных числа а, Ь, с. Проверить, могут ли они быть длинами сторон треугольника. Если да, то вычислить площадь этого треугольника. № 33 Написать программу решения уравнения ах3 + Ъх = 0 для произвольных а,Ъ. № 34 Дан круг радиуса R. Определить, поместится ли правильный треугольник со стороной а в этом круге. № 35 Даны числа х, у, г. Найти значение выражения: max2 (х, у, г) - 2х ■ min (x, у, z) sin2x + max(x, у, z)/min(x, у, z) № 36 Дано число х. Напечатать в порядке возрастания числа: sin x, cos х, In x. Если при каком-либо х некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл. № 37 Заданы размеры А, В прямоугольного отверстия и размеры X, Y, Z кирпича. Определить, пройдет ли кирпич через отверстие. № 38 Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие. № 39 Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (х1, J/J) и (х2, 0), для второго — (х3, у3), (х4, 0). Составить программу, определяющую, пересекаются ли данные прямоугольники, и вычисляющую площадь общей части, если они пересекаются. № 40 В небоскребе N этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры М. На какой этаж должен доставить лифт пассажира? № 41 Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной. № 42 Известно, что из четырех чисел av а2, а3 и а4 одно отлично от трех других, равных между собой; присвоить номер этого числа переменной п. № 43 Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел. В № 44 Даны действительные числа а, Ъ, с (а > 0). Полностью исследовать биквадратное уравнение ах4 + Ьх2 + с = 0, т.е. если действительных корней нет, то должно быть выдано сообщение об этом, иначе найти действительные корни, сообщив, сколько из них являются различными. № 45 Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (х1( у^), (х2, у2), (х3, у3). № 46 Написать программу, определяющую, будут ли прямые Агх + Вху + Cj = 0 и А?х + В2у + С2=0 перпендикулярны. Если нет, то найти угол между ними 3. Sazarojuma konstrukcija IF… then… else 8.1 Uzrakstīt programmu, kas salīdzina divu ievadīto kubu šķautnes un uzrāda lielākā kuba tilpumu. Ja šķautnes ir vienādas, programma parāda paziņojumu, ka kubi ir vienādi. 1. Uzrakstīt programmu, kas lietotājam pieprasa ievadīt divus skaitļus. Ja pirmais no tiem ir lielāks Nekā otrs vai vienāds ar to, tiek izvadīta to summa, ja otrais skaitlis ir lielāks, -skaitļu reizinājums. Pēc rezultāta izvades nākamā rindā parāda paziņojumu "Uzdevums paveikts!". 2. Pūķim piezimstot ir 3 galvas. Līdz 100 gadu vecumam pūķim katru gadu pieaug vēl pa 3 galvām, bet pēc tam – ik gadu pa 2 galvām. Uzrakstīt programmu, kas aprēķina pūķa galvu un acu skaitu n gadu vecumā. 3. Uzrakstīt programmu, kas salīdzina brāļa un māsas vecumu un izvada paziņojumu par to, kurš No viņiem vecāks, vai to, ka viņi ir dvīņi. 5. Uzrakstīt programmu, kas pēc ievadītajiem nogriežņu garumiem nosaka, vai, izmantojot šos noriežņus, ir iespējams uzzīmēt trijstūri. 6. Uzrakstīt programmu, kas pārbauda, vai ievadītais skaitlis pieder dotajam (iesvītrotajam) intervālam. 1 2 3 4 5 6 7. Uzrakstīt programmu, kas pārbauda, vai ievadītais skaitlis pieder dotajam (iesvītrotajam) intervālam. 1 2 3 4 5 6 7 8.8. Raganai ir n gadi, bet Mežainim - m. Uzrakstīt programmu, kas nosaka, kurš no viņiem ir ve cāks. 8.9. Pēteris apēda A ābolus un B bumbierus, bet Viktors - C ābolus un D bumbierus. Uzrakstīt pro grammu, kas nosaka, kurš zēns apēda vairāk augļu. 8.10. Tatjana nopirka a bulciņas par b santīmiem katru, bet Daša - c konfektes par b santīmiem katru. Uzrakstīt programmu, kas aprēķina, cik santīmu samaksāja katra meitene. Kura vairāk? 8.11. Baiba nopirka A bulciņas par B santīmiem katru un C konfektes par D santīmiem katru, savukārt Anda nopirka E bulciņas par F santīmiem katru un H konfektes par K santīmiem katru. Uzrakstīt programmu, kura aprēķina, cik santīmu samaksāja katra meitene. Kura vairāk? 8.12. Kārlim ir L latu. Viņš vēlas nopirkt M kg apelsīnu par C Ls/kg. Uzrakstīt programmu, kas nosaka, vai Kārlim pietiks naudas. Ja pietiks, tad cik viņam vēl atliks? . Cikli. 3.1 nodarbība. FOR-TO-DO un FOR-DOWNTO-DO ciklu konstrukcijas. Izmantotie operatori, funkcijas un procedūras: FOR-TO-DO, FOR-DOWN-TO, READLN, WRITELN, CLRSCR, piešķiršanas operators. Piemēri: 1. Sastādi programmu, kas izdrukā veselus skaitļus no 1 līdz 10 un to kvadrātus. Program v311; var i:integer; begin for i:=1 to 10 do writeln('skaitla ',i,' kvadrats ir ',i*i); readln; end. 2. Pārveido iepriekšējo programmu tā, lai skaitļi un to kvadrāti tiktu parādīti dilstošā secībā. Sastādi mainīgo vērtību tabulu! program v312; uses crt; var i,j:integer; begin clrscr; j:=10; for i:=1 to 10 do begin writeln('skaitla ',j,' kvadrats ir ',j*j); j:=j-1; end; readln; end. Piezīme: Ja cikla ķermenī (piemērā iekrāsots) ir divi vai vairāk operatori, tad tie jāievieto starp BEGIN un END. 3. Programmu v312 iespējams ievērojami vienkāršot, izmantojot cikla konstrukciju FORDOWNTO-DO! program v313; var i:integer; begin for i:=10 downto 1 do writeln('skaitla ',i,' kvadrats ir ',i*i); readln; end. Jautājumi: 1. Kāda atšķirība starp konstrukcijām FOR-TO-DO un FOR-DOWNTO-DO? 2. Kas jāmaina 3. programmā, lai skaitļu vērtības mainītos no 5 līdz –10? 3. Kura no dotām programmām izmantojama un kā tā jāpārveido, lai izvadītu uz ekrāna visus nepāra skaitļus no 0 līdz 100? Vingrinājumi: 1. Sastādi programmu, kas uz ekrāna izvada pārskaitļus un to trešās pakāpes skaitļiem no 20 līdz 30! 2. Paskaidro, kādu uzdevumu pilda dotā programma! Kuras rindiņas veido cikla ķermeni? Kādas vērības pieņem cikla mainīgais programmas izpildes laikā? Kāda nozīme ir mainīgajam s? program v314; uses crt; var i,i1,ik,s: integer; begin s:=0; clrscr; writeln ('ievadi mazako no diviem veseliem skaitliem'); readln (i1); writeln ('ievadi lielako no diviem veseliem skaitliem'); readln (ik); for i:=i1 to ik do begin write (i,', '); s:=s+i; end; gotoxy (5,10); writeln('s=',s); readln; end. 3.2 nodarbība. Gadījumu skaitļu izmantošana ciklu konstrukcijās. Izmantotie operatori, funkcijas un procedūras: FOR-TO-DO, FOR-DOWN-TO, READLN, WRITELN, CLRSCR, piešķiršanas operators, RANDOM, IF-THEN-ELSE. Piemēri: 1. Sastādi programmu, kas ģenerē 20 gadījuma skaitļus no 0 līdz lietotāja ievadītai vērtībai. program v321; uses crt; var i,y,x:integer; begin clrscr; randomize; writeln ('ievadi skaitli, lidz kuram generet gadijuma skaitli'); readln (x); writeln ('Gadijuma skaitli tiks genereti no 0 lidz ',x); for i:=1 to 20 do begin y:= random(x); write (y,' '); end; readln; end. Jautājumi: 1. No kura lieluma programmā atkarīgs ģenerētā gadījuma skaitļa lielums? 2. Kurš lielums nosaka ģenerēto skaitļu daudzumu? 3. Kas jāmaina programmā, lai gadījumu skaitļu sākuma intervāls sāktos ar atšķirīgu vērtību no nulles? 4. Kā jāpapildina programma, lai lietotājs varētu izvēlēties izvadāmo gadījuma skaitļu daudzumu? Vingrinājumi: 1. Paskaidro, kādu uzdevumu pilda sekojošā programma? Kāda nozīme ir katram no mainīgajiem? Kas tiek panākts programmas rindiņā “ y1:= random(x)+xs;” pieskaitot xs? Vai mainīgais y1 var programmā iegūt arī negatīvas vērtības, ja var, tad no kura lieluma tas ir atkarīgs? Cik reizes dotajā programmā tiek ģenerēts gadījuma skaitlis? program v322; uses crt; var i,y1,y2,x,xs,xb,r,s:integer; begin randomize; s:=0; clrscr; writeln ('ievadi intervala sakumu, no kura generet gadijuma skaitli!'); readln (xs); writeln ('ievadi intervala beigas, lidz kuram generet gadijuma skaitli!); readln (xb); x:= xb-xs; writeln ('Gadijuma skaitli tiks genereti no ',xs,' lidz ',xb); readln; for i:=1 to 10 do begin clrscr; y1:= random(x)+xs; y2:= random(x)+xs; write (y1,'+',y2,'='); readln(r); if r=y1+y2 then s:=s+1; end; writeln ('No 10 reizem tu pareizi atbildeji ',s); readln; end. 2. Sastādi programmu, kas ģenerē 30 gadījuma skaitļus no –100 līdz 10. 3. Sastādi programmu, kas piedāvā lietotājam izvēlēties ģenerējamo gadījumu skaitļu intervālu un skaitu. Gadījuma skaitļi uz ekrāna jāizvada pa 5 katrā rindiņā. 4. Sastādi programmu, kas ģenerē 50 gadījuma skaitļus intervālā no 0 līdz 100 un izvada šo skaitļu summu un vidējo aritmētisko. 5. Sastādi programmu, kas pārbauda reizināšanas prasmes. Pirmais skaitlis var būt intervālā no 1 līdz 20, bet otrais intervālā no 1 līdz 10. Lietotājam jādod iespēja izvēlēties darbību daudzumu. Par katru pareizu darbību jādod 1 punkts. Pārbaudi beidzot, programmai jāizdod paziņojums par iespējamo un iegūto punktu skaitu. 3.3 nodarbība. Cikla konstrukcija ar WHILE-DO. Izmantotie operatori, funkcijas un procedūras: WHILE-DO, READLN, WRITELN, CLRSCR, IF-THEN-ELSE, OR. Piemēri: 1. Sastādi programmu, kas lietotājam prasa ievadīt veselu pozitīvu skaitli. Programmai jāpārbauda ievadītais skaitlis un jāliek to ievadīt atkārtoti, ja tas neatbilst uzdevuma nosacījumiem. Sastādi mainīgo lielumu vērtību tabulu, ja ievadītie skaitļi ir –2, pēc tam 3. program v331; uses crt; var a: integer; begin clrscr; while a<=0 do begin writeln ('ievadi veselu pozitivu skaitli'); readln (a); end; writeln (‘ievaditais skaitlis ir ‘,a); readln; end. Piezīme: loģiskais nosacījums tiek pārbaudīts cikla sākumā, ja šis noteikums izpildās (šajā gadījumā mainīgais a nav pozitīvs), tad tiek pildītas darbības cikla ķermenī, pretējā gadījumā tiek pildīts nākamais operators aiz cikla. Blokshēma: nē jā a<=0 ievadīt a vērtību Jautājumi: 1. Kādam jābūt nosacījumam, lai no lietotāja tiktu gaidīti negatīvi skaitļi? 2. Kāpēc cikla konstrukcijā lietots BEGIN un END? 2. Pārveido programmu v232, aizstājot operatoru GOTO ar WHILE-DO! program v332; uses crt; var a:string; b:char; begin while b<>'J' do begin clrscr; writeln ('ieraksti latvijas galvaspilsetas nosaukumu'); readln (a); if (a='Riga') or (a='RIGA') or (a='riga') then begin writeln('pareizi'); writeln('lai turpinatu, nospied enter'); end else begin writeln('nepareizi'); writeln('lai turpinatu, nospied enter'); end; readln; writeln ('vai turpinat? J/N'); readln (b); end; end. Piezīme: programmas ietonētais bloks ir cikla ķermenis, kas tiek pildīts tik reižu, kamēr mainīgā “b” vērtība nekļūst vienāda ar “J”. Tādēļ programmā netiek izmantots operators GOTO un atbilstošā iezīme. Vingrinājumi: 1. Sastādi programmu, kas piedāvā lietotājam ievadīt veselu pozitīvu skaitli un izvada uz ekrāna ar soli 1 dilstošu skaitļu virkni no ievadītā skaitļa līdz –10. 2. Sastādi programmu, kas lietotājam piedāvā pildīt matemātisku testu ar reizināšanu tik ilgi, kamēr lietotājs apstiprina testa atkārtošanu. 3.4 nodarbība. Cikla konstrukcija ar REPEAT-UNTIL. Izmantotie operatori, funkcijas un procedūras: REPEAT-UNTIL, READLN, WRITELN, CLRSCR, IF-THENELSE, GOTOXY, piešķiršanas operators . Piemēri: 1. Sastādīt programmu, kas prasa lietotājam ievadīt nosaukumu datora ārējai ierīcei, ar kuru var pieslēgties internet tīklam. Ja atbilde ievadīta nepareizi, tā jāievada atkārtoti. program v341; uses crt; var w:string; begin clrscr; gotoxy (5,11); writeln ('Nosauc datora arejo ierici, ar kuru var pieslegties internet tiklam!'); repeat gotoxy (15,13); writeln (' gotoxy (15,13); readln (w); until w='modems'; writeln ('Pareizi!'); readln; end. '); Piezīme: Šajā gadījumā nosacījuma pārbaude notiek cikla konstrukcijas beigās. Ja nosacījums neizpildās, cikls tiek pildīts atkārtoti, pretējā gadījumā tiek pildīta nākamā komanda aiz cikla. Pievērs uzmanību semikolu lietošanai šajā cikla konstrukcijā! Cikla blokshēma: Piešķirt w vērtību nē jā w=’modems’ Jautājumi: 1. Kāda galvenā atšķirība šai cikla konstrukcijai no WHILE-DO? 2. Kādu uzdevumu pilda katra no rindiņām cikla ķermenī? 3. Kā jāpārveido dotā programma, lai tajā nepieciešamības gadījumā parādītos paziņojums par nepareizu atbildi? 2. Sastādi programmu, kas prasa lietotājam ievadīt simbolu un pēc tam šo simbolu izdrukā vienas ekrāna rindiņas garumā. Aizpildi mainīgo vērtību tabulu! program v342; uses crt; var n:integer; q:string; begin n:=1; clrscr; gotoxy (10,8); writeln ('Ievadi kadu simbolu!'); gotoxy (15,9); readln (q); gotoxy (1,15); repeat write (q); n:=n+1; until n>80; readln; end. Vingrinājums: Pārveido doto programmu tā, lai lietotājs simbola vietā varētu ierakstīt vārdu! 3.5 nodarbība. Divkāršu ciklu konstrukcijas. Izmantotie operatori, funkcijas un procedūras: FOR-TO-DO, REPEAT-UNTIL, READLN, WRITELN, CLRSCR,DOTOXY, CHR, piešķiršanas operators. Piemēri: 1. Sastādi programmu, kas izdrukā reizināšanas tabulu no 1 līdz 10. Uzzīmē mainīgo lielumu vērtību tabulu! program v351; uses crt; var i,j: integer; begin clrscr; writeln ('programma izdrukas veselu skaitlu no 1 lidz 10 reizinasanas tabulu'); for i:=1 to 10 do begin writeln; for j:=1 to 10 do write (i,'*',j,'=',i*j,' '); end; readln; end. Piezīme: Iekšējais cikls ir treknrakstā izcelta rindiņa, ārējais ir gaišāk iekrāsotais apgabals. Jautājumi: 1. Cik reizes vērtības maina mainīgie i un j? 2. Kāda nozīme ir operatoram writeln ārējā ciklā? 3. Kāpēc ārējā ciklā tiek lietots BEGIN un END, bet iekšējā ciklā nē? 2. Sastādi programmu, kas prasa ievadīt simbolu un aizpilda ar ievadīto simbolu ekrāna diagonāli no kreisā augšējā stūra uz labo apakšējo. Katrs nākamais simbols jānovieto uz ekrāna pēc fiksēta laika intervāla. program v352; uses crt; var i,j,k:longint; b:char; y:real; begin clrscr; writeln ('Ievadi kadu simbolu!'); readln (b); clrscr; for i:=1 to 24 do begin j:=3*i; gotoxy (j,i); write (b); write (chr(7)); k:=1; repeat y:=sin(k); k:=k+1; until k=200000; end; readln; end. Piezīme: Tumšāk iekrāsotais programmas bloks ir iekšējais cikls, kura vienīgā nozīme ir laika intervāla palielināšana starp divu simbolu novietošanām uz ekrāna. Jautājumi: 1. Kāda nozīme ir katram no mainīgajiem? 2. Kāpēc i un j vērtības ciklā tiek mainītas ar dažādiem soļiem? 3. Kāda nozīme ir rindiņai “write(chr(7))”? 4. Kurš lielums programmā jāmaina, lai mainītos simbolu izdrukāšanas ātrums uz ekrāna? Vingrinājums: Pārveido doto programmu tā, lai lietotājs varētu izvēlēties programmas darbības ātrumu un simboli tiktu drukāti pa to pašu diagonāli pretējā virzienā. 3.6 nodarbība. Ciklu izmantošana simbolu virkņu apstrādē. Izmantotie operatori, funkcijas un procedūras: FOR-TO-DO, REPEAT-UNTIL, READLN, WRITELN, CLRSCR, GOTOXY, CHR, piešķiršanas operators. Piemēri: 1. Sastādi programmu, kas lietotājam prasa ievadīt noteikta garuma simbolu virkni un ievadīto virkni pārkopē apgrieztā secībā un izvada uz ekrāna. Sastādi mainīgo vērtību tabulu, ja lietotāja ievadītā simbolu virkne ir „procesors”! program v361; uses crt; var i,j:integer; q1,q2:string; begin clrscr; q2:=' '; {starp apastrofiem ir 15 atstarpes simboli} writeln ('Ievadi simbolu virkni lidz 15 simboliem!'); readln (q1); j:=length(q1); for i:=1 to j do q2[j+1-i]:=q1[i]; writeln (q2); readln; end. Piezīme: pārkopēšana notiek iekrāsotajā rindiņā. Jautājumi: 1. Kura programmas rindiņa nosaka simbolu virknes garumu? 2. Kāda nozīme ir programmas rindiņai „ q2:=' ';”? 2. Sastādi programmu, kas lietotājam prasa ievadīt simbolu virkni ar mazajiem latīņu alfabēta burtiem (ASCII kodi no 97 līdz 122) un izvada tos burtus, kuri virknē atkārtojas vismaz piecas reizes. program v362; uses crt; var i,j,n,s:integer; virkne:string; begin clrscr; writeln ('Ievadi simbolu virkni ar mazajiem latinu alfabeta burtiem!'); readln (virkne); n:=length(virkne); gotoxy (5,9); write ('Dotaja virkne atkartojas vismaz 5 reizes sekojosi burti:'); gotoxy (10,10); for j:=97 to 122 do begin s:=0; for i:=1 to n do if chr(j)=virkne[i] then s:=s+1; if s>=5 then write (chr(j)); end; readln; end. Piezīmes: 1. Gaišāk iekrāsotais ārējais cikls izvēlās pārbaudāmos burtus pēc simbolu kodiem, kas ir cikla mainīgais, un izvada burtu uz ekrāna, ja tas ir atkārtojies vismaz 5 reizes. 2. Treknrakstā attēlotais cikls pārbauda, vai izvēlētais simbols sakrīt ar katru no simbolu virknes simboliem, ja sakrīt, tad pieskaita „1” mainīgajam „s”. Vingrinājumi: 1. Pārveido programmu v361 tā, lai ievadītā simbolu virkne tiktu parādīta uz ekrāna vertikālā virzienā. 2. Sastādi programmu, kas izvada uz ekrāna no lietotāja ievadītās simbolu virknes otro pusi pretējā secībā. 3. Pārveido programmu v362, lai tiktu pārbaudīti lielie latīņu alfabēta burti. Praktiskie darbi programmēšanas valodā „Pascal”. Mācību materiālā ievietoti praktiskie darbi programmēšanas pamatu apgūšanai Pascal valodā. Materiāls sakārtots pa 3 nodaļām: ievads programmēšanā, sazarojumi, cikli. Pirmajā nodaļā aplūkoti uzdevumi, kuros izmantojami pamata Pascal valodas operatori, funkcijas un procedūras. Šeit arī var iegūt pirmās programmēšanas pamatiemaņas. Otrajā nodaļā aplūkotas sazarojuma konstrukcijas ar IF-THEN-ELSE un CASE-OF-END. Trešajā nodaļā aplūkotas dažādas ciklu veidošanas konstrukcijas. Šajā materiālā nav aplūkotas Pascal valodas grafiskās iespējas nelielā darba apjoma dēļ. Katrā no nodaļām ievietoti praktiskie darbi, vingrinājumi, patstāvīgais darbs un pārbaudes darbs ar novērtējuma kritērijiem. Praktiskajos darbos iekļauti uzdevumi ar to risinājumiem – gatavām programmām, norādījumi un jautājumi, kas rosina iedziļināties Pascal valodas sintaksē, programmu darbībā un atsevišķos programmēšanas un algoritmikas paņēmienos. Gatavo programmu sākumā norādīti izmantotie operatori, funkcijas un procedūras. Atsevišķiem uzdevumiem pievienotas blokshēmas un mainīgo vērtību maiņas tabulas. Dažos uzdevumos pēc gatavās programmas jānosaka, kādu uzdevumu programma pilda. Praktisko darbu beigās doti uzdevumi bez risinājumiem patstāvīgam darbam mājās vai stundās. Viena praktiskā darba veikšanai nepieciešama divu mācību stundu gara nodarbība un darbs izdrukājams uz divām A4 lappusēm. Vingrinājumos atrodami papildus uzdevumi par nodaļā aplūkotajām tēmām. Tos var izmantot kā papildus uzdevumus nodarbībās, gan arī kā uzdevumus patstāvīgam darbam vai gatavojoties pārbaudes darbam. Katras nodaļas beigās dots viens patstāvīgā darba variants, kas veidots līdzīgi pārbaudes darba struktūrai. Pārbaudes darbā iekļauti divi varianti. Katrā pārbaudes darbā ir viens uzdevums, kurā pēc gatavās programmas jānoskaidro tās atsevišķu rindiņu, bloku vai visas programmas veicamais uzdevums. Nodaļā ievietota arī pārbaudes darbu vērtēšanas kritēriju tabula. Praktiskie darbi izvietoti uz atsevišķiem failiem 11_nod – 36_nod. Vingrinājumi atrodami failos v1, v2 un v3, patstāsvīgie darbi - p1, p2 un p3, bet pārbaudes darbi atbilstoši k1, k2 un k3. Vērtēšanas kritēriji ievietoti failos vertes1, vertes2 un vertes3. Viss materiāls saarhivēts failā pascal_prakt.zip – un lejupielādējams no LIIS ftp servera. Īss praktisko darbu apraksts. 1. nodaļas nodarbības: 11_nod - informācijas izvadīšana uz monitora ekrāna un informācijas ievadīšana no tastatūras, 12_nod - piešķiršanas operatora lietošana, mainīgo lielumu vērtību maiņa, 13_nod - darbs ar teksta un simbolu tipa mainīgajiem, 14_nod - skaitlisko funkciju izmantošana, 15_nod - simbolisko funkciju izmantošana. 2. nodaļas nodarbības: 21_nod - sazarojuma konstrukcija IF-THEN-ELSE, 22_nod - sazarojuma konstrukcija sazarojumā, 23_nod - sazarojumi ar teksta mainīgajiem, 24_nod - testa veidošana, 25_nod - izvēles operatora izmantošana. 3. nodaļas nodarbības: 31_nod - FOR-TO-DO un FOR-DOWNTO-DO ciklu konstrukcijas, 32_nod - gadījumu skaitļu izmantošana ciklu konstrukcijās, 33_nod - cikla konstrukcija ar WHILE-DO, 34_nod - cikla konstrukcija ar REPEAT-UNTIL, 35_nod - divkāršu ciklu konstrukcijas, 36_nod - ciklu izmantošana simbolu virkņu apstrādē. Teorijas izklāsts šajā materiālā nav dots. To var atrast LIIS mācību materiālos: 1. Neklātienes programmētāju skolas mājaslapa. - Tomsons Dzintars, Znotiņa Inta, 2002. 2. PASCAL valoda skolēniem un skolotājiem. - Kuzmina Ludmila, 1998. K1. 1. variants. 1. Sastādi programmu, kas izvada ekrāna apakšējās daļas vidū sekojošu tekstu: “Es apgūstu programmēšanas valodu PASCAL” /1punkts/ 2. Sastādi programmu, kas prasa ievadīt līdz 15 simboliem garu virkni, nosaka ievadītās virknes garumu un priekšpēdējam virknes simbolam izvada ASCII kodu. /3 punkti/ 3. Paskaidro sekojošās programmas katras rindiņas nozīmi un iekrāsoto operatoru izpildes rezultātus: program k11; uses crt; var vards:string; simbols:char;skaits:integer; begin clrscr; writeln ('Ievadi lidz 10 burtiem garu vardu!'); readln (vards); skaits:=length(vards); simbols:=vards[2]; writeln ('Simbols ir ',pred(simbols)); readln; end. /2 punkti/ 4. Sastādi programmu, kas prasa lietotājam ievadīt argumenta vērtību no reālu skaitļu kopas, aprēķina funkcijas z x vērtību, to noapaļo ar divu decimālo zīmju precizitāti un rezultātu ( x 1) 2 izvada uz ekrāna kopā ar tekstu, kurā paskaidrots, ka rezultāts ir dotās funkcijas vērtība pie ievadītās argumenta vērtības. / 4punkti/ K1. 2. variants. 1. Sastādi programmu, kas izvada ekrāna labajā pusē sekojošu tekstu: “Vienkāršas PASCAL programmas paraugs”. /1punkts/ 2. Sastādi programmu, kas prasa ievadīt 3 simbolu kodus pēc ASCII tabulas (no 32 līdz 254) un izvada šiem kodiem atbilstošos simbolus blakus vienu otram ekrāna vidū. /3 punkti/ 3. Paskaidro sekojošās programmas katras rindiņas nozīmi un iekrāsoto operatoru izpildes rezultātus: program k12; uses crt; var koks:string; simbols:char; garums, kods:integer; begin clrscr; writeln ('Ievadi kada koka nosaukumu'); readln (koks); garums:=length(koks); kods:=ord(koks[garums]); writeln ('Ievadita koka nosaukums ir ',koks,', varda garums ir ',garums,' burti.'); writeln ('Kods ir ',kods); readln; end. /2 punkti/ 4. Sastādi programmu, kas prasa lietotājam ievadīt argumenta vērtību no reālu skaitļu kopas, aprēķina funkcijas y 20 x vērtību, to noapaļo ar trīs decimālo zīmju precizitāti un rezultātu ( x 3) 2 izvada uz ekrāna kopā ar tekstu, kurā paskaidrots, ka rezultāts ir dotās funkcijas vērtība pie ievadītās argumenta vērtības. / 4 punkti/ K-2 1. variants. 1. Sastādi programmu un uzzīmē blokshēmu, lai lietotājam tiek pieprasīts ievadīt veselu skaitli un izvadītu paziņojumu, vai ievadītais skaitlis ir pēc moduļa lielāks par 15. /2 balles/ 2. Paskaidro, kādu uzdevumu veic katrs atšķirīgi iekrāsotais programmas bloks: program k21; uses crt; var atbilde:char; begin clrscr; gotoxy (5,10); writeln ('Ka sauc ierici datora, kura nodrosina datora darbu tikla?'); writeln ('a) video karte,'); writeln ('b) tikla adapteris,'); writeln ('c) RAM'); gotoxy (10,16); write ('*** ***'); gotoxy (15,16); readln (atbilde); clrscr; gotoxy (15,15); case atbilde of 'a','c': writeln ('Nepareizi!'); 'b': writeln ('Pareizi!'); end; readln; end. /3 balles/ 3. Sastādi testa programmu, kas no piedāvā izvēlēties no datora atmiņas ierīcēm (HDD, FDD, RAM, ROM, CD-ROM) to ierīci, no kuras atkarīgs datorā noglabājamās informācijas daudzums. Ja pareizā izvēle ir izdarīta pirmajā reizē, tad lietotājs saņem 5 punktus. Nepareizas atbildes gadījumā tests jāpilda atkārtoti un par katru atkārtotu pildīšanu iegūstamo punktu skaits tiek samazināts par vienu. Testu beidzot jāizvada iegūtais punktu skaits. /5 balles/ K-2 2.variants. 1. Sastādi programmu un uzzīmē blokshēmu, lai lietotājam tiek pieprasīts ievadīt Latvijas lielākās upes nosaukumu un izvadīts paziņojums, vai nosaukums ievadīts pareizi. /2 balles/ 2. Paskaidro, kādu uzdevumu veic katrs atšķirīgi ietonētais programmas bloks: program k22; uses crt; var v:integer; z:char; label m; begin v:=0; m: clrscr; gotoxy (4,12); writeln ('Ka sauc datora ierici, kura nodrosina datora darbu tikla?'); writeln ('1) video karte,'); writeln ('2) tikla adapteris,'); writeln ('3) RAM'); gotoxy (20,17); write ('&&& &&&'); gotoxy (24,17); readln (z); v:=v+1; clrscr; if z='2' then begin gotoxy (10,10); write ('Pareizi, tu pareizi atbildeji ar ',v,'. reizi!'); readln; end else begin gotoxy (10,10); write ('Nepareizi, megini vel!'); readln; goto m; end; end. /3 balles/ 3. Sastādi programmu, kas prasa lietotājam noteiktā ekrāna vietā ievadīt pasaulē bagātākās programmu ražotāja firmas nosaukumu. Ja nosaukums netiek ievadīts pareizi (var rakstīt ar lieliem vai maziem burtiem), tad programmai jāpiedāvā to ievadīt atkārtoti. Programmai jāskaita mēģinājumu reizes. Ja pēc 5. reizes netiek ievadīta pareizā atbilde, tad tā jāizvada uz ekrāna. /5 balles/ K3, 1. variants. 1. Sastādi programmu, kas izvada veselus skaitļus no 8 līdz -6, šo skaitļu trešās pakāpes un pakāpju summu. Katram skaitlim ar atbilstošo pakāpi jāatrodas atsevišķā rindiņā. /3 punkti/ 2. Paskaidro, ko izvada uz ekrāna dotā programma. Kāda nozīme ir katram no mainīgajiem? Raksturo programmā ievietoto ciklu, cik cikla soļus paredzēts pildīt? program k31; uses crt; var m,n,i,j:integer; begin randomize; j:=0; clrscr; repeat m:=random(81); n:=random(24); i:=random(27)+65; j:=j+1; gotoxy (m,n); write (chr(i)); until j=10; gotoxy (40,1); readln; end. /3 punkti/ 3. Sastādi programmu, kas prasa lietotājam ievadīt simbolu virkni, kas sastāv no latīņu alfabēta lielajiem burtiem (ASCII kodi ir no 65 līdz 90) un izvada atskaiti par šajā virknē esošo simbolu lietošanas biežumu. /4 punkti/ K3, 2. variants. 1. Sastādi programmu, kas prasa lietotājam ievadīt 10 simbolu garu virkni, pārbauda šīs virknes garumu un izvada katru šīs virknes simbolu ar tā ASCII kodu atsevišķā rindiņā. /3 punkti/ 2. Paskaidro, ko izvada uz ekrāna dotā programma. Kāda nozīme ir katram no mainīgajiem? Raksturo programmā ievietoto ciklu, cik cikla soļus paredzēts pildīt? program k32; uses crt; var x,y,t,k,s:integer; begin s:=0; k:=1; clrscr; repeat x:=random(81); y:=random(24); t:=random(36)-20; s:=s+t; k:=k+1; gotoxy (x,y); write (t); until k=11; gotoxy (40,24); write ('summa=',s); readln; end. /3 punkti/ 3. Sastādi programmu, kas prasa lietotājam ievadīt simbolu virkni ar mazajiem latīņu alfabēta burtiem (ASCII kodi ir no 97 līdz 122) un izvada atskaiti par virknē lietoto simbolu biežumu. /4 punkti/ Patstāvīgais darbs. 1. Sastādi programmu, kas tavas skolas nosaukumu izvada ekrāna vidū. 2. Sastādi programmu, kas prasa ievadīt decimālskaitli ar 5 decimālcipariem, noapaļo šo skaitli ar viena decimālcipara precizitāti un izvada ekrāna apakšā. 3. Sastādi programmu, kas prasa ievadīt līdz 20 simbolu garu virkni, nosaka virnes garumu un izvada trešo simbolu no beigām un tam atbilstošo ASCII kodu pēc parauga: „virknes 7. simbols ir a un tā kods ir 97”. 4. Pēc programmas noskaidro, kāda funkcijas vērtība tiek aprēķināta: program vp1; uses crt; var u,t:real; begin clrscr; writeln ('Ievadi realu pozitivu skaitli!'); readln (t); u:=(sqrt(t*t-7))/sqr(t-1); u:=round(u*10000); u:=u/10000; writeln ('Funkcijas rezultats ir ',u:10:4); readln; end. Patstāvīgais darbs. 1. Uzzīmē blokshēmu pēc dotās programmas: program vp21; uses crt; var m,n,l:shortint; begin clrscr; writeln ('ievadi divus skaitlus!'); readln (m,n); writeln ('ievaditie skaitli ir ',m,' un ',n); if m=n then writeln ('ievaditie skaitli ir vienadi') else if m>n then begin l:=m; writeln('lielakais ir ',l); end else begin l:=n; writeln('lielakais ir ',l); end; readln; end. Kādu uzdevumu pilda dotā programma? Kāda nozīme ir mainīgajam l? 2. Izlabo kļūdas dotajā programmā, pārbaudi programmas darbību: program vp22; uses crt; label l1; var a:integer ; b:char; begin l1: clrscr; readln ('Ka sauc datora atminas ierici , kuraa pazud informacija pec stravas atslegsanas'); writeln (a); if (a=’RAM') or a='ram') or (a='operativa atmina') then; begin writeln('pareizi'); writeln('lai turpinatu, nospied enter'); else begin readn('nepareizi'); writeln ('lai turpinatu, nospied' enter); end; readln; writeln ('vai turpinat? J/N'); readln (b); if (b='J') and (b='j') then goto clrscr; 3. Uzzīmē blokshēmu un sastādi programmu, kas piedāvā lietotājam izvēlēties garuma vienības – centimetrus, collas (1colla=2,54cm) vai metrus, tad prasa ievadīt skaitliskās vērtības un pēc tam ievadītās vērtības izvada milimetros. Patstāvīgais darbs. 1. Sastādi programmu, kas 20 reizes uz ekrāna ar gadījuma rakstura koordinātēm novieto simbolu „A”pēc noteiktiem laika intervāliem (apm.1 sekundes). 2. Sastādi programmu, kas izvada uz ekrāna simbolus un to kodus pēc ASCII tabulas intervālā no 32 līdz 64. 3. Sastādi programmu, kas prasa lietotājam ievadīt simbolu virkni un izvada paziņojumu par komatu un punktu lietošanas biežumu. 4. Noskaidro, kādu uzdevumu veic sekojoša programma. Kāda nozīme ir katram no mainīgajiem? Norādi, kuras rindiņas programmā veido ciklu! Kāda nozīme ir saliktajam nosacījumam sazarojuma operatorā? program vp31; uses crt; var z,i,j,n,k,s:integer; begin clrscr; randomize; writeln ('Ievadi simbolu skaitu!'); readln (k); s:=0; n:=0; clrscr; repeat i:=random(81); j:=random(24); z:=random(26)+97; n:=n+1; gotoxy (i,j); write (chr(z)); if (i>40) and (z=97) then s:=s+1; until n=k; gotoxy (40,1); write ('saskaitito "a" burtu skaits ir ',s); readln; end. Vingrinājumi. 1. Sastādi programmu, kas ekrāna vidusdaļā izvada paziņojumu: Sveiciens jaunajiem programmētājiem! 2. Sastādi programmu, kas prasa lietotājam ievadīt datumu teksta veidā un izvada uz ekrāna tekstu, kurā iekļauts datums. 3. Sastādi programmu, kas izvada tavu vārdu ekrāna labajā pusē vertikāli no augšas uz leju tā, lai katrs burts būtu vienā rindiņā. 4. Sastādi programmu, kas uz ekrāna izvada vienādsānu trapeces zīmējumu no simbola „0” un pēc tam kursoru novieto ekrāna labajā apakšējā stūrī. 5. Kādu uzdevumu veic sekojoša programma? Kāda nozīme ir katrai programmas rindiņai? Kas un kurā vietā tiks parādīts uz ekrāna pēc programmas izpildes, kur atradīsies kursors pēc programmas izpildes? program vv11; uses crt; var krasa:string; begin clrscr; gotoxy (20,5); write ('Kada krasa tev patik!'); gotoxy (25,6); readln (krasa); gotoxy (20,11); write ('Tava krasa ir ',krasa,'!'); gotoxy (1,24); readln; end. 6. Sastādi programmu, kas prasa lietotājam ievadīt ātruma un laika vērtības un izvada veikto ceļu vienmērīgā kustībā (s=vt). 7. Sastādi programmu, kas prasa lietotājam ievadīt x vērtību, aprēķina izteiksmes y=2x 2+0,5x-14 vērtību un to izvada uz ekrāna. 8. Sastādi programmu, kas pēc lietotāja ievadītā riņķa rādiusa aprēķina riņķa laukumu. 9. Paskaidro, kādu vērtību iegūst mainīgais x pēc katras vērtību maiņas, ja lietotājs ievada skaitli „3”: program vv12; uses crt; var z:integer; x:real; begin x:=0; clrscr; writeln ('Ievadi veselu skaitli'); readln (z); x:=sqr(z)-5; x:=x+1; x:=x/5; writeln ('x=',x); readln; end. 10. Sastādi programmu, kas prasa lietotājam ievadīt „a” vērtību un atrisina kvadrātvienādojumu: x 2a=0. Izvadot atrisinājumu, parādīt ne vairāk, kā 3 decimālciparus. 11. Sastādi programmu, kas noapaļo lietotāja ievadīto reālo skaitli līdz vienai decimālai zīmei. 12. Sastādi programmu, kas prasa lietotājam ievadīt skaitli, aprēķina skaitļa moduli un kvadrātsakni un izvada aprēķinātos lielumus ekrāna apakšējā daļā. 13. Sastādi programmu, kas prasa lietotājam ievadīt savu vārdu un izvada burtu skaitu vārdā un vienu no vārda vidējiem burtiem. 14. Sastādi programmu, kas izvada matemātisko darbību zīmju ASCII kodus. 15. Sastādi programmu, kas noskaidro, kādi simboli pēc kodu tabulas atrodas blakus simbolam „@”, kādi ir šo triju simbolu kodi. 16. Paskaidro, kāda nozīme ir katrai programmas rindiņai? Ko izvadīs uz ekrāna sarkanā krāsā iezīmētā programmas rindiņa? program vv13; uses crt; var g:string; begin clrscr; writeln ('Ievadi 10 simbolu garu virkni!'); readln(g); writeln ('simbolu virknes ',length(g),'. simbols ir ',g[length(g)]); readln; end. Vingrinājumi. 1. Sastādi testa programmu, kas pieprasa lietotājam ievadīt trīs trīsstūra leņķus grādos un pārbauda, vai 1. neviens no ievadītiem leņķiem nav lielāks vai vienāds par 180 grādiem, 2. vai trīsstūra leņķu summa ir 180 grādu. Ja visi ievadītie leņķu lielumi atbilst pirmajam nosacījumam, lietotājs nopelna vienu punktu, bet ja tie atbilst arī 2. nosacījumam, tad lietotājs iegūst divus punktus. Uzdevums jāliek pildīt 5 reizes. Pēc katras uzdevuma izpildīšanas reizes jāpaziņo par kļūdām, ja tādas ir un jāparāda kopā iegūtie punkti. 2. Sastādi programmu, kas pieprasa lietotājam ievadīt divus trīsstūra leņķus grādos, pārbauda to atbilstību, izrēķina trešo leņķi un noskaidro, vai trīsstūris ir vienādmalu, vienādsānu vai neregulārs. 3. Sastādi programmu, kas pieprasa lietotājam 1. izvēlēties informācijas vienības kilobaitos, megabaitos vai gigabaitos, 2. ievadīt skaitlisko vērtību izvēlētā vienībā. Programmai jāpārvērš ievadītā vērtība baitos un jāizvada uz ekrāna. 4. Sastādi programmu, kas ļauj lietotājam no trim dažādām vienībām izvēlēties ievadāmās un izvadāmās informācijas vienības un pārvērš lietotāja ievadītās skaitliskās vērtības no vienām vienībām uz otrām. 5. Sastādi testa programmu, kas 10 dažādām datora ārējām ierīcēm prasa izvēlēties, vai tās ir ievadierīces, vai izvadierīces. Par katru pareizo atbildi jādod viens punkts. Testu beidzot jānovērtē testa rezultāti: ja iegūto punktu skaits lielāks par 6, jāpaziņo, ka tests ir nokārtots, pretējā gadījumā tests nav nokārtots. 6. Paskaidro, kādu uzdevumu pilda dotā programma, kāda nozīme ir katrai programmas rindiņai: program tests-vv21; uses crt; var k,s:integer; m:char; begin clrscr; s:=0; gotoxy (15,5); write ('Izvelies testa tematu numuru:'); gotoxy (20,6); write ('1. programmatura'); gotoxy (20,7); writeln ('2. aparatura'); gotoxy (25,10); write ('### ###'); gotoxy (29,10); readln (k); if k=1 then begin clrscr; gotoxy (4,5); writeln ('Kura no dotam programmam ir teksta apstrades programma:'); writeln('a. calc,'); writeln('b. paint,'); writeln('c. notepad,'); writeln('d. access,'); writeln('e. kwriter,'); writeln('f. notepad, kwriter'); gotoxy (25,15); write ('### ###'); gotoxy (29,15); readln (m); case m of 'c','e': s:=s+1; 'f': s:=s+2; end; end else begin clrscr; gotoxy (4,5); writeln ('Kuri no dotiem faktoriem ietekme datora darbibas atrumu:'); writeln('a. procesora ventilatora griesanas atrums,'); writeln('b. procesora takts frekvence,'); writeln('c. istabas temperatura,'); writeln('d. cieta diska lielums,'); writeln('e. RAM lielums,'); writeln('f. RAM lielums un procesora takts frekvence'); gotoxy (25,15); write ('### ###'); gotoxy (29,15); readln (m); case m of 'b','e': s:=s+1; 'f': s:=s+2; end; end; clrscr; gotoxy (10,15); case s of 2: write ('Apsveicu, Tu testa esi ieguvis labus rezultatus!'); 1: write ('Atbilde ir daleji pareiza!'); 0: write ('Atbilde nav pareiza!'); end; readln; end. Vingrinājumi. 1. Sastādi programmu, kas izdrukā uz ekrāna veselus skaitļus no 50 līdz 30 un šo skaitļu kvadrātsaknes. 2. Sastādi programmu, kas izvada simbolu ASCII kodus no 32 līdz 254 un šiem kodiem atbilstošos simbolus. Kādos intervālos atrodas latīņu alfabēta lielie un mazie burti? 3. Sastādi programmu, kas ar lietotāja izvēlētu simbolu norobežo ekrāna vertikālās malas. 4. Sastādi programmu, kas ar lietotāja izvēlētu simbolu un ātrumu ierāmē ekrānu pulksteņrādītāja kustības virzienā sākot no ekrāna kreisā augšējā stūra. 5. Sastādi programmu, kas pārvieto simbolu pa ekrāna apmali. (Simbols ir jāizvada uz ekrāna un pēc noteikta laika jānodzēš, tā vietā izvadot atstarpes simbolu.) 6. Sastādi programmu, kas izvada dalījuma tabulu ar lietotāja izvēlētiem dalāmajiem. Dalītājiem jāmainās no 2 līdz 9. Rezultātam jābūt ar 3 zīmju precizitāti aiz komata un tiem jābūt izvietotiem stabiņos pēc dalītājiem. 7. Neizmantojot operatoru GOTO sastādi programmu, kas lietotājam prasa no dotām programmām (Access, AVG, VC, FoxPro, Lotus Notes ) izvēlēties antivīrusa programmu. Ja lietotājs neizvēlās pareizo atbildi, tam atkārtoti jāliek veikt izvēli, līdz iegūta pareizā atbilde. Programmai jāsaskaita piegājienu skaits un jāizvada uz ekrāna. 8. Sastādi programmu, kas dotajā simbolu virknē saskaita lietotāja ievadītā simbola lietošanas reizes. 9. Izpēti, kādu uzdevumu veic dotā programma? Kas tiek panākts ar iekrāsoto programmas bloku? Kāda nozīme ir rindiņai “k:=0”, kā darbosies programma, ja šo rindiņu pārvietos par 2 pozīcijām uz augšu? Program vv31; uses crt; var k,l:integer; q:char; begin clrscr; for l:=1 to 20 do begin while (k<>42) and (k<>43) and (k<>45) and (k<>47) do begin k:=41+random(8); write(k,' '); end; q:=chr(k); writeln (k,' - ',q); k:=0; end; readln; end. 10. Izpēti, kādu uzdevumu pilda sekojošā programma, kāda nozīme ir ierāmētajam programmas blokam, gaišāk un tumšāk iekrāsotiem blokiem. Kāda nozīme ir katram no mainīgajiem? program vv32; uses crt; var n,m,k,p:longint;y:real; begin k:=1; clrscr; writeln ('ievadi atrumu (1/2/3)'); readln (n); case n of 1: m:=50000; 2: m:=200000; 3: m:=500000; end; while k<25 do begin gotoxy (40,k); write (chr(42)); k:=k+1; p:=1; repeat y:=sin(p); p:=p+1; until p=m; end; readln; end. Vērtēšanas kritēriji. K-1 Vērtēšanas kritēriji. K-2 SES Graph; при написании этой строчки Паскаль предоставит нам целый ряд процедур и других средств, позволяющих рисовать на экране. Для переключения в графический режим (инициализации) служит процедура InitGraph Device означает тип вашего видеоадаптера (0 - сам определит Тип вaшего адаптера) Mode номер графического режима USES Graph; Var Device, Mode :Indeger; Begin Device:=0; InitGraph(Device, Mode, ‘d:\bp\bgi’); Circle(100,80,50) /окружность, 100координата х, 80_у, 50-радиус/ PutPixel(50,100,Green); /точка, 50_ координата х, 100_у,цвет/ Rectangle(150,150,50,200 )/ прямоугольник координады правого и левого углов/ Line(100,50,250,150); Ellipse(200,150,0,360,100,40) /200и150центр окружности 0 начальный угол дуги эллипса 360 кончный угол дуги 100 радиус по оси х, 40 радиус по оси у/ Readln; CloseGraph; Readln; End. SetColor(Yellow)/приказывает компьютеру отныне рисовать фигуры желтым цветом/ SetLineStyle(0,0,ThickWidth); /NormWidth стиль линий/ SetFillStyle(1,Green); /устанавливает цвет линий/ FloodFill(200,150,Blue)/заливка ClearDevice стирает все с экрана в графическом режиме USES Graph; при написании этой строчки Паскаль предоставит нам целый ряд процедур и других средств, позволяющих рисовать на экране. Для переключения в графический режим (инициализации) служит процедура InitGraph Device означает тип вашего видеоадаптера (0 - сам определит Тип вaшего адаптера) Mode номер графического режима USES Graph; Var Device, Mode :Indeger; Begin Device:=0; InitGraph(Device, Mode, ‘d:\bp\bgi’); Circle(100,80,50) /окружность, 100координата х, 80_у, 50-радиус/ PutPixel(50,100,Green); /точка, 50_ координата х, 100_у,цвет/ Rectangle(150,150,50,200 )/ прямоугольник координады правого и левого углов/ Line(100,50,250,150); Ellipse(200,150,0,360,100,40) /200и150центр окружности 0 начальный угол дуги эллипса 360 кончный угол дуги 100 радиус по оси х, 40 радиус по оси у/ Readln; CloseGraph; Readln; End. SetColor(Yellow)/приказывает компьютеру отныне рисовать фигуры желтым цветом/ SetLineStyle(0,0,ThickWidth); /NormWidth стиль линий/ SetFillStyle(1,Green); /устанавливает цвет линий/ FloodFill(200,150,Blue)/заливка ClearDevice стирает все с экрана в графическом режиме Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Модуль 4. Алгоритмизация и программирование 1. Понятие алгоритма 1.1 Требования к алгоритмам 1.2 Способы записи алгоритмов 1.3 Блок-схемы 2. Алгоритмические конструкции 2.1 Ветвление 2.2 Цикл 3. Исполнение фрагментов программ 4. Анализ фрагментов программ. Обработка двумерных массивов 5. Оценка скорости работы алгоритмов 6. Работа с исполнителями 7. Задания для самостоятельного решения Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 1. Понятие алгоритма Алгоритм – это строгая и четкая последовательность действий, выполнение которых приводит к определенному результату. Требования к алгоритмам 1) Ориентированность на конкретного исполнителя. 2) Понятность для исполнителя (алгоритм составляется в соответствии с системой команд исполнителя). 3) Точность (каждая команда должна определять однозначное действие исполнителя). 4) Конечность (наличие конца алгоритма через конечное число шагов). 5) Результативность (получение нужного результата по окончанию алгоритма). 6) Массовость (применимость для широкого класса задач). 7) Формальность исполнения (во время исполнения алгоритма исполнитель не должен задумываться над сутью выполняемых действий). Способы записи алгоритмов 1) Словесный (описание алгоритма с помощью слов русского языка). Пример. Алгоритм включения компьютера. Подойти к компьютеру. Включить монитор. Включить системный блок. 2) Запись на алгоритмическом языке Пример. Алгоритм нахождения минимального из двух введенных чисел. Начало Ввод числа х Ввод числа у Если х<у То Вывод х Иначе Вывод у Все Конец 3) Блок-схема (Графическое представление алгоритма) (будет рассмотрен ниже) 4) Программа (запись алгоритма на языке программирования) Пример. Определение четности введенного числа. BASIC INPUT “Введите целое число”; X A$=”четное” IF X MOD 2<>0 THEN A$=”не”+A$ PRINT “Введенное число ”, A$ Pascal Var x: Integer; Str: String; Begin Write(‘Введите целое число’); ReadLn(x); If x Mod 2 <> 0 Then Str:=’не’+Str; WriteLn(‘Введенное число ‘, Str); End. Блок-схемы Блок-схемы являются одним из графических способов представления алгоритмов. Блоксхема состоит из блоков, соединенных линиями. Чаще всего используются блоки следующих типов: - выполнение операции; - выбор направления выполнения алгоритма в зависимости от выполнения условия; - ввод/вывод данных; Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования - начало и конец алгоритма. 2. Алгоритмические конструкции Рис.1. Группа шагов алгоритма, выполняемых последовательно друг за другом без каких-либо условий, называется линейной последовательностью. На рис.1. изображена линейная Действие 1. последовательность, состоящая из двух шагов. Ветвление представляет собой алгоритмическую конструкцию, в которой выполнение того или иного шага зависит от истинности условия. Говорят, что конструкция «ветвление» записана Действие 2. в полной форме, если в ней присутствуют команды как для случая истинного условия, так и для его ложности. На рис.2 приведена блоксхема ветвления в полной форме. Конструкция ветвления в полной форме реализуется следующим образом. Если условие истинно, то выполняется действие 1, если условие ложно, то выполняется Рис.2. действие 2. да нет Если в ветвлении Условие присутствуют действия только для истинности или только для случая Действие 1 Действие 2 ложности условия, то говорят, что она записана в неполной (в сокращенной) форме. На рис. 3 приведены две блок-схемы ветвления в сокращенной форме. Конструкция ветвления в сокращенной форме реализуется следующим образом. Если выбрано направление, в котором отсутствует действие, то конструкция ветвления не выполняется и управление получает Рис.3. да Условие Условие Действие нет Действие Рис.4. конструкция, ветвлением. следующая за Цикл представляет собой алгоритмическую конструкцию, в которой многократно выполняется одна и та же последовательность шагов, называемая телом цикла. Каждое однократное исполнение цикла называется итерацией. Если тело цикла будет выполнено N раз, говорят, что произведено N итераций. Различают два вида циклов: циклы с заранее известным числом повторений и циклы с заранее неизвестным числом повторений. Цикл с заранее известным числом повторений называют циклом с параметром. Блок-схема цикла с параметром помещена на рис.4. Задание начальных параметров цикла Да Условие окончания цикла Нет Тело цикла Задание новых значений параметров Выход из цикла Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования В циклах с заранее неизвестным числом повторений для того, чтобы определить момент прекращения выполнения тела цикла, используется условие цикла. Если при истинности условия цикл продолжается, то такое условие называется условием продолжения цикла. Если при истинности условия цикл завершается, то такое условие называется условием завершения цикла. В этом случае цикл продолжается до тех пор, пока условие не станет истинным. Различают циклы с проверкой условия перед выполнением очередной итерации и циклы с проверкой условия после выполнения очередной итерации. Первые называются циклами с предусловием (рис. 5), вторые – с постусловием (рис. 6). Алгоритмическая конструкция называется вложенной, если она содержится внутри другой алгоритмической конструкции. На рис. 7 команда ветвления вложена в цикл. Рис.6. Рис.5. Рис.7. да нет Условие нет x<>y Действие Действие да да нет Условие да нет x>y x:=x-y y:=y-x Задание 1. (Задание А8 демоверсии 2004 г.) Алгоритмическая конструкция какого типа изображена на фрагменте блок-схемы (см. рис. 8): 1) линейная; 2) циклическая; 3) разветвляющаяся; 4) вспомогательная. Решение. На рис. 8 изображен ромб, внутри которого записано условие, и две исходящие из него стрелки. Фрагмент условия представляет собой блок ветвления в полной форме. Ответ: №3. Задание 2. (Задание А6 демоверсии 2005 г.) Фрагмент блок-схемы (см. рис. 9) представляет алгоритм, который содержит команды ветвления: да да 1 серия Серия 1 Условие Усл.1. да Серия 2 Рис.8. нет Рис.9. нет серия 2 Усл. 2 нет Серия 3 Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 1) команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме; 2) две команды ветвления в полной форме, одна из которых вложена в другую; 3) две команды ветвления в сокращенной форме, одна из которых вложена в другую; 4) команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме. Решение. Обе команды ветвления, входящие в блок-схему на рис. 9, - полные, при чем одна из них вложена в другую. Поэтому верным будет вариант ответа №2. Ответ: 2. Задание 3. (Задания А29 демоверсии 2005 г., А6 демоверсии 2006 г.) Определите значение целочисленной переменной х после выполнения следующего фрагмента блок-схемы (см. рис.10) 1) 1; 2) 5; 3) 10; 4) 15. Решение. В блок-схеме присутствует повторяющаяся последовательность действий (цикл). Для того, чтобы не ошибиться при выполнении блок-схемы, составим таблицу (см. Таблицу 1), в которую будем заносить значения переменных и результаты проверки условий на каждом шаге. Таблица 1. № итерации 0 Значение х Значение у 55 75 1 55 20 2 35 20 3 15 20 4 15 5 5 10 5 6 5 5 Рис.10. x:=55; y:=75 нет x<>y да да x>y x:=x-y нет y:=y-x x<>y 55<>75 – да Выполняем тело цикла 55<>20 – да Выполняем тело цикла 35<>20 – да Выполняем тело цикла 15<>20 – да Выполняем тело цикла 15<>5 – да Выполняем тело цикла 10<>5 – да Выполняем тело цикла 5<>5 – нет Выход их цикла; алгоритма x>y 55>75 – нет, y:=y-x=75-55=20 55>20 – да x:=x-y=55-20=35 35>20 – да x:=x-y=35-20=15 15>20 – нет, y:=y-x=20-15=5 15>5 – да x:=x-y=15-5=10 10>5 – да x:=x-y=10-5=5 завершение Таким образом, переменная х после выполнения данного фрагмента программы приняла значение 5, что соответствует ответу под номером 2. Ответ: 2. 3. Исполнение фрагментов программ В условии задачи приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, который наиболее вам близок. На остальные два фрагмента обращать внимание не следует, чтобы не терять время. Задание 4. (Задание А9 демоверсии 2004 г.) Определите значение целочисленных переменных x, y и t после выполнения фрагмента Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования программы (ниже представлена программирования): Бейсик x=5 y=7 t=x x=y MOD x y=t 1) x=2; y=5; t=5; 2) x=7; y=5; t=5; 3) x=2; y=2; t=2; 4) x=5; y=5; t=5. одна и та же программа, представленная на разных языках Паскаль x:=5; y:=7; t:=x; x:=y Mod x; y:=t; Алгоритмический x:=5 y:=7 t:=x x:=mod (x,y) y:=t Решение. Для решения этого задания удобно составить таблицу: Значение х Значение y Шаг после шага после шага x=5 5 Не определено y=7 5 7 t=x 5 7 x=y MOD x 2 7 y=t 2 5 Значение t после шага Не определено Не определено 5 5 5 Таким образом, верным является вариант ответа №1. Ответ: 1. Задание 5. (Задание А7 демоверсии 2006 г.) Определите значение целочисленных переменных a и b после выполнения фрагмента программы (ниже представлена одна и та же программа, представленная на разных языках программирования): Бейсик Паскаль Алгоритмический a=42 a:=42; a:=42 b=14 b:=14; b:=14 a=a\b a:=a Div b a:=Div (a,b) b=a*b b:=a*b b:=a*b a=b\a a:=b Div a a:=Div (b,a) 1) a=42; b=14; 2) a=1; b=42; 3) a=0; b=588; 4) a=14; b=42. Решение. Для решения этого задания удобно составить таблицу: Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Значение a после шага Шаг a=42 b=14 a=a\b b=a*b a=b\a 42 42 3 3 14 Значение b после шага Не определено 14 14 42 42 Таким образом, верным является вариант ответа №4. Ответ: 4. 4. Анализ фрагментов программ. Обработка двумерных массивов Двумерный массив А размером N*M можно изобразить в виде таблицы, состоящей из N строк и M столбцов. Обращение к каждому элементу в массиве осуществляется указанием имени массива (в нашем случае - А) и двух чисел - номера строки и номера столбца, на пересечении которых он находится. Эти числа называются индексами элемента в массиве, записываются через запятую в круглых (для языка Бейсик) или в квадратных (для языков Паскаль и алгоритмического) скобках. Задание 6. (Задание А10 демоверсии 2004 г.) Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 5 For n:=1 To 5 Do н.ц. для n от 1 до 5 FOR k=1 TO 5 For k:=1 To 5 Do н.ц. для k от 1 до 5 B(n,k)=n+k B[n,k]:=n+k; B[n,k]:=n+k NEXT k к.ц. Next n к.ц. Чему будет равно значение B(2,4)? 1) 9; 2) 8; 3) 7; 4) 6. Решение. 1-й способ. Для выполнения поставленного задания можно заполнить таблицу в соответствии с представленной программой: k= 1 2 3 4 5 n= 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9 5 6 7 8 9 10 Элемент В(2,4) находится на пересечении 2-й строки и 4-го столбца, его значение равно 6, что соответствует варианту ответа №4. Заметим, что этот способ решения является нерациональным, т.к. требовалось найти значение лишь одного элемента, не зависящее от значений других элементов. Поэтому для данного задания лучше применить другой способ решения. 2-й способ. Из текста программы следует, что значение каждого элемента равно сумме его индексов, поэтому В(2,4)=2+4=6. Ответ: 4. Задание 7. Все элементы двумерного массива А размером 4*4 элемента первоначально были равны 0. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы (ниже приводится одна и та же программа, записанная на разных языках программирования): Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 4 FOR k=n TO 4 For k:=n To 4 Do н.ц. для k от n до 4 A(n,k)=1 A[n,k]:= 1; A[n,k]:=1 Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования к.ц. к.ц. NEXT k Next n Сколько элементов массива в итоге будут равны 1? Решение. Для выполнения задания составим таблицу: n k Значения A[n,k]=1 1 1,2,3,4 A[1,1] A[1,2] A[1,3] A[1,4] 2 2,3,4 A[2,2] A[2,3] A[2,4] 3 3,4 A[3,3] A[3,4] 4 4,4 A[4,4] Из таблицы видно, что количество элементов, равных 1 в массиве А равно 4+3+2+1=10. Ответ: 10. Задание 8. (Задание А8 демоверсии 2006 г.) Все элементы двумерного массива А размером 10*10 элементов первоначально были равны 0. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы (ниже приводится одна и та же программа, записанная на разных языках программирования): Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 4 FOR k=n TO 4 For k:=n To 4 Do н.ц. для k от n до 4 A(n,k)=A(n,k)+1 Begin A[n,k]:=A[n,k]+1 A(k,n)=A(k,n)+1 A[n,k]:=A[n,k]+1; A[k,n]:=A[k,n]+1 NEXT k A[k,n]:=A[k,n]+1; к.ц. Next n End; к.ц. Сколько элементов массива в итоге будут равны 1? 1) 0; 2) 16; 3) 12; 4) 4. Решение. Для выполнения поставленного задания заполним таблицу: n 1 k 1 1 2 1 3 1 4 2 2 2 3 2 4 3 3 3 4 4 4 Вычисление A[n,k] A[1,1]= A[1,1]+1=0+1=1 A[1,1]= A[1,1]+1=1+1=2 A[1,2]= A[1,2]+1=0+1=1 A[2,1]= A[2,1]+1=0+1=1 A[1,3]= A[1,3]+1=0+1=1 A[3,1]= A[3,1]+1=0+1=1 A[1,4]= A[1,4]+1=0+1=1 A[4,1]= A[4,1]+1=0+1=1 A[2,2]= A[2,2]+1=0+1=1 A[2,2]= A[2,2]+1=1+1=2 A[2,3]= A[2,3]+1=0+1=1 A[3,2]= A[3,2]+1=0+1=1 A[2,4]= A[2,4]+1=0+1=1 A[4,2]= A[4,2]+1=0+1=1 A[3,3]= A[3,3]+1=0+1=1 A[3,3]= A[3,3]+1=1+1=2 A[3,4]= A[3,4]+1=0+1=1 A[4,3]= A[4,3]+1=0+1=1 A[4,4]= A[4,4]+1=0+1=1 A[4,4]= A[4,4]+1=1+1=2 Значение A[n,k] A[1,1]=2 A[1,2]=1 A[2,1]=1 A[1,3]=1 A[3,1]=1 A[1,4]=1 A[4,1]=1 A[2,2]=2 A[2,3]=1 A[3,2]=1 A[2,4]=1 A[4,2]=1 A[3,3]=2 A[3,4]=1 A[4,3]=1 A[4,4]=2 Исходя из таблицы видно, что 4 элемента массива А будут равны 2, 12 элементов будут равны 1, все остальные – равны нулю. Следовательно, правильным будет вариант ответа №3. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Ответ: 3. 5. Оценка скорости работы алгоритмов Данное задание проверяет знание зависимости количества операций при обработке массива от размера массива. В зависимости от алгоритма эта зависимость может быть линейной, квадратичной или логарифмической. В некоторых случаях алгоритм в задании описывается явным образом, в некоторых экзаменуемый должен вспомнить стандартный алгоритм, применяемый в таком случае. Если в задании встречается определение «эффективный алгоритм», то это означает, что из известных стандартных алгоритмов надо выбрать самый быстрый. Задание 9. Следующий фрагмент программы записывает в переменную Max максимальный элемент в двумерном массиве Dist размера N*N, наполненном неотрицательными числами: For i:=1 to N Do For j:=1 to N Do If Dist[I,j]>Max Then Max:= Dist[I,j]; На очень медленном компьютере эта программа при N=1000 работала 5 секунд. Определите время работу этой программе на том же компьютере при N=2000: 1) 10 сек.; 2) 20 сек.; 3) 30 сек.; 4) 40 сек. Решение. В данном алгоритме два вложенных оператора цикла. При увеличении N в два раза количество проверок (выполнений оператора If) возрастет в 22, т.е. в 4 раза, что соответствует варианту ответа №2. Ответ: 2. Задание 10. (Задание А19 демоверсии 2005 г.) Стандартный алгоритм вычисления среднего арифметического элементов числового массива из миллиона элементов работает 0, 5 сек. Оцените время работы того же алгоритма на том же компьютере, если длина массива 3 миллиона. 1) 2) 3) 4) 1 сек.; 1,5 сек.; 3 сек.; 4,5 сек. Решение. Для вычисления среднего арифметического N чисел необходимо выполнить N операций сложения. При увеличении количества элементов в 3 раза время выполнения алгоритма возрастает линейно - так же в 3 раза. Следовательно, время будет равно 0,5*3=1,5(сек), что соответствует варианту ответа №2. Ответ: 2. 6. Работа с исполнителями Задание 11. (Задания А 23 демоверсии 2005, А20 демоверсии 2006 г.) Исполнитель Черепашка перемещается на экране компьютера, оставляя след виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существуют две команды: Вперед n, где n - целое число, вызывающая передвижение черепашки на n шагов в направлении движения. Направо m, где m - целое число, вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори 5 [Команда1 Команда2] означает, что последовательность команд в скобках выполняется 5 раз. Черепашки был дан для исполнения следующий алгоритм: Повтори 5 [вперед 10 направо 72] Какая фигура появится на экране? 1) Незамкнутая ломаная линия Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 2) Правильный треугольник 3) Квадрат 4) Правильный пятиугольник. Решение. Исполнитель Черепашка прочертит на экране 5 линий, угол между соседними из которых будет равен 72(=360/5). Поэтому в результате получится правильный пятиугольник, что соответствует варианту ответа №4. Ответ: 4. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Список литературы № 1. 2. 3. 4. 5. 6. 7. 8. 9. Название литературы Учебно-тренировочные материалы для подготовки к единому государственному экзамену. Информатика/ Крылов С.С., Лещинер В.Р., Супрун П.Г., Якушкин П.А.; под ред. Лещинера В.Р. – М. Интеллект-Центр, 2005 – 136 с. Андреева Е.В. Информатика. Основы алгоритмизации. Тетрадь с печатной основой. – Саратов: «Лицей», 2000. – 80 с. Экзаменационные вопросы и ответы. 11 класс/ Л.Л. Босова, Н.Д. Угринович. – М.: БИНОМ. Лаборатория знаний, 2003. – 191 с.: ил. Шпаргалки по информатике./ Е.Ю. Пестерева. – М.: Издательство Информатика и информационные технологии. Учебник для 10-11 классов/Н.Д. Угринович. – М.: Лаборатория Знаний, 2003. 512 с.: ил. Угринович Н.Д., Босова Л.Л., Михайлова Н.И. Практикум по информатике и информационным технологиям. Учебное пособие для образовательных учреждений. – М.: Лаборатория Базовых Знаний, 2001. 256 с.: ил. Единый государственный экзамен по информатике. Демонстрационный вариант 2004 г. Единый государственный экзамен по информатике. Демонстрационный вариант 2005 г. Единый государственный экзамен по информатике. Демонстрационный вариант 2006 г. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Задания для самостоятельного решения 1. Определите значение переменной b после выполнения следующего фрагмента алгоритма (см. рис.11): 1)6; 2)5; 3)3; 4)4. Рис.11. a:=1 b:=2 2. Определите значение переменной a после выполнения алгоритма (см. рис.12): 1) 5; 2) 11; 3) 23; 4) 47. 3. Определите значение переменной выполнения фрагмента алгоритма (см. Рис. 13). s c:=1 после b:=a+b c:=c+1 Рис.12. да n:=0 начало a:=2 s:=0 b:=3 да b:=b-1 b>0 c<4 Рис.13. нет да нет n>100 да нет n четно нет s=s+n a=a*2+1 n:=n+1 4. Определите значение конец целочисленных переменных x, y и t после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический x=4 x:=4; x:=4 y=16 y:=16; y:=16 t=x t:=x; t:=x x=y MOD x x:=y Mod x; x:=MOD (y,x) y=t+1 y:=t+1; y:=t+1 1) x=4; y=1; t=0; 2) x=0; y=5; t=4; 3) x=0; y=4; t=5; 4) x=4; y=1; t=5. 5. Определите значение целочисленных переменных b и c после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования a=37 b=a MOD 10 c=a\10 1) b=3; c=7; 2) b=7; c=3; 3) b=3; c=4; 4) b=4; c=3. a:=37; b:=a Mod 10; c:=a Div 10; a:=37 b:=Mod (a,10) c:= Div (a,10) 6. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический a=20 a:=20; a:=20 b=7 b:=7; b:=7 a=a\b a:=a Div b a:=Div (a,b) b=a*b b:=a*b; b:=a*b a=b\a a:=b Div a; a:=Div (b,a) 1) a=7; b=21; 2) a=7; b=7; 3) a=7; b=14; 4) a=3; b=21. 7. Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 500 For n:=1 To 500 Do н.ц. для n от 1 до 500 FOR k=1 TO 500 For k:=1 To 500 Do н.ц. для k от 1 до 500 B(n,k)=n*(n+1)*k/2 B[n,k]:= n*(n+1)*k/2 B[n,k]:= n*(n+1)*k/2 NEXT k к.ц. NEXT n к.ц. Чему будет равно значение B(19,21)? 8. Все элементы массива А размером 10*10 элементов первоначально были равны 1. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 5 For n:=1 To 5 Do н.ц. для n от 1 до 5 FOR k=1 TO 5 For k:=1 To 5 Do н.ц. для k от 1 до 5 А(n,k)=A(n,k)-1 A[n,k]:= A[n,k]-1 A[n,k]:= A[n,k]-1 NEXT k к.ц. NEXT n к.ц. Сколько элементов массива в результате будут равны 0? 9. Все элементы массива А размером 10*10 элементов первоначально были равны 1. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 5 FOR k=1 TO n+1 For k:=1 To n+1 Do н.ц. для k от 1 до n+1 А(n,k)=A(n,k)-1 Begin A[n,k]:= A[n,k]-1 А(n,k+1)=A(n,k)-1 A[n,k]:= A[n,k]-1; A[n,k+1]:= A[n,k]-1 NEXT k A[n,k+1]:= A[n,k]-1; к.ц. NEXT n End; к.ц. Сколько элементов массива в результате будут равны 0? 10. Стандартный алгоритм вычисления среднего арифметического элементов числового массива из тысячи элементов работает 0,01 сек. Оцените время работы того же алгоритма на том же компьютере, если длина массива миллион элементов. 1) 1 сек.; 2) 5 сек.; 3) 10 сек.; 4) 0,1 сек. 11. Исполнитель Черепашка перемещается на экране компьютера, оставляя след виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существуют две команды: Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Вперед n, где n - целое число, вызывающая передвижение черепашки на n шагов в направлении движения. Направо m, где m - целое число, вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори 5 [Команда1 Команда2] означает, что последовательность команд в скобках выполняется 5 раз. Черепашки был дан для исполнения следующий алгоритм: Повтори 4 [вперед 10 направо 120] Какая фигура появится на экране? 1) Незамкнутая ломаная линия 2) Правильный треугольник 3) Квадрат 4) Правильный пятиугольник. 12. Исполнитель - тот же, что и в предыдущем задании. Какое натуральное число следует поставить вместо переменной N в следующем алгоритме: Повтори 6 [вперед 60 направо N] Чтобы на экране появился правильный пятиугольник? Ответы к заданиям для самостоятельного решения Задание Ответ 1 2 2 3 3 2550 4 2 5 2 6 3 7 3990 Модуль 4. Алгоритмизация и программирование 1. Понятие алгоритма 1.1 Требования к алгоритмам 1.2 Способы записи алгоритмов 1.3 Блок-схемы 2. Алгоритмические конструкции 2.1 Ветвление 2.2 Цикл 3. Исполнение фрагментов программ 4. Анализ фрагментов программ. Обработка двумерных массивов 5. Оценка скорости работы алгоритмов 6. Работа с исполнителями 7. Задания для самостоятельного решения 8 25 9 4 10 3 11 2 12 72 Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 1. Понятие алгоритма Алгоритм – это строгая и четкая последовательность действий, выполнение которых приводит к определенному результату. Требования к алгоритмам 8) Ориентированность на конкретного исполнителя. 9) Понятность для исполнителя (алгоритм составляется в соответствии с системой команд исполнителя). 10) Точность (каждая команда должна определять однозначное действие исполнителя). 11) Конечность (наличие конца алгоритма через конечное число шагов). 12) Результативность (получение нужного результата по окончанию алгоритма). 13) Массовость (применимость для широкого класса задач). 14) Формальность исполнения (во время исполнения алгоритма исполнитель не должен задумываться над сутью выполняемых действий). Способы записи алгоритмов 5) Словесный (описание алгоритма с помощью слов русского языка). Пример. Алгоритм включения компьютера. Подойти к компьютеру. Включить монитор. Включить системный блок. 6) Запись на алгоритмическом языке Пример. Алгоритм нахождения минимального из двух введенных чисел. Начало Ввод числа х Ввод числа у Если х<у То Вывод х Иначе Вывод у Все Конец 7) Блок-схема (Графическое представление алгоритма) (будет рассмотрен ниже) 8) Программа (запись алгоритма на языке программирования) Пример. Определение четности введенного числа. BASIC INPUT “Введите целое число”; X A$=”четное” IF X MOD 2<>0 THEN A$=”не”+A$ PRINT “Введенное число ”, A$ Pascal Var x: Integer; Str: String; Begin Write(‘Введите целое число’); ReadLn(x); If x Mod 2 <> 0 Then Str:=’не’+Str; WriteLn(‘Введенное число ‘, Str); End. Блок-схемы Блок-схемы являются одним из графических способов представления алгоритмов. Блоксхема состоит из блоков, соединенных линиями. Чаще всего используются блоки следующих типов: - выполнение операции; - выбор направления выполнения алгоритма в зависимости от выполнения условия; - ввод/вывод данных; Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования - начало и конец алгоритма. 2. Алгоритмические конструкции Рис.1. Группа шагов алгоритма, выполняемых последовательно друг за другом без каких-либо условий, называется линейной последовательностью. На рис.1. изображена линейная Действие 1. последовательность, состоящая из двух шагов. Ветвление представляет собой алгоритмическую конструкцию, в которой выполнение того или иного шага зависит от истинности условия. Говорят, что конструкция «ветвление» записана Действие 2. в полной форме, если в ней присутствуют команды как для случая истинного условия, так и для его ложности. На рис.2 приведена блоксхема ветвления в полной форме. Конструкция ветвления в полной форме реализуется следующим образом. Если условие истинно, то выполняется действие 1, если условие ложно, то выполняется Рис.2. действие 2. да нет Если в ветвлении Условие присутствуют действия только для истинности или только для случая Действие 1 Действие 2 ложности условия, то говорят, что она записана в неполной (в сокращенной) форме. На рис. 3 приведены две блок-схемы ветвления в сокращенной форме. Конструкция ветвления в сокращенной форме реализуется следующим образом. Если выбрано направление, в котором отсутствует действие, то конструкция ветвления не выполняется и управление получает Рис.3. да Условие Условие Действие нет Действие Рис.4. конструкция, ветвлением. следующая за Цикл представляет собой алгоритмическую конструкцию, в которой многократно выполняется одна и та же последовательность шагов, называемая телом цикла. Каждое однократное исполнение цикла называется итерацией. Если тело цикла будет выполнено N раз, говорят, что произведено N итераций. Различают два вида циклов: циклы с заранее известным числом повторений и циклы с заранее неизвестным числом повторений. Цикл с заранее известным числом повторений называют циклом с параметром. Блок-схема цикла с параметром помещена на рис.4. Задание начальных параметров цикла Да Условие окончания цикла Нет Тело цикла Задание новых значений параметров Выход из цикла Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования В циклах с заранее неизвестным числом повторений для того, чтобы определить момент прекращения выполнения тела цикла, используется условие цикла. Если при истинности условия цикл продолжается, то такое условие называется условием продолжения цикла. Если при истинности условия цикл завершается, то такое условие называется условием завершения цикла. В этом случае цикл продолжается до тех пор, пока условие не станет истинным. Различают циклы с проверкой условия перед выполнением очередной итерации и циклы с проверкой условия после выполнения очередной итерации. Первые называются циклами с предусловием (рис. 5), вторые – с постусловием (рис. 6). Алгоритмическая конструкция называется вложенной, если она содержится внутри другой алгоритмической конструкции. На рис. 7 команда ветвления вложена в цикл. Рис.6. Рис.5. Рис.7. да нет Условие нет x<>y Действие Действие да да нет Условие да нет x>y x:=x-y y:=y-x Задание 1. (Задание А8 демоверсии 2004 г.) Алгоритмическая конструкция какого типа изображена на фрагменте блок-схемы (см. рис. 8): 5) линейная; 6) циклическая; 7) разветвляющаяся; 8) вспомогательная. Решение. На рис. 8 изображен ромб, внутри которого записано условие, и две исходящие из него стрелки. Фрагмент условия представляет собой блок ветвления в полной форме. Ответ: №3. Задание 2. (Задание А6 демоверсии 2005 г.) Фрагмент блок-схемы (см. рис. 9) представляет алгоритм, который содержит команды ветвления: да да 1 серия Серия 1 Условие Усл.1. да Серия 2 Рис.8. нет Рис.9. нет серия 2 Усл. 2 нет Серия 3 Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 5) команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме; 6) две команды ветвления в полной форме, одна из которых вложена в другую; 7) две команды ветвления в сокращенной форме, одна из которых вложена в другую; 8) команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме. Решение. Обе команды ветвления, входящие в блок-схему на рис. 9, - полные, при чем одна из них вложена в другую. Поэтому верным будет вариант ответа №2. Ответ: 2. Задание 3. (Задания А29 демоверсии 2005 г., А6 демоверсии 2006 г.) Определите значение целочисленной переменной х после выполнения следующего фрагмента блок-схемы (см. рис.10) 5) 1; 6) 5; 7) 10; 8) 15. Решение. В блок-схеме присутствует повторяющаяся последовательность действий (цикл). Для того, чтобы не ошибиться при выполнении блок-схемы, составим таблицу (см. Таблицу 1), в которую будем заносить значения переменных и результаты проверки условий на каждом шаге. Таблица 1. № итерации 0 Значение х Значение у 55 75 1 55 20 2 35 20 3 15 20 4 15 5 5 10 5 6 5 5 Рис.10. x:=55; y:=75 нет x<>y да да x>y x:=x-y нет y:=y-x x<>y 55<>75 – да Выполняем тело цикла 55<>20 – да Выполняем тело цикла 35<>20 – да Выполняем тело цикла 15<>20 – да Выполняем тело цикла 15<>5 – да Выполняем тело цикла 10<>5 – да Выполняем тело цикла 5<>5 – нет Выход их цикла; алгоритма x>y 55>75 – нет, y:=y-x=75-55=20 55>20 – да x:=x-y=55-20=35 35>20 – да x:=x-y=35-20=15 15>20 – нет, y:=y-x=20-15=5 15>5 – да x:=x-y=15-5=10 10>5 – да x:=x-y=10-5=5 завершение Таким образом, переменная х после выполнения данного фрагмента программы приняла значение 5, что соответствует ответу под номером 2. Ответ: 2. 3. Исполнение фрагментов программ В условии задачи приводятся эквивалентные тексты программ на трех алгоритмических языках. Следует выполнять программу на том языке, который наиболее вам близок. На остальные два фрагмента обращать внимание не следует, чтобы не терять время. Задание 4. (Задание А9 демоверсии 2004 г.) Определите значение целочисленных переменных x, y и t после выполнения фрагмента Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования программы (ниже представлена программирования): Бейсик x=5 y=7 t=x x=y MOD x y=t 5) x=2; y=5; t=5; 6) x=7; y=5; t=5; 7) x=2; y=2; t=2; 8) x=5; y=5; t=5. одна и та же программа, представленная на разных языках Паскаль x:=5; y:=7; t:=x; x:=y Mod x; y:=t; Алгоритмический x:=5 y:=7 t:=x x:=mod (x,y) y:=t Решение. Для решения этого задания удобно составить таблицу: Значение х Значение y Шаг после шага после шага x=5 5 Не определено y=7 5 7 t=x 5 7 x=y MOD x 2 7 y=t 2 5 Значение t после шага Не определено Не определено 5 5 5 Таким образом, верным является вариант ответа №1. Ответ: 1. Задание 5. (Задание А7 демоверсии 2006 г.) Определите значение целочисленных переменных a и b после выполнения фрагмента программы (ниже представлена одна и та же программа, представленная на разных языках программирования): Бейсик Паскаль Алгоритмический a=42 a:=42; a:=42 b=14 b:=14; b:=14 a=a\b a:=a Div b a:=Div (a,b) b=a*b b:=a*b b:=a*b a=b\a a:=b Div a a:=Div (b,a) 5) a=42; b=14; 6) a=1; b=42; 7) a=0; b=588; 8) a=14; b=42. Решение. Для решения этого задания удобно составить таблицу: Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Значение a после шага Шаг a=42 b=14 a=a\b b=a*b a=b\a 42 42 3 3 14 Значение b после шага Не определено 14 14 42 42 Таким образом, верным является вариант ответа №4. Ответ: 4. 4. Анализ фрагментов программ. Обработка двумерных массивов Двумерный массив А размером N*M можно изобразить в виде таблицы, состоящей из N строк и M столбцов. Обращение к каждому элементу в массиве осуществляется указанием имени массива (в нашем случае - А) и двух чисел - номера строки и номера столбца, на пересечении которых он находится. Эти числа называются индексами элемента в массиве, записываются через запятую в круглых (для языка Бейсик) или в квадратных (для языков Паскаль и алгоритмического) скобках. Задание 6. (Задание А10 демоверсии 2004 г.) Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 5 For n:=1 To 5 Do н.ц. для n от 1 до 5 FOR k=1 TO 5 For k:=1 To 5 Do н.ц. для k от 1 до 5 B(n,k)=n+k B[n,k]:=n+k; B[n,k]:=n+k NEXT k к.ц. Next n к.ц. Чему будет равно значение B(2,4)? 5) 9; 6) 8; 7) 7; 8) 6. Решение. 1-й способ. Для выполнения поставленного задания можно заполнить таблицу в соответствии с представленной программой: k= 1 2 3 4 5 n= 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9 5 6 7 8 9 10 Элемент В(2,4) находится на пересечении 2-й строки и 4-го столбца, его значение равно 6, что соответствует варианту ответа №4. Заметим, что этот способ решения является нерациональным, т.к. требовалось найти значение лишь одного элемента, не зависящее от значений других элементов. Поэтому для данного задания лучше применить другой способ решения. 2-й способ. Из текста программы следует, что значение каждого элемента равно сумме его индексов, поэтому В(2,4)=2+4=6. Ответ: 4. Задание 7. Все элементы двумерного массива А размером 4*4 элемента первоначально были равны 0. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы (ниже приводится одна и та же программа, записанная на разных языках программирования): Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 4 FOR k=n TO 4 For k:=n To 4 Do н.ц. для k от n до 4 A(n,k)=1 A[n,k]:= 1; A[n,k]:=1 Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования к.ц. к.ц. NEXT k Next n Сколько элементов массива в итоге будут равны 1? Решение. Для выполнения задания составим таблицу: n k Значения A[n,k]=1 1 1,2,3,4 A[1,1] A[1,2] A[1,3] A[1,4] 2 2,3,4 A[2,2] A[2,3] A[2,4] 3 3,4 A[3,3] A[3,4] 4 4,4 A[4,4] Из таблицы видно, что количество элементов, равных 1 в массиве А равно 4+3+2+1=10. Ответ: 10. Задание 8. (Задание А8 демоверсии 2006 г.) Все элементы двумерного массива А размером 10*10 элементов первоначально были равны 0. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы (ниже приводится одна и та же программа, записанная на разных языках программирования): Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 4 FOR k=n TO 4 For k:=n To 4 Do н.ц. для k от n до 4 A(n,k)=A(n,k)+1 Begin A[n,k]:=A[n,k]+1 A(k,n)=A(k,n)+1 A[n,k]:=A[n,k]+1; A[k,n]:=A[k,n]+1 NEXT k A[k,n]:=A[k,n]+1; к.ц. Next n End; к.ц. Сколько элементов массива в итоге будут равны 1? 5) 0; 6) 16; 7) 12; 8) 4. Решение. Для выполнения поставленного задания заполним таблицу: n 1 k 1 1 2 1 3 1 4 2 2 2 3 2 4 3 3 3 4 4 4 Вычисление A[n,k] A[1,1]= A[1,1]+1=0+1=1 A[1,1]= A[1,1]+1=1+1=2 A[1,2]= A[1,2]+1=0+1=1 A[2,1]= A[2,1]+1=0+1=1 A[1,3]= A[1,3]+1=0+1=1 A[3,1]= A[3,1]+1=0+1=1 A[1,4]= A[1,4]+1=0+1=1 A[4,1]= A[4,1]+1=0+1=1 A[2,2]= A[2,2]+1=0+1=1 A[2,2]= A[2,2]+1=1+1=2 A[2,3]= A[2,3]+1=0+1=1 A[3,2]= A[3,2]+1=0+1=1 A[2,4]= A[2,4]+1=0+1=1 A[4,2]= A[4,2]+1=0+1=1 A[3,3]= A[3,3]+1=0+1=1 A[3,3]= A[3,3]+1=1+1=2 A[3,4]= A[3,4]+1=0+1=1 A[4,3]= A[4,3]+1=0+1=1 A[4,4]= A[4,4]+1=0+1=1 A[4,4]= A[4,4]+1=1+1=2 Значение A[n,k] A[1,1]=2 A[1,2]=1 A[2,1]=1 A[1,3]=1 A[3,1]=1 A[1,4]=1 A[4,1]=1 A[2,2]=2 A[2,3]=1 A[3,2]=1 A[2,4]=1 A[4,2]=1 A[3,3]=2 A[3,4]=1 A[4,3]=1 A[4,4]=2 Исходя из таблицы видно, что 4 элемента массива А будут равны 2, 12 элементов будут равны 1, все остальные – равны нулю. Следовательно, правильным будет вариант ответа №3. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Ответ: 3. 5. Оценка скорости работы алгоритмов Данное задание проверяет знание зависимости количества операций при обработке массива от размера массива. В зависимости от алгоритма эта зависимость может быть линейной, квадратичной или логарифмической. В некоторых случаях алгоритм в задании описывается явным образом, в некоторых экзаменуемый должен вспомнить стандартный алгоритм, применяемый в таком случае. Если в задании встречается определение «эффективный алгоритм», то это означает, что из известных стандартных алгоритмов надо выбрать самый быстрый. Задание 9. Следующий фрагмент программы записывает в переменную Max максимальный элемент в двумерном массиве Dist размера N*N, наполненном неотрицательными числами: For i:=1 to N Do For j:=1 to N Do If Dist[I,j]>Max Then Max:= Dist[I,j]; На очень медленном компьютере эта программа при N=1000 работала 5 секунд. Определите время работу этой программе на том же компьютере при N=2000: 5) 10 сек.; 6) 20 сек.; 7) 30 сек.; 8) 40 сек. Решение. В данном алгоритме два вложенных оператора цикла. При увеличении N в два раза количество проверок (выполнений оператора If) возрастет в 22, т.е. в 4 раза, что соответствует варианту ответа №2. Ответ: 2. Задание 10. (Задание А19 демоверсии 2005 г.) Стандартный алгоритм вычисления среднего арифметического элементов числового массива из миллиона элементов работает 0, 5 сек. Оцените время работы того же алгоритма на том же компьютере, если длина массива 3 миллиона. 5) 6) 7) 8) 1 сек.; 1,5 сек.; 3 сек.; 4,5 сек. Решение. Для вычисления среднего арифметического N чисел необходимо выполнить N операций сложения. При увеличении количества элементов в 3 раза время выполнения алгоритма возрастает линейно - так же в 3 раза. Следовательно, время будет равно 0,5*3=1,5(сек), что соответствует варианту ответа №2. Ответ: 2. 6. Работа с исполнителями Задание 11. (Задания А 23 демоверсии 2005, А20 демоверсии 2006 г.) Исполнитель Черепашка перемещается на экране компьютера, оставляя след виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существуют две команды: Вперед n, где n - целое число, вызывающая передвижение черепашки на n шагов в направлении движения. Направо m, где m - целое число, вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори 5 [Команда1 Команда2] означает, что последовательность команд в скобках выполняется 5 раз. Черепашки был дан для исполнения следующий алгоритм: Повтори 5 [вперед 10 направо 72] Какая фигура появится на экране? 5) Незамкнутая ломаная линия Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования 6) Правильный треугольник 7) Квадрат 8) Правильный пятиугольник. Решение. Исполнитель Черепашка прочертит на экране 5 линий, угол между соседними из которых будет равен 72(=360/5). Поэтому в результате получится правильный пятиугольник, что соответствует варианту ответа №4. Ответ: 4. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Список литературы № 10. 11. 12. 13. 14. 15. 16. 17. 18. Название литературы Учебно-тренировочные материалы для подготовки к единому государственному экзамену. Информатика/ Крылов С.С., Лещинер В.Р., Супрун П.Г., Якушкин П.А.; под ред. Лещинера В.Р. – М. Интеллект-Центр, 2005 – 136 с. Андреева Е.В. Информатика. Основы алгоритмизации. Тетрадь с печатной основой. – Саратов: «Лицей», 2000. – 80 с. Экзаменационные вопросы и ответы. 11 класс/ Л.Л. Босова, Н.Д. Угринович. – М.: БИНОМ. Лаборатория знаний, 2003. – 191 с.: ил. Шпаргалки по информатике./ Е.Ю. Пестерева. – М.: Издательство Информатика и информационные технологии. Учебник для 10-11 классов/Н.Д. Угринович. – М.: Лаборатория Знаний, 2003. 512 с.: ил. Угринович Н.Д., Босова Л.Л., Михайлова Н.И. Практикум по информатике и информационным технологиям. Учебное пособие для образовательных учреждений. – М.: Лаборатория Базовых Знаний, 2001. 256 с.: ил. Единый государственный экзамен по информатике. Демонстрационный вариант 2004 г. Единый государственный экзамен по информатике. Демонстрационный вариант 2005 г. Единый государственный экзамен по информатике. Демонстрационный вариант 2006 г. Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Задания для самостоятельного решения 3. Определите значение переменной b после выполнения следующего фрагмента алгоритма (см. рис.11): 1)6; 2)5; 3)3; 4)4. Рис.11. a:=1 b:=2 4. Определите значение переменной a после выполнения алгоритма (см. рис.12): 1) 5; 2) 11; 3) 23; 4) 47. 3. Определите значение переменной выполнения фрагмента алгоритма (см. Рис. 13). s c:=1 после b:=a+b c:=c+1 Рис.12. да n:=0 начало a:=2 s:=0 b:=3 да b:=b-1 b>0 c<4 Рис.13. нет да нет n>100 да нет n четно нет s=s+n a=a*2+1 n:=n+1 4. Определите значение конец целочисленных переменных x, y и t после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический x=4 x:=4; x:=4 y=16 y:=16; y:=16 t=x t:=x; t:=x x=y MOD x x:=y Mod x; x:=MOD (y,x) y=t+1 y:=t+1; y:=t+1 5) x=4; y=1; t=0; 6) x=0; y=5; t=4; 7) x=0; y=4; t=5; 8) x=4; y=1; t=5. 5. Определите значение целочисленных переменных b и c после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования a=37 b=a MOD 10 c=a\10 5) b=3; c=7; 6) b=7; c=3; 7) b=3; c=4; 8) b=4; c=3. a:=37; b:=a Mod 10; c:=a Div 10; a:=37 b:=Mod (a,10) c:= Div (a,10) 6. Определите значение целочисленных переменных a и b после выполнения фрагмента программы: Бейсик Паскаль Алгоритмический a=20 a:=20; a:=20 b=7 b:=7; b:=7 a=a\b a:=a Div b a:=Div (a,b) b=a*b b:=a*b; b:=a*b a=b\a a:=b Div a; a:=Div (b,a) 5) a=7; b=21; 6) a=7; b=7; 7) a=7; b=14; 8) a=3; b=21. 7. Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 500 For n:=1 To 500 Do н.ц. для n от 1 до 500 FOR k=1 TO 500 For k:=1 To 500 Do н.ц. для k от 1 до 500 B(n,k)=n*(n+1)*k/2 B[n,k]:= n*(n+1)*k/2 B[n,k]:= n*(n+1)*k/2 NEXT k к.ц. NEXT n к.ц. Чему будет равно значение B(19,21)? 8. Все элементы массива А размером 10*10 элементов первоначально были равны 1. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 5 For n:=1 To 5 Do н.ц. для n от 1 до 5 FOR k=1 TO 5 For k:=1 To 5 Do н.ц. для k от 1 до 5 А(n,k)=A(n,k)-1 A[n,k]:= A[n,k]-1 A[n,k]:= A[n,k]-1 NEXT k к.ц. NEXT n к.ц. Сколько элементов массива в результате будут равны 0? 9. Все элементы массива А размером 10*10 элементов первоначально были равны 1. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы: Бейсик Паскаль Алгоритмический FOR n=1 TO 4 For n:=1 To 4 Do н.ц. для n от 1 до 5 FOR k=1 TO n+1 For k:=1 To n+1 Do н.ц. для k от 1 до n+1 А(n,k)=A(n,k)-1 Begin A[n,k]:= A[n,k]-1 А(n,k+1)=A(n,k)-1 A[n,k]:= A[n,k]-1; A[n,k+1]:= A[n,k]-1 NEXT k A[n,k+1]:= A[n,k]-1; к.ц. NEXT n End; к.ц. Сколько элементов массива в результате будут равны 0? 10. Стандартный алгоритм вычисления среднего арифметического элементов числового массива из тысячи элементов работает 0,01 сек. Оцените время работы того же алгоритма на том же компьютере, если длина массива миллион элементов. 1) 1 сек.; 2) 5 сек.; 3) 10 сек.; 4) 0,1 сек. 11. Исполнитель Черепашка перемещается на экране компьютера, оставляя след виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существуют две команды: Практикум по решению задач в курсе информатики. Лебедева Э.В, Центр информатизации и оценки качества образования Вперед n, где n - целое число, вызывающая передвижение черепашки на n шагов в направлении движения. Направо m, где m - целое число, вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори 5 [Команда1 Команда2] означает, что последовательность команд в скобках выполняется 5 раз. Черепашки был дан для исполнения следующий алгоритм: Повтори 4 [вперед 10 направо 120] Какая фигура появится на экране? 5) Незамкнутая ломаная линия 6) Правильный треугольник 7) Квадрат 8) Правильный пятиугольник. 12. Исполнитель - тот же, что и в предыдущем задании. Какое натуральное число следует поставить вместо переменной N в следующем алгоритме: Повтори 6 [вперед 60 направо N] Чтобы на экране появился правильный пятиугольник? Ответы к заданиям для самостоятельного решения Задание Ответ 1 2 2 3 3 2550 4 2 5 2 6 3 7 3990 8 25 9 4 10 3 11 2 12 72