- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Аператар паўтарэння for
Аператар цыкла, ці аператар паўтарэння FOR, складаецца з загалоўка і цела цыкла. Ён можа быць прадстаўлены ў двух фарматах:
1) FOR параметр_цыкла:=S1 TO S2 DO аператар;
2) FOR параметр_цыкла:=S1 DOWNTO S2 DO аператар; або схемай:
Выразы S1 і S2 вызначаюць адпаведна пачатковае і канечнае значэнні параметра цыкла; FOR…DO – загаловак цыкла; аператар утварае цела цыкла, гэта можа быць просты ці састаўны аператар.
Аператар FOR забяспечвае выкананне цела цыкла да той пары, пакуль не будуць перабраны ўсе значэнні параметра цыкла – ад пачатковага да канечнага.
Параметр цыкла, яго пачатковае значэнне S1 і канечнае значэнне S2 павінны належаць да аднаго і таго ж скалярнага парадкавага тыпу даных (сумяшчальнымі па наданні значэнняў!).
Калі выкарыстоўваюцца тыпы Integer, Byte, інтэрвальны, значэнні параметра цыкла паслядоўна павялічваюцца пры FOR…TO ці памяншаюцца пры FOR…DOWNTO на 1 пры кожным паўтарэнні. Калі выкарыстоўваюцца не цэлалікавыя парадкавыя тыпы, то павелічэнне адбываецца на ўмоўную «адзінку» пэўнага тыпу. Напрыклад, калі працуем з тыпам Char, тады адбываецца пераход на наступны (папярэдні) сімвал, г. зн. адрозненне на Chr(Ord(C)1).
Разгледзім некаторыя прыклады выкарыстання аператара FOR.
Аператар |
Вынік |
FOR i:=10 TO 14 DO Write (i:3); |
10 11 12 13 14 |
FOR i:=14 DOWNTO 10 DO Write (i:3); |
14 13 12 11 10 |
FOR ch:='a' TO 'e' DO Write (ch:2); |
a b c d e |
FOR ch:= 'e' DOWNTO 'a' DO Write (ch:2); |
e d c b a |
VAR Sort :(S1, S22, S23, S3); … FOR Sort:=S1 TO S3 DO аператар; |
|
Колькасць паўтораў аператара FOR відаць з наступнай табліцы.
Аператар |
S1 S2 |
S1 = S2 |
S1 > S2 |
FOR…TO |
S2–S1+1 разоў |
1 раз |
Не выконваецца |
FOR…DOWNTO |
Не выконваецца |
1 раз |
S1–S2+1 разоў |
Заўвага. Існуе правіла: у целе цыкла нельга самім змяняць значэнне параметра цыкла.
Пасля нармальнага завяршэння аператара FOR значэнне параметра цыкла звычайна роўна рэальнаму канечнаму значэнню. Калі ж FOR не выконваўся, то значэнне параметра цыкла не вызначана.
Калі мы хочам дачасна выйсці з цыкла, выкарыстаем аператар break, які рэалізуе выхад на аператар, размешчаны адразу пасля цела цыкла.
Тыповымі задачамі выкарыстання цыклаў з’яўляюцца вылічэнне сумы і ўвядзенне ў цэлалікавую ступень.
1. Вылічэнне сумы
S:=0;
FOR i:=1 TO 10 DO S:=S+1.0/sqr(i);
Write(S:8:4);
2. Увядзенне ў цэлалікавую ступень
y:=1;
FOR i:=1 TO n DO y:=y*a;
На наступным прыкладзе добра відаць, што не толькі аператары, але і выбраныя тыпы даных адказваюць за рашэнне пастаўленай задачы.
Задача. Вылічыць суму:
Інакш: an = n!, a0 = 1,
Паколькі намі раней разглядаліся блок-схемы рашэння задач па накапленні сум, адразу атрымаем наступную блок-схему.
Калі а, у маюць тып Integer, то для вынік атрымліваецца правільны, а пры – адмоўны. Калі ж а, у маюць тып Longint, то пры вынік добры, а пры – адмоўны. З пункту гледжання дыяпазону даных абгрунтаваць гэта проста.
Калі а, у маюць тып Real, то вынік будзе набліжаны, бо для мантысы адводзіцца абмежаваная колькасць бітаў. Можна паспрабаваць тып Comp, аднак там таксама ёсць абмежаванні на дыяпазон даных. Значыць, для любых вялікіх патрэбна выкарыстоўваць масіў лічбаў у 10-й с/зл для захавання аn і рэалізаваць аперацыі складання і множання над такімі «доўгімі» лікамі. Такім чынам, алгарытм можа мець некалькі рэалізацый, у залежнасці ад тыпу даных для захавання аn.
Праграма, якая рэалізуе алгарытм на мове Pascal:
PROGRAM Sum;
CONST k = 12;
VAR y, a : Longint;
n : Byte;
BEGIN
y := 0;
a := 1;
FOR n := 1 TO k DO
BEGIN
y := y + a;
a := a * (n+1)
END;
Writeln ('k=', k, ' y=', y)
END.
Заўвага. У целе цыкла могуць быць і другія ўкладзеныя аператары цыкла FOR.
Заданне. Раздрукаваць табліцу сімвалаў і адпаведных ім ASCII кодаў, пачынаючы з сімвала з кодам 32.