русс | укр

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

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

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

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


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

Массивы


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


 

Массив – это совокупность элементов, имеющих одинаковое имя и отличающихся номером (индексом) их расположения в последовательности.

Типы данных, которые мы до сих пор рассматривали, называют скалярными. Их использование не всегда эффективно. Так, если в задаче данные являются родственными, например оценки группы студентов, то скалярные типы применять неудобно. Для определения количества студентов (KolStud), имеющих балл (BallStud) выше среднего (Sr), пришлось бы записать 25 операторов вида

KolStud := 0;

If BallStud1 > Sr Then

KolStud := KolStud + 1;

If BallStud2 > Sr Then

KolStud := KolStud + 1;

и т. д.

 

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

Примеры массивов:

1) последовательность чисел (оценок)

х1, x2, x3, ..., xn – 1 индекс

2) матрица чисел

 
 

 


Примером представления данных в виде матрицы может служить запись коэффициентов системы линейных уравнений.

Для описания массива используется служебное слово Array(Массив). Кроме того, необходимо задать:

1) имя массива;

2) диапазон изменения каждого индекса..

Количество индексов называется размерностью массива. По количеству индексов различают:

– одномерные массивы (последовательность чисел, символов);

– двумерные массивы (матрицы);

– трехмерные и т.д. массивы.

Как и скалярные переменные, массивы описываются в разделе описания переменных (т.е. после служебного слова Var), например:

Var

Имя_Массива : Array[Диапазоны_индексов] Of Тип_Элементов_Массива;

где Диапазоны_индексов – список границ изменения каждого индекса.

 

Пример.

Const

N=100;

M=5;

Var

X:Array[1..N] Of Real; {массив вещественных чисел}

A:Array[1..M,1..M] Of Integer; {мaтрица целых чисел}

Следует различать описание массива и значение его элемента при обработке (внутри программы, после первого Begin). Элемент массива в программе записывают в виде



Имя_Массива [индекс] или

Имя_Массива [список индексов]

 

Пример.

X[2] => x2

A[i,j] => Aij

Ваll [k,i+2] => Ballk,i+2

 

Индекс – это число, переменная или выражение перечисляемого целого или символьного типа.

 

Рассмотрим пример программы обработки массива.

 

Задача. Ввести в ЭВМ оценки студентов одной группы по одному предмету. Подсчитать средний балл и количество оценок выше средней.

 

Алгоритм

1. Ввести оценки.

2.1. Положить сумму баллов = 0.

2.2. Для номера оценки (i) от 1 до Количества_студентов_в_группе выполнить

Подсчитать сумму баллов.

3. Вычислить средний балл.

4. Положить количество оценок выше средней, равной 0.

5. Для номера (i) от 1 до Количества_студентов_в_группе выполнить

Подсчитать количество оценок выше средней.

6. Закончить.

 

Уточняем алгоритм.

1.1. Ввести количество оценок n.

1.2. Для номера оценки (i) от 1 до n выполнить.

1.2.1. Ввести баллi

2.1. Положить сумму баллов = 0.

2.2. Для номера оценки (i) от 1 до n выполнить

2.2.1. Сумма_баллов = сумма_баллов + баллi

3. Вычислить средний балл = сумма_баллов / n.

4. Положить количество оценок выше средней = 0.

5. Для номера от 1 до n выполнить

5.1. Если баллi > среднего, то

количество = количество +1.

 

Программа для этого алгоритма будет иметь вид

Program Ball;

Const

M=25;

Var

B:Array[1..M] OF Integer;

S:Real; {сумма и средний балл}

N,I,K:Integer; {K - счетчик}

Begin

Writeln('Введите количество оценок'); { п.1.1 }

Read (N);

Writeln('Введите оценки'); { п.1.2 }

For I:= 1 To N Do

Read(B[I]);

S:=0; { п.п. 2.1 - 2.2 }

For I:= 1 To N Do

S := S+B[I];

S := S/N; { п.3 - средний балл }

Writeln('Средний балл - ',S);

K: = 0; { п.4 }

For I:= 1 To N Do { п.5 }

If B[I]>S Then

K:=K+1;

Writeln('Количество оценок выше средней = ',K);

End.

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

 

Примеры программ обработки массивов

 

Пример 1. Ввести в ЭВМ массив, содержащий не более 100 чисел вещественных чисел. Вывести числа, стоящие на четных местах в массиве.

Рrogram Wtr;

Const

Nmax=100;

Var

X : Array[1..Nmax] Of Real;

i, n : Integer;

Begin

Writeln('Введите количество чисел');

Readln(n);

Writeln('Введите массив');

For i:= 1 To n Do

Read (X[i]);

For I:= 1 To n div 2 Do

Write (X[2*i]);

End.

Пример 2. Ввести в ЭВМ массив (последовательность) из n чисел (n<=100). Подсчитать количество положительных и отрицательных чисел, их суммы и средние значения.

Алгоритм (общий подход).

1. Ввести числа.

2. Положить количества положительных, отрицательных чисел и суммы = 0

3. Для номера числа от 1 до n выполнить

вычислить соответствующие суммы и количества

4. Вывести суммы, количества и средние.

5. Закончить.

 

Уточним этот алгоритм.

1.1. Ввести количество чисел n

1.2. Для номера числа (i) от 1 до n выполнить

ввести числоi

2. Положить количества положительных, отрицательных чисел и их сумм =0

3. Для номера числа от 1 до n выполнить

3.1. Если числоi >0, то

а) Количество_Пол_Чисел = Количество_Пол_Чисел +1 и

б) Сумма_Пол_Чисел = Сумма_Пол_Чисел + числоi

иначе

если числоi >0, то

а) Количество_Отр_Чисел = Количество_Отр_Чисел+1 и

б) Сумма_Отр_Чисел = Сумма_Отр_Чисел + числоi

4.1 Если Количество_Пол_Чисел. > 0, то

Среднее_Пол_Чисел = Сумма_Пол_Чисел / Количество_Пол_Чисел

4.2 Если Количество_Отр_Чисел > 0, то

Среднее_Отр_Чисел = Сумма_Отр_Чисел / Количество_Отр_Чисел

 

Программа для этого алгоритма будет иметь вид

 

Program Count_sred;

Const

Nmax = 100;

Var

X : Array[1..Nmax] Of Real;

N, I, Ko, Kp : Integer;

So, Sp, Sro, Srp : Real;

Begin

Writeln('Введите количество чисел');

Readln(n);

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

For i:=1 To n Do

Read(X[i]);

Ko:=0;

Kp:=0;

So:=0;

Sp:=0;

For i:=1 To N Do

If X[i]>0 Then

Begin

Kp:=Kp+1;

Sp:=Sp+X[i]

End

Else

If X[i]>0 Then

Begin

Ko:=Ko+1;

So:=So+ X[i]

End;

If Ko<>0 Then

Begin

Sro:= So/Ko;

Writeln('Количество отрицательных чисел = ', Ko);

Writeln('Сумма отрицательных чисел = ', So:8:2);

Writeln('Среднее отрицательных чисел = ',Sro:8:2);

End

Else

Writeln('В массиве нет отрицательных чисел.');

If Kp<>0 Then

Begin

Srp:= Sp/Kp;

Writeln('Количество положительных чисел = ', Kp);

Writeln('Сумма положительных чисел = ', Sp:8:2);

Writeln('Среднее положительных чисел = ', Srp:8:2);

End

Else

Writeln('В массиве нет положительных чисел.');

End.

 

11. Особенности алгоритмов и программ
с накапливанием

 

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

1) Сумма вычисляется по формуле

сумма := cумма + очередное слагаемое;

Перед вычислениями начальному значению суммы нужно присвоить ноль.

2) Произведение вычисляется по формуле

произведение := произведение * очередной сомножитель

Перед вычислениями начальному значению произведения нужно присвоить 1.

3) Подсчет количества выполняется по формуле, подобной формуле для вычисления суммы:

количество := количество + 1

Начальное значение количества должно быть = 0.

 



<== предыдущая лекция | следующая лекция ==>
Стандартные функции Паскаля и Турбо Паскаля | Алгоритм нахождения минимума и максимума


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


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

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

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


 


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

 
 

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

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