2. Окно среды разработчика

advertisement
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
Download