русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

В операторах цикла repeat,while и for


Дата добавления: 2014-11-28; просмотров: 587; Нарушение авторских прав


В версии 7.0 Turbo Pascal используются две новые процедуры break и continue. Процедура break позволяет досрочно выйти из цикла, не дожидаясь условия выхода. Процедура continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.

Пример

program Example10;

const

N=10;

var

mas:array [1..N] of integer;

i:byte;

yes:boolean;

begin

writeln('введите элементы массива');

for i:=1 to N do

begin

write('mas[',i,']=');

readln(mas[i]);

end;

yes:=false;

for i:=1 to N do

begin

if mas[i]>=0 then

continue;

writeln('Первое отрицательное число=', mas[i], 'номер=', i);

yes:=true;

break;

end;

if not yes then

writeln (‘отрицательных чисел нет’);

readln;

end.

 

Структурированные типы данных

Структурированные типы данных определяют наборы однотипных или разнотипных компонентов. Типы компонентов образуются из других типов данных.

В Паскале существуют:

- тип – массив;

- тип – запись;

- тип – множество;

- тип – файл.

В Турбо Паскале существуют ещё два структурированных типа:

- тип- строка string

} разновидности массива

- тип- строка Pchar.

 

Массив

Определение Тип массив представляет собой фиксированное количество упорядоченных однотипных компонент, снабжённых индексами.

Массив может быть одномерным и многомерным. Для задания используется зарезервированное слово array of. После array указывается тип индекса (ов) компонент в квадратных скобках и далее после слова of -тип самих компонентов.

type

<имя типа> = array [<тип индексов>] of <тип компонентов>;

 

type

arr = array [1..3] of real;

matrix = array [1..3,1..2] of integer;

После ввода (объявления) типа массива затем объявляются (задаются) по необходимости переменные или типизированные константы этого типа.



1 способ задания типа массива

type

mas = array [1..100] of integer;

var

M1: mas;

2 способ задания типа массива

var

M1: array [1..100] of integer;

Размерность типа может быть любой.

var

matr: array [1..3, 1..2, 0..1] of integer;

Компоненты тоже могут быть любого типа, только тип индексов должен быть обязательно порядковый и не longint. В большинстве случаев используются диапазоны.

var

a,b: array [1..10] of real;

Глубина вложенности массивов (размерность) произвольная. Количество элементов в списке индексных типов не ограничено. Суммарная же длина внутреннего представления любого представления не может быть больше 65520 байт.

В памяти ЭВМ элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим быстрее меняется самый правый индекс массива.

var

a: array [1..2, 1..2] of byte;

begin

a[1,1]:=1;

a[2,1]:=2; 1 3

a[1,2]:=3; 2 4

a[2,2]:=4;

end.

В памяти друг за другом будут последовательно друг за другом расположены байты со значениями a[1,1]=1; a[2,1]=2; a[1,2]=3; a[2,2]=4.

Основные характеристики массивов

- размерность массива может быть любой;

- компоненты массива могут быть любого типа, в том числе структурированного;

- индекс(ы) могут быть любого порядкового типа, кроме типа longint и integer.

 

Константы – массивы

При задании значений константе-массиву компоненты указываются в круглых скобках, разделяются запятыми. Если массив многомерный, то множество констант соответствующих каждому измерению, заключаются в дополнительные скобки и отделяются от соседнего множества запятыми. В результате образуются вложенные структуры множеств. Глубина вложения должна соответствовать количеству измерений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива.

var

M1, M2 : arr;

mtr: matrix;

const

M3: arr = (1,2,3);

1 2

Mat: matrix = ((1,2), (3,4), (5,6)); 3 4

5 6

Типизированные константы

Пример

const

x: real = 0.1;

min : integer = 0;

max : integer = 10;

 

В качестве начального значения типизированной константы-массива используется список констант, отделённых друг от друга запятыми. Список заключается в круглые скобки.

Пример

type

arr = array [1..3] of real;

matrix = array [1..3,1..2] of integer;

const

M3: arr = (1,2,3);

1 2

Mat: matrix = ((1,2), (3,4), (5,6)); 3 4

5 6

Пример

type

colors = (white, red, black); {перечисляемый тип}

const

colstr : array [colors] of string[5] = (‘white’, ’red’, ‘black’);

vector : array [1..5] of byte = (0,0,0,0,0);

Нельзя:

mas: array [min..max] of real; {нельзя использовать типизированные

константы в качестве границ диапазона}

 

a,b,c: byte = 0; {нельзя использовать список идентификаторов}

 

var

name : string [22] = 'prog.pas'; {нельзя объявлять типизированную константу

в разделе переменных}

Значение массива-константы типа char (одномерные массивы символов (не string)) может быть задано в виде символьной строки соответствующей длины.

Пример

const

digit : array [0..9] of char = (‘0’, ‘1’, ’2’, ’3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’);

digch : array [0..9] of char = ‘0123456789’;

В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа.

Пример

var

a, b: array [1..5] of single;

begin

………………………

a:=b;

………………………

end.

Замечание

Тип single - один из 5 вещественных типов, 4 байта, диапазон: 1,5 ×10 -45 ¸3,4 ×10 38, 7-8 значащих цифр. Можно использовать в программах при наличии арифметического сопроцессора или включенном эмуляторе сопроцессора.

Эмуляция – имитация функционирования всей или части системы без потери функциональных возможностей или искажения получаемых результатов.

После выполнения этой операции присваивания пять элементов массива a получат те же значения, что и в массиве b.

Однако над массивами не определены операции отношения.

Нельзя

if a=b then ……

Сравнивать два массива можно поэлементно.

Пример

var

a, b : array [1..5] of single;

eq : boolean;

i : byte;

begin

……………….

eq:=true;

for i:=1 to 5 do

if a[i] <> b[i] then

eq:=false;

if eq then

……………….

end.

Замечание

Для массивов типа char можно использовать операции сравнения и объединения (конкатенации). Массивы можно использовать в операторах write и writeln.

Пример

const

a : array [1..5] of char = ‘aaaaa’;

b : array [1..3] of char = ‘bbb’;

………………………………………

if a>b then

writeln(a)

else

writeln(b);

………………………………………

Задача Дана квадратная матрица n*n, состоящая из натуральных чисел. Зеркально отразить её относительно горизонтальной оси симметрии. Вывести результаты на экран.

массив A   массив B
a11 a12 a13 a31 a32 a33 b11 b12 b13
a21 a22 a23 a21 a22 a23 b21 b22 b23
A31 a32 a33 a11 a12 a13 b31 b32 b33
индексы l,m   индексы i, j
Индексы столбцов после отражения не меняют своих значений j=m. Индексы строк после отражения меняют свои значения i+l=n+1. b[i,j] a[l,m] b32 a12 b[i,j] = a[n+1-l,j] b[3,2] = a[3+1-3,2]

 

const n=100;

var

a,b:array[1..n,1..n] of integer;

k,m,i,j:integer;

begin

write(‘введите размер матрицы M= ‘);

readln(m);

writeln(‘исходная матрица’);

k:=1;

for i:=1 to m do

for j:=1 to m do

begin

a[i,j]:=k;

k:=k+1;

if j<m then write(a[i,j]:4)

else writeln(a[i,j]:4)

end;

writeln(‘матрица после преобразования’);

for i:=1 to m do

for j:=1 to m do

begin

b[i,j]:=a[m+1-i,j];

if j<m then write(b[j,j]:4)

else writeln(b[i,j]:4)

end;

end.

Пояснение к решению задачи

- формируем программу с описанием переменных ;

- вводим размеры массива А и присваиваем значения его элементам;

- присваиваем значения элементам матрицы В и выводим их на экран;

- а,b – двумерные массивы;

- m – количество строк и столбцов массива;

- i,j – переменные цикла;

- k – вспомогательная переменная.

 

Пример Самые внутренние множества констант связываются с изменением самого правого индекса массива.

 

var

i,j,k,l:byte;

const

matr: array[1..3,1..5] of byte=

((0,1,2,3,4),
(5,6,7,8,9),
(10,11,12,13,14));

cube:array[0..1,0..1,0..2] of {integer} byte=

(((0,1,2),(3,4,5)),

((6,7,8),(9,10,11)));

mas4:array[0..1,0..1,0.. 1,0..1 ] of {word}byte=

((((0,1),(2,3)),

((4,5),(6,7))),
(((8,9),(10,11)),

((12,13),(14,15))));

begin
for i:=1 to 3 do begin
for j:=1 to 5 do begin
write(matr[i,j]:3);

write('matr[',i,j,']=', matr[i,j]);

end;

writeln;

end;

writeln;

for i:=0 to 1 do begin
for j:=0 to 1 do begin
for k:=0 to 2 do begin
write(cube[i,j,k]:3);

write('cube[',i,j,k.']=', cube[i,j,k]);

end;

writeln;

end;

end;
writeln;

for i:=0 to 1 do begin
for j:=0 to 1 do begin
for k:=0 to 1 do begin
for 1:=0 to 1 do begin
write(mas4[i,j,k,l]:3);

write( 'mas4[' ,i,j,k,l, ']=’ , mas4[i,j,k,l]);

end;

writeln;

end;

end;

end;

writeln
end.

0matr[11]=0 1matr[12]=1 2matr[13]=2 3matr[14]=3 4matr[15]=5

5matr[21]=5 6matr[22]=6 7matr[23]=7 8matr[24]=8 9matr[25]=9

10matr[31]=10 11matr[32]=11 12matr[33]=12 13matr[34]=13 14matr[35]=14

0cube[000]=0 1cube[001]=1 2cube[002]=2

3cube[010]=3 4cube[011]=4 5cube[012]=5

6cube[100]=6 7cube[101]=7 8cube[102]=8

9cube[110]=9 10cube[111]=10 11cube[112]=11

 

0mas4[0000]=0 1mas4[0001]=1

2mas4[0010]=2 3mas4[0011]=3

4mas4[0100]=4 5mas4[0101]=5

6mas4[0110]=6 7mas4[0111]=7

8mas4[1000]=8 9mas4[1001]=9

10mas4[1010]=10 11mas4[1011]=11

12mas4[1100]=12 13mas4[1101]=13

14mas4[1110]=14 15mas4[1111]=15

Замечание Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.

 



<== предыдущая лекция | следующая лекция ==>
Оператор цикла FOR | Строки типа string


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.267 сек.