русс | укр

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

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

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

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


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

Одномерный массив, или переменные с индексами


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


Массив – это упорядоченный набор однотипных элементов. Под массивом понимается конечная совокупность данных одного типа, упорядоченных по значениям индекса. Каждый элемент массив обозначается именем массива и индексом. Индекс заключается в квадратные скобки.

Если в программе используется массив, он должен быть описан в разделе типов или в разделе переменных.

Описание в разделе переменных:

Var имя массива: Array [тип индекса] of тип элемента;

Тип индекса может быть любым простым типом, кроме Real и Integer (Boolean, Char, перечислимый, ограниченный).

Тип элементов массива – это базовый тип, из которого составлен массив. Это может быть любой простой или сложный тип – вообще любой допустимый в языке программирования Паскаль.

Var A: Array [1..5] of Real;

Это массив из пяти действительных чисел: А[1], А[2], А[3], А[4], А[5].

Обычно нумерация начинается с единицы и заканчивается каким-нибудь положительным числом. Однако это совсем не обязательно.

Пример: Var B: Array [1582..1994] of Integer;

Var C: Array [-754..-1] of Integer;

(это, например, население за какие-то годы нашей эры и до нашей эры).

Массив латинских букв: (можно посчитать частоту появления в тексте):

Var Lat: Array [‘A’..’Z’] of Integer;

Массив t0C воздуха на островах:

Type Остров = (Gaiti, Sumatra, Taimir);

Var T: Array [Остров] of Real;

Поскольку тип индекса не может быть стандартным целым или действительным типом, нельзя делать следующие описания массива:

Var А: Array [5] of Real;

Var А: Array[Integer] of Real;

Пример:

Var

Massiv: Array [1..N] of Real;

Year: Array [янв..дек] of Integer;

Если несколько массивов имеют одинаковый тип индексов и одинаковый базовый тип, то допускается в описание объединять массивы в список:

Var А, В, С: Array[1..50] of Real;

Здесь объявлено списком три массива действительных чисел, каждый из которых содержит по 50 элементов:



А[1], A[2],… A[50].

B[1], B[2],… B[50].

C[1], C[2],… C[50].

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

Элементы массива записываются в разделе операторов как идентификатор с индексом в квадратных скобках.

B[5]:=B[3]-1;

Sum:=Sum-C[K];

P1:=A[2*3+1];

Для ввода и вывода числовых значений элементов массива используются циклы.

Пример:

For I:=1 to 9 do

Read(A[I]);

Это ввод 9-ти значений элементов массива А.

For I:=1 to 9 do

Writeln(A[I]);

Это их вывод.

Пример: Вычислить сумму 15-ти целых чисел.

Program Sum;

Var X: Array [1..15] of Integer;

I: 1..15;

Sum: Integer;

Begin

Sum:=0;

For I:=1 to 15 do

Begin

Read(X[I]);

Sum:=Sum+X[I];

End;

End.

В языке программирования Паскаль помимо явного описания массивов в разделе переменных есть другая форма описания, состоящая из двух этапов. Сначала в разделе описания типов Type указывается тип массива, затем в разделе описания переменных Var перечисляются массивы, относящиеся к донному типу.

Type имя типа = Array [тип индекса] of тип элементов массива;

Var имя массива: имя типа;

Пример: Программа с двумя процедурами: одна – для ввода элементов массива, другая для вычисления суммы и произведения элементов.

Program TI4;

Type Massiv = Array [1..20] of Real;

Var A, B: Massiv;

Sum, Pr: Real;

Procedure Vvod (N:Integer; Var X:Massiv);

Var I: Integer;

Begin

Writeln(‘Ввод’);

For I:=1 to N do Read(X[I]);

End;

Procedure Summa (N:Integer; Var X:Massiv; Var Sum, Pr: Real);

Var I: Integer;

Begin

Sum:= 0;

Pr:=1;

For I:=1 to N do

Begin

Sum:=Sum+X[I];

Pr:=Pr*X[I];

End;

End;

Begin

Vvod(8,A); (*вызов процедуры*)

Summa(8,A,Sum,Pr); (*вызов процедуры*)

Writeln (‘Sum=’,Sum:7:2,’ ’:3,’Pr=’,Pr);

Writeln;

Vvod(15,B);

Summa(15,B,Sum,Pr);

Writeln (‘Sum=’,Sum:7:2,’ ’:3,’Pr=’,Pr);

End.

В основной программе описан тип массива длинной 20 элементов, а реально используются массивы А (8 элементов) и В(15 элементов).

Пример: Расположить элементы заданного действительного массива в порядке убывания: 1 2 3 4 ® 4 3 2 1

Program Rangir;

Const N=10;

Var A: Array [1..N] of Real;

I, K: Integer; R: Real;

Begin

Writeln(‘Ввод’);

For I:=1 to N do Read (A[I]);

For K:=1 to N do

For I:=1 to N-K do

If A[I]<A[I+1] then

Begin

R:= A[I];

A[I]:= A[I+1];

A[I+1]:=R;

End;

For I:=1 to N do Write (A[I]);

End.

K - номер просмотра строки (всего N-1 просмотров)

I - номер сравнение элементов в просмотре (N-K сравнений).

Пример: Массив R состоит из 10-ти элементов действительного типа.

Type Mas = Array [1..10] of Real;

Var R: Mas;

Если в программе несколько таких массивов, то изменится лишь раздел описания переменных:

Var R, A, B, C: Mas;

В разделе операторов программы используются массивы R, A, B, C. Тип массива Mas введен формально только в разделе описаний и нигде в программе не указывается и не обрабатывается.

Пример: Найти наибольшее из 10-ти заданных целых чисел.

Program Max;

Const N=10;

Type Massiv = Array [1..N] of Integer;

Var K: Massiv;

Max, I: Integer;

Begin

Writeln(‘Ввод’);

For I:=1 to N do Read (K[I]);

Max:=K[1];

For I:=2 to N do

If K[I]>Max then Max:=K[I];

Writeln;

Write (‘Max=’, Max:4);

End.

Здесь 2 независимых цикла:

1-ый – для ввода значений массива;

2-ой – для нахождения максимального элемента.

Сначала первый элемент массива K[1] обозначается именем Мах. Затем каждый последующий элемент сравнивается со значением Мах, и если он оказывается больше, то получает имя Мах.

Пример: Составить программу определения минимального и максимального элементов заданного массива.

Program Minmax;

Const N=9; (*число элементов*)

Type Massiv = Array [1..N] of Real;

Var A: Massiv; (*массив элементов*)

I: Integer; (*параметр цикла*)

Max, Min: Real; (*максимальный и минимальный элементы*)

Procedure Maxmin (K: Integer; Var X: Massiv; Var Max, Min: Real);

Var J: Integer;

Begin

Max:=X[1];

Min:=X[1];

For J:=2 to K do

Begin

If X[J] > Max then Max:= X[J];

If X[J] < Min then Min:= X[J];

End;

End;

Begin

Writeln (‘Ввод массива’);

For I:=1 to N do Read (A[I]);

Maxmin (N, A, Max, Min); (*вызов процедуры*)

Writeln (‘макс. элемент=’, Max:4:1);

Writeln (‘мин. элемент=’, Min:4:1);

End.

В процедуре Maxmin определяются максимальный и минимальный элементы массива. Переменная J и формальные параметры процедуры K, X, Max, Min являются локальными. В основной программе происходит ввод значений массива, вызов процедуры и вывод результатов. Константа N, тип Massiv, а также переменные A, I, Max и Min являются глобальными.

Пример: Дан массив действительных чисел {Ai}, где i=1,2,3,4,..M. Пусть M = 15. Вычислить сумму элементов с 1-го по 12-ый и сумму элементов с 8-го по 15-ый. Затем найти произведение этих сумм.

Program Pr2;

Const M=15;

Var A: Array [1..M] of Real;

P: Real; (*произведение сумм*)

J: Integer; (*параметр цикла*)

Function Summa (N, K: Integer): Real;

Var I: Integer;

S: Real;

Begin

S:=0;

For I:=N to K do S:=S+A[I];

Summa:=S;

End;

Begin

Writeln (‘Ввод массива’);

For J:=1 to M do Read (A[J]);

P:=Summa (1,12)* Summa(8,15);

Writeln(‘произведение=’,P:6:3);

End.

Пример: Дан массив (Х12,…Х100). Записать отдельно положительные и отрицательные элементы.

Program Sort;

Const Nmax=100;

Var X,Pol,Otr: Array [1..Nmax] of Real;

I,N,K: Integer;

Begin

N:=0; K:=0;

For I:=1 to Nmax do

Begin

Read (X[I]);

If X[I] >0 then

Begin

K:=K+1;

Pol[K]:=X[I];

End

Else

Begin

N:=N+1;

Otr[N]:=X[I];

End;

End;

For I:=1 to K do Write (Pol[I]);

Writeln;

For I:=1 to N do Write (Otr[I]);

End.

Пример: Вычислить среднее арифметическое массива D из N элементов (N£500).

Program Sred;

Const NM=500;

Var D: Array [1..NM] of Real;

I,N,Nvar: Integer;

Sum, Srd: Real;

Begin

Sum:=0;

Writeln (‘Nvar=?’);

Readln(Nvar);

Writeln (‘Ввод массива’);

For I:= 1 to Nvar do

Begin

Read (D[I]);

Sum:= Sum + D[I];

End;

Srd:=Sum/Nvar;

Writeln(‘Srd=’,srd);

End.

Пример: Вычислить n!

Program Nfact;

Var NF, K, N:Integer;

Begin

Writeln(‘N=?’);

Readln (N);

NF:=1;

For K:=1 to N do NF:=NF*K;

Writeln(‘NF=’,NF);

End.

Пример: Найти наибольший элемент массива (b1,b2,…b100) и его №.

Program Max;

Const NMax=100;

Var B: Array [1..NMax] of Real;

I,Imax: Integer;

Bmax: Real;

Begin

Writeln (‘Ввод массива’);

For I:=1 to NMax do Read (B[I]);

Bmax:=b[1]; Imax:=1;

For I:=2 to NMax do

If B[I]>Bmax then

Begin

Bmax:=B[I];

Imax:=I;

End;

Writeln (‘Bmax=’, Bmax, ’Imax=’, Imax);

End.

Пример: Найти скалярное произведение двух векторов:

X=(x1,x2,…xn) n

Y=(y1,y2,…yn) (X,Y)=S xiyi

i=1

Program Scal;

Const N=3;

Type Vektor = Array [1..N] of Real;

Var X, Y: Vektor;

I: Integer;

S: Real;

Begin

S:=0;

Writeln (‘Ввести X,Y’);

For I:=1 to N do

Begin

Read(X[I],Y[I]);

S:= S+ X[I]*Y[I];

End;

Writeln(‘Scal=’,S);

End.

Пример: Перемножить два вектора:

X=(x1,x2,x3) _ _ _

Y=(y1,y2,y3) Z = X * Y

Program V;

Type Vektor = Array [1..3] of Real;

Var X, Y, Z: Vektor;

I: Integer;

Begin

Writeln (‘Ввести X,Y’);

For I:=1 to 3 do

Begin

Read (X[I],Y[I]);

Z[I]:= X[I]*Y[I];

End;

Writeln (‘Вектор Z’);

For I:=1 to 3 do Write (Z[I]);

End.

(x1, x2, x3) * (y1, y2, y3) = (x1y1, x2y2, x3y3)



<== предыдущая лекция | следующая лекция ==>
Побочный эффект рекурсии | Алгоритмы сортировки массивов


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


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

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

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


 


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

 
 

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

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