Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2017-11-18 | 283 |
5.00
из
|
Заказать работу |
|
|
При решении практических задач достаточно часто возникает потребность хранения табличных данных. В качестве примеров массивов в математике можно привести векторы, матрицы, таблицы и т.п.
Массив – это группа элементов, названная одним именем. Элементы массива обозначают именем массива, их местоположение в массиве определяется приписываемым к имени массива индексом.
Объявление массива в программе осуществляется с использованием ключевого слова array, используемого следующим образом:
Type
Имя_типа_массива = array [диапазон] of тип_элементов;
Рассмотрим несколько примеров декларации массивов:
Type
Ar = array [1..100] of integer;
Var
A,B,C: Ar;
Декларацию переменных-массивов можно осуществлять непосредственно в разделе переменных:
Var
A,B,C: array[1..100] of integer;
Пример использования отдельных элементов – обращение через оператор присваивания, считывание с клавиатуры, использование в арифметических выражениях. Обратить внимание на принципиальное отличие от обычной переменной — возможность использования косвенной адресации, по номеру (индексу) элемента.
Пример ввода одномерного массива с клавиатуры и последующего вывода его на экран.
const
Nmax = 10;
var
n: integer;
a: array [1..Nmax] of integer;
begin
{Сначала ввод}
for n:=1 to Nmax do
begin
write(‘Введите элемент a[’, n, ‘]: ’);
read(a[n]);
end;
{Теперь вывод}
for n:=1 to Nmax do
writeln(‘Элемент a[’, n, ‘] = ’, a[n]);
end.
В качестве примера работы с массивом рассмотрим задачу расчета среднего арифметического элементов массива:
Const
Nmax = 500; {константа, определяющая максимальный
размер массива}
Var
X: array[1..Nmax] of integer; { массив для хранения целых чисел }
n: integer; { переменная для хранения выбранного пользователем
|
количества используемых элементов массива }
i: integer; { переменная-параметр цикла }
S: real; { Переменная для хранения
рассчитываемой суммы элементов }
Begin
{ Ввод числа элементов n}
write(‘Введите n: ’);
read(n);
{ Ввод массива X}
for i:=1 to n do
Begin
write(‘Введите X[’, i, ‘]: ’);
read(X[i]);
end;
{ Расчёт среднего арифметического }
S:=0;
For i:=1 to n do
S:=S+X[i];
S:=S/n;
writeln(‘S = ’, S);
End.
Раздел №14 (4 часа)
Процедуры и функции
План:
• Структурный подход к разработке программы. Подпрограммы
• Синтаксис объявления и использования процедур
• Синтаксис объявления и использования функций
• Примеры использования подпрограмм на Паскале
• Параметры-переменные и параметры-значения
14. Процедуры и функции
Структурный подход к разработке программы. Подпрограммы
Рассмотрим следующий пример. Дан треугольник ABC с длинами сторон a, b и c соответственно (рис. 2). Необходимо разработать программу, вычисляющую его площадь.
Рис. 2
Для решения задачи воспользуемся формулой Герона:
,
где – полупериметр:
.
Алгоритм решения будет иметь вид:
Программная реализация этого алгоритма может иметь вид:
Var
a, b, c: real; {Переменные для хранения исходных данных}
S: real; {Переменные для хранения исходных данных}
p: real; {Вспомогательная переменная для хранения полупериметра}
Begin
write(‘Введите a, b и c: ’); read(a, b, c);
p:= (a + b + c)/2.0;
S:= sqrt(p*(p-a)*(p-b)*(p-c));
write(‘S=’, S:0:3);
end.
Усложним исходное задание. Предположим, что необходимо рассчитать площадь четырёхугольника ABCD, заданного длинами своих сторон a, b, c, d и длиной диагонали e.
Искомая площадь представляет собой сумму площадей соответствующих треугольников . Поэтому для решения задачи можно также воспользоваться формулой Герона, которую в этом случае придётся применять дважды. Алгоритм решения можно представить следующим образом:
Следует обратить внимание на то, что одна и та же последовательность вычислений: «расчёт полупериметра – расчёт площади», – выполняется в программе дважды, но с различными исходными данными. Первый раз вычисления производятся с использованием длин a, b и e, а во втором – c, d и e.
|
В принципе по данному алгоритму можно было бы непосредственно написать программу вычислений, продублировав однотипные операторы несколько раз. Однако такой подход имеет ряд принципиальных недостатков:
1. Дублирование операторов увеличивает размер программы, повышает требования к объёму оперативной памяти, необходимой для хранения машинных кодов.
2. Дублирование снижает возможности по сопровождению и модификации программы; например можно представить, что на каком-то этапе разработки программы было принято решение отказаться от использования формулы Герона, и рассчитывать площадь треугольников иным образом. В этом случае программисту пришлось бы тщательно отыскивать все места в программе, где встречается последовательность операторов расчёта площади и менять их на новые фрагменты. При этом нет полной уверенности, что все последовательности были найдены и корректно изменены.
3. Механическое дублирование увеличивает размер исходных текстов программы и усложняет её восприятие программистом.
Для преодоления всех этих проблем в языках высокого уровня предусматривается обычно возможность выделения отдельных фрагментов программы в некоторые самостоятельные блоки – подпрограммы, к которым можно обращаться многократно из основной части программы.
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!