- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Дзеянні над масівамі
Пераменная тыпу «масіў» можа ўдзельнічаць толькі ў аператары «надаць значэнне» :=. Масівы, якія ўдзельнічаюць у гэтай аперацыі, павінны быць ідэнтычнымі па структуры (для масіваў ідэнтычнасць па структуры – гэта фактычна аб’яўленне ў адным спісе):
VAR
A, B : ARRAY [1..20] OF Real;
C, D : ARRAY [1..5, 1..5] OF Word;
Аператар A := B азначае, што адпаведным элементам масіву A надаюцца значэнні элементаў масіву B. Аператар C := D азначае, што адпаведным элементам масіву C надаюцца значэнні элементаў масіву D. Аператар A := D прывядзе да памылкі.
Дзеянні над элементамі масіву
Разгледзім тыповыя сітуацыі, што ўзнікаюць пры рабоце з данымі тыпу «масіў» у наступнай праграме:
CONST n=10; m=5; L=4;
VAR A, O : ARRAY [1..L] OF Real;
B : ARRAY [1..n,1..m] OF Integer;
k, i, j : Integer;
S : Real;
. . .
FOR i:=1 TO L DO Read(A[i]);
{ініцыялізацыя аднамернага масіву}
FOR i:=1 TO n DO
FOR j:=1 TO m DO Read(B[і,j]);
{ініцыялізацыя двухмернага масіву}
FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO m DO Write(B[і,j]);
Writeln;
END; {вывад матрыцы ў выглядзе матрыцы}
Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
Стартавыя значэнні складаных пераменных задаюцца па-рознаму для розных тыпаў. Масівы задаюцца пералічэннем іх элементаў у круглых дужках. Калі масіў мнагамерны (масіў масіваў), тады пералічваюцца элементы масіву, якія складаюцца з элементаў-скаляраў. Гэта выглядае такім чынам:
TYPE
dim10 : ARRAY [1..10] OF Real;
dim3х6 : ARRAY [1..3, 1..6] OF Real;
dim4х3х2 : ARRAY [1..4, 1..3, 1..2] OF Word;
CONST
D10 : dim10=
(0, 2.1, 3, 4.5, 6, 7.70, 8, 9.0, 10, 34);
{гэта адзін набор з 10 лікаў}
D3х6 : dim3х6=
((1, 1, 1, 1, 1, 1),
(2, 2, 2, 2, 2, 2),
(3, 3, 3, 3, 3, 3));
{гэта тры наборы па 6 лікаў}
D4х3х2 : dim4х3х2=
(((1,2), (11,22), (111,222)),
((3,4), (33,44), (333,444)),
((5,6), (55,66), (555,666)),
((7,8), (77,88), (777,888)));
{гэта чатыры наборы па тры масівы з 2 лікаў}
Заўвага. Пры заданні структур тыпу ARRAY OF Char, якія базіруюцца на сімвалах, можна не пералічваць сімвалы, а злучыць іх у адзін радок патрэбнай даўжыні:
CONST CharArray : ARRAY [1..5] OF Char='abcde';
Канстанты з тыпам «масіў»
Каб вызначыць агульны выпадак для тыпізаваных канстант, разгледзім структурныя дыяграмы.
Канстанта-масіў:
Тыпізаваная канстанта:
Задача. Вядома, што элементы цэлалікавага масіву A[1..n] не менш за –2 і не больш за 12. Падлічыце, колькі разоў сустракаецца ў масіве A кожны з элементаў.
Рашэнне.
PROGRAM Pr;
CONST n=10;
TYPE index=-2..12;
CONST A : ARRAY [1..n] OF index=
(0, -2, 5, 1, 0, -2, 5, 8, 1, 0);
VAR B : ARRAY [index] OF Byte;
I : index;
j : 1..n;
BEGIN
FOR i:=-2 TO 12 DO B[i]:=0;
FOR j:= 1 TO n DO Inc(B[A[j]]);
{раздрукоўка}
Writeln('элемент':10,'колькасць':20);
FOR i:=-2 TO 12 DO
IF B[i]<>0 THEN Writeln(i:10, B[i]:20);
Readln;
END.
Заданне. Падлічыць у нейкім тэксце колькасць кожнага сімвала 'a'.. 'z' і 'A'.. 'Z', не адрозніваючы малыя і вялікія літары.