Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекцый для 1 курса-1 семестр.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
2.95 Mб
Скачать

Прыклады праграм

Задача 1. Няхай дадзены натуральны лік N  100. Напісаць праг­ра­му, якая выводзіць запіс гэтага ліку ў рымскай сістэме злічэння.

Рашэнне. Для запісу лікаў першай сотні выкарыстоўваюцца літары I, V, X, L, C (1, 5, 10, 50, 100). Паколькі літары, якія абазначаюць коль­касць дзе­сят­каў, колькасць адзінак, могуць быць вы­ведзе­ны незалежна, то ў праграме для вываду тых ці ін­шых можна выкарыстаць аператар выбару.

PROGRAM RIMSKIE;

VAR N: Integer;

BEGIN

Read(N);

IF (N<1) OR (N>99) THEN

Writeln('памылкова зададзены зыходны лік N', N)

ELSE

BEGIN

Writeln(N, 'арабскімі лічбамі');

CASE N DIV 10 OF {выбар па колькасці дзесяткаў}

1: Write('X');

2: Write('XX');

3: Write('XXX');

4: Write('XL');

5: Write('L');

6: Write('LX');

7: Write('LXX');

8: Write('LXXX');

9: Write('XC');

END;

CASE N MOD 10 OF {выбар па колькасці адзінак}

1: Write('I');

2: Write('II');

3: Write('III');

4: Write('IV');

5: Write('V');

6: Write('VI');

7: Write('VII');

8: Write('VIII');

9: Write('IX');

END;

Write(' – рымскімі лічбамі')

END

END.

Задача 2. Зададзены лік, які запісаны дзвюма рымскімі лічбамі. Вы­вес­ці яго значэнне ў арабскай сістэме злічэння.

Рашэнне. Няхай лік зададзены дзвюма лацінскімі лі­та­ра­мі з мноства (I, V, X, L, C, D, M). Адпаведна рымскай сістэме запісу лі­каў, калі літара, якая абазначае меншы лік, запісана перад літарай, якая абаз­на­чае большы лік, то меншы лік аднімаецца ад большага, інакш лікі склад­ва­юц­ца.

PROGRAM ARABSKIE;

VAR RIMS1, RIMS2: Char; {рымскія лічбы}

ARAB1, ARAB2: Integer; {арабскія лікі}

BEGIN

Readln(rims1, rims2);

{задаём з клавіятуры сімвалы без апострафаў!}

CASE rims1 OF

'I': arab1:=1;

'V': arab1:=5;

'X': arab1:=10;

'L': arab1:=50;

'C': arab1:=100;

'D': arab1:=500;

'M': arab1:=1000;

ELSE Write('памылка')

END;

CASE rims2 OF

'I': arab2:=1;

'V': arab2:=5;

'X': arab2:=10;

'L': arab2:=50;

'C': arab2:=100;

'D': arab2:=500;

'M': arab2:=1000;

ELSE Write('памылка')

END;

Writeln(rims1, rims2, ' – рымскімі лічбамі');

IF arab1<arab2 THEN Write(arab2-arab1)

ELSE Write(arab2+arab1);

Write(' – арабскімі лічбамі')

END.

Калі ў якасці зыходных даных будуць пададзены не рымскія лічбы, то памылка будзе вызначана адпаведным аператарам выбару і над­ру­ка­ва­на слова «памылка».

Аператары паўтарэння

Шматразовае паслядоўнае выкананне аднолькавых дзеянняў у праг­ра­ме з’яўляецца асновай праграміравання, бо дае магчымасць пры да­па­мо­зе параўнальна невялікай колькасці каманд у праграме заставіць ма­шы­ну зрабіць большы аб’ём вылічэнняў. Паколькі цыклічнасць – най­больш ха­рак­тэрная асаблівасць значнай часткі практычна вы­ка­рыс­тоў­ва­е­мых алга­рыт­маў, пытанне праграміравання цыклаў з’яўляецца адным з важ­ных.

Пры цыклічных працэсах тыповым з’яўляецца выпадак, калі момант за­кан­чэн­ня цыклічнага працэсу вызначаецца бягучым значэннем не­ка­то­рай пераменнай, якую называюць параметрам цыкла.

Для гібкага кіравання цыклічнымі аператарамі For, While, Repeat іс­ну­юць дзве працэдуры – Break і Continue:

 Break – рэалізуе «адразу ж» выхад з цыкла;

 Continue – забяспечвае датэрміновае завяршэнне чарговага пра­хо­ду цыкла, эквівалент перадачы кіравання ў самы канец цыклічнага апе­ра­та­ра (цела цыкла).

Увядзенне гэтых аператараў практычна выключае патрэбу ў апе­ра­та­ры GOTO.

Калі колькасць паўта­рэнняў вядома загадзя – ці ў час састаўлення праг­ра­мы, ці к моманту ўваходу ў цыкл, тады лепш выкарыстоўваць апе­ра­тар цыкла з параметрамі (схема а).

аFOR_TO_DO, FOR_DOWNTO_DO

1 – першапачатковы ўваход у цыкл;

2 – уваход у цыкл пры яго чарговым паўтарэнні;

3 – выхад з цыкла па яго заканчэнні.

Калі колькасць паўтарэнняў цык­ла вызначаецца па ходу вылічэн­няў у залежнасці ад атрыманых бягучых вынікаў, выкарыстоў­ваюцца апе­ра­та­ры цыкла з перадумовай ці пасляўмовай (схемы б і в – ітэрацыйныя цыклы з паслядоўным набліжэннем).

б) REPEAT UNTIL в) WHILE DO

Разгледзім падрабязна кожны аператар цыкла.