Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример 2.7






Program Codes_of_Chars;

{Программа вводит символ и выводит на экран его код. Для завершения работы программы нужно дважды нажать Enter}

var

ch: Char; {Вводимый символ}

const

CR = 13; {Код символа CR}

begin

repeat

ReadLn(ch);

WriteLn(ch, ' = ', ord(ch))

until ord(ch) = CR

end.

Обратите внимание: пара REPEAT... UNTIL подобна операторным скобкам begin... end, поэтому перед UNTIL ставить точку с запятой необязательно.

Для гибкого управления циклическими операторами FOR, WHILE и REPEAT в состав Турбо Паскаля включены две процедуры:

BREAK - реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за концом циклического оператора;

CONTINUE - обеспечивает досрочное завершение очередного прохода цикла; эквивалент передачи управления в самый конец циклического оператора.

Введение в язык этих процедур практически исключает необходимость использования операторов безусловного перехода

Структурований тип даних – масив. Задання типу масив. Індексація елементів. Тип індексації. Доступ до елементів масиву. Дії над масивами.

Масиви [ред.]

Досить часто виникає потреба обробляти зберігати ряд однотипних змінних разом. Наприклад, якщо програма має зберігати (наприклад, для знаходження середнього) оцінки з інформатики 10 учнів, можна писати так:

program Otsinky;

var o1, o2, o3, o4, o5, o6, o7, o8, o9, o10: integer;

s: real;

Begin

writeln('Введіть оцінки: ');

readln(o1, o2, o3, o4, o5, o6, o7, o8, o9, o10);

s: =(o1+o2+o3+o4+o5+o6+o7+o8+o9+o10)/10;

writeln(s);

end.

Але такий спосіб запису:

· дуже довгий;

· потребує явної операції з кожною змінною, неможливо загнати їх усіх в цикл.

Щоб вирішити ці проблеми, в мові Паскаль існує спеціальний тип даних - масив. Запис

var o: array [1..10] of integer;

визначає 10 змінних типу integer, об'єднаних під єдиним ім'ям. Окремі змінні називаються за індексом в квадратних дужках: o[1], o[5], o[10]. Індекс може бути змінною (o[i] - i-ий елемент масиву) чи навіть виразом: o[max(i, j)]. Зверніть увагу на те, що тип елементів масива, а також найменший і найбільший можливі індекси масива вказуються при його визначенні; спроба звернутися до елементу, що виходить за ці межі, на кшталт o[11] чи o[30] викличе помилку. Перепишемо програму, наведену вище:

program Otsinky;

var o: array [1..10] of integer;

i: integer;

s: real;

Begin

for i: =1 to 10 do begin

write('Введіть оцінку ', i, '-го учня: ');

readln(o[i]);

end;

s: =0;

for i: =1 to 10 do

s: =s+o[i];

writeln(s);

end.

Зверніть увагу, що для обчислення суми нам довелося скористатися додатковою змінною s, яка спочатку рівна нулю, а потім до неї покроково додається оцінка кожного учня.

Введення, виведення і сортування масивів [ред.]

Це три найтиповіші задачі, з якими доводиться стикатися при роботі з масивами, і які викликають в початківців питання. Массив - не одна змінна, тому стандартні команди write і readln з ним не працюють (перевірте це!). Оскільки масив - це набір змінних, до яких звертаються за допомогою індекса, то більшість операцій з масивами потребують циклів по цьому індексу. Отже, ввід масиву виглядає приблизно так:

writeln('Введіть елементи масиву');

for i: =1 to n do

readln(A[i]);

а вивід, відповідно,

writeln('Масив A: ');

for i: =1 to n do

write(A[i], ', ');

де мається на увазі, що масив A має індекси від 1 до n, а i - змінна типу integer. Звісно, вводити і виводити можна і іншими способами, експерементуйте!

Що ж стосується сортування, тобто впорядковування елементів, то існує багато [: w: Алгоритм сортування|різних алгоритмів] для цього. Найпростішим є так званий " бульбашковий алгорим", який полягає в тому, що перший елемент порівнюється з другим; якщо перший більший, елементи обмінюються місцями. Після цього другий порівнюється з третім, за потреби обмінюються, третій - з четвертим і т.д. Виходить, ніби легка " бульбашка" спливає у важкій рідині. Після досягнення кінця циклу можна бути впевненим, що останній елемент - найбільший; після цього спливає нова " бульбашка" і т.д., доки весь масив не буде впорядкованим. Ось повний код програми:

Program Bulbashka;

var arr: array [1..10] of integer;

i, j, t: integer;

Begin

writeln('Введіть елементи масиву');

for i: =1 to 10 do

readln(arr[i]);

 

for i: =1 to 9 do begin

for j: =1 to 10-i do begin

if arr[j] > arr[j + 1] then begin

t: = arr[j];

arr[j]: = arr[j + 1];

arr[j + 1]: = t;

end;

end;

end;

 

writeln('Відсортований масив: ');

for i: =1 to 10 do

write(arr[i], ', ');

end.

Зверніть увагу:

· для вводу і виводу ми скористалися наведеними вище фрагментами коду;

· t - тимчасова змінна, потрібна для обміну значень;

· на організацію вкладених циклів;

· на розстановку операторних дужок begin-end у вкладених циклах. Чи всі вони потрібні? Без яких можна обійтися? Яка програма легше сприймається - з ними чи без них?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.