
2011_Лабораторные по инф_паскаль_Ч2
.pdfМинистерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования «Алтайский государственный технический университет имени И.И.Ползунова»
Факультет пищевых и химических производств
Кафедра технологии хранения и переработки зерна
Лузев В.С.
Методические указания к выполнению лабораторных работ по дисциплине
информатика
Основы алгоритмизации и программирования на языке
PascalABC.NET
Часть 2
Для студентов специальностей:
260201.65 -Технология хранения и переработки зерна, 260202.65 - Технология хлеба, кондитерских и макаронных изделий, 260204.65 - Технология бродильных производств и виноделие, 260501.65 - Технология продуктов общественного питания, 260303.65 -Технология молока и молочных продуктов», 260601.65 - Машины и аппараты пищевых производств».
Барнаул 2011
УДК 65.011.56
Лузев В.С. Методические указания по выполнению лабораторных работ по дисциплине информатика. Основы алгоритмизации и программирования на языке PascalABC.NET. Часть 2 / Алт. гос. техн. ун-т им. И.И. Ползунова. - Барнаул: Изд-во АлтГТУ, 2011. - 41 с.
Методические указания содержат необходимые для работы краткие теоретические сведения и методику изучения языка программирования PascalABC.NET в ходе выполнения лабораторных работ. Приводятся примеры решения задач, а также вопросы для самостоятельной работы.
Рассмотрены и одобрены на заседании кафедры технологии хранения и переработки зерна. Протокол N 7 от 28.01.11 г.
2
Оглавление Лабораторная работа №17. Алгоритмы обработки массивов (4 часа).....5
Лабораторная работа №18. Использование процедур и функций пользователя. Численные методы решения уравнений. (4 часа)..…..…............14
Лабораторная работа №19. Обработка текстовых данных (2 часа) … .25
Лабораторная работа №20. Численное интегрирование. Методы трапеций и парабол (Симпсона) (2 часа).………………………………… .…33
Литература……………………………………………………..…… ……41
3
Общие указания к выполнению лабораторных работ
Выполнив лабораторную работу, студент оформляет отчет, который состоит из следующих разделов:
1.Тема и цель работы.
2.Условия задачи.
3.Математическая модель задачи.
4.Блок схема алгоритма.
5.Текст программы и исходные данные.
6.Результаты выполнения программы.
7.Ответы на контрольные вопросы.
При защите отчета необходимо ответить на контрольные вопросы и уметь пояснять работу программы.
4
Лабораторная работа №17
Алгоритмы обработки массивов(4 часа)..
Цель работы: получение практических навыков разработки и выполнения компьютерной программы
Предмет и содержание работы: разработка и отладка компьютерной программы для обработки массивов.
Технические средства и программное обеспечение: персональный компьютер с операционной системой Windows™, система PascalABC.NET
В большинстве языков программирования и в PascalABC.NET предусмотрены средства, позволяющие некоторым стандартным образом давать имена сразу целому массиву переменных. Вместо того, чтобы присваивать уникальное имя каждой отдельной переменной, можно задать одно имя для целого их массива, а каждый элемент этого массива идентифицировать с помощью числового индекса. Правила образования имен массивов те же, что и для имен простых переменных.
Для обращения к отдельному элементу массива достаточно после имени массива написать индекс, заключенный в скобки. Индексом может служить не только константа, но и переменная, выражение: А[2],
С[К], Т[А+В].
Отдельные переменные в массиве называются элементами массива, а максимальное число элементов в массиве называется размером массива.
Кроме размера массив может иметь размерность - число индексов. Массивы, имеющие один индекс, называются одномерными, а массивы, имеющие больше одного индекса - многомерными. Двухмерный массив представляет собой двухмерную таблицу, состоящую из строк и столбцов. Трехмерный массив можно представить себе как куб, а для больших размерностей трудно найти простой геометрический образ.
Тип статического массива конструируется следующим образом:
array [тип индекса1, ..., тип индексаN] of базовый тип
Тип индекса должен быть порядковым. Обычно тип индекса является диапазонным и представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа. Например:
5
Например, если задан двумерный массив(матрица) B:
æ 5 |
5 |
8 |
ö |
ç 4 |
1 |
12 |
÷ |
ç |
|
|
÷ |
è 5 |
9 |
7 |
ø |
то в разделе описаний необходимо объявить имя, размер и размерность массива.
var
В: array [1..3,1..3] of integer; // массив В размерностью 2 целого-
типа, содержит 3 строки и 3 столбца;
Arr2: array [1..4,1..2] of real; //двумерный массив Arr2 веществен-
ного типа, содержит 4 строки и 2 столбца.
Присваивание значений элементам массива (инициализация массива)
Значения элементам массива можно присвоить каждому в отдельности:
Arr2[2]:=45;
При описании можно также задавать инициализацию массива значениями:
var
a: array [1..10] of integer:= (1,2,3,4,5,6,7,8,9,0);
d: array [1..3,1..4] of real := ((1,2,3,4), (5,6,7,8), (9,0,1,2));
Статические массивы одного типа можно присваивать друг другу, при этом будет производиться копирование содержимого одного массива в другой:
a1:=a2;
Под выводом массива понимается вывод на экран значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для этого также удобно воспользоваться оператором цикла с параметром (оператор цикла For), переменная-счетчик которого может быть использован как индекс элемента массива.
6

Пример 1. Присваивание значений элементам и вывод их на экран дисплея.
Начало |
i := 1 to 3 |
j := 1 to 4 |
massiv[i, j]:3:0 |
Конец |
Рисунок 17.1 - Схема алгоритма вывода на экран элементов двумерного массива
program N_17_1;
var
massiv: array[1..3, 1..4] of real := ((1, 2, 9, 1), (7, 3, 4, 1), (3, 7, 6, 0));
i, j: integer;
begin
for i := 1 to 3 do begin
for j := 1 to 4 do write(massiv[i, j]:3:0);
writeln;{Оператор переводит курсор на следующую строку экрана после вывода очередной строки таблицы}
end; end.
7

Пример 2. Присваивание значений элементам массива генератором слу-
чайных чисел function Random:
Начало
i := 1 to N
A[i] := Random(17)
i := 1 to N
A[i]:4
Конец
Рисунок 17.2 - Схема алгоритма присваивания значений элементам массива генератором случайных чисел
program N_17_2;
const
N = 7;// присваиваем константе N значение
var
A: array[1..N] of Integer;{описание массива раз-
мером N}
I: Integer;
begin
for i := 1 to N do
A[i] := Random(17); {заполнение массива слу-
чайными числами function Random(maxValue: integer): integer; возвращает случайное целое в диапазоне от
0до maxValue-1 } for i := 1 to N do
write(A[i]:4);
end.
8

Пример 3. Задать массивы (матрицы) целых чисел А и В размером 3х4. Вычислить их сумму и вывести на экран.
Суммой матриц А и В одинаковых размеров называется матрица С тех же размеров, у которой c[i, j] = a[i, j] + b[i, j]. Обозначение: C = А + В.
Начало |
|
i := 1 |
to 3 |
j := 1 |
to 4 |
b[i, j] := Random(17) |
i := 1 |
to 3 |
j := 1 |
to 4 |
c[i, j] := a[i, j] + b[i, j] |
'сумма массивов А и В' |
||
i := 1 |
to |
3 |
j := 1 |
to |
4 |
c[i, j]:3, ' ' |
||
Конец |
|
Рисунок 17.3 - Схема алгоритма сложения массивов
9
program N_17_3;
//ввод массивов a и b ,сложение их и вывод результата
var
i, j: integer;
a: array [1..3, 1..4] of integer := ((1, 2, 3, 8), (4, 5, 6, 4), (9, 5, 3, 5));
b, c: array [1..3, 1..4] of integer;
begin
for i := 1 to 3 do for j := 1 to 4 do
b[i, j] := Random(17); {заполнение массива случайными числами
function Random(maxValue: integer): integer;
Возвращает случайное целое в диапазоне от 0
до maxValue-1 }
for i := 1 to 3 do for j := 1 to 4 do
c[i, j] := a[i, j] + b[i, j]; writeln('сумма массивов А и В');
for i := 1 to 3 do begin
writeln;
for j := 1 to 4 do write(c[i, j]:3, ' ');
end; end.
Пример 4. Вычислить произведение C матрицы A размером N*M на вектор B размером M. Вывести вектор С на экран с заголовком. Для вычисления произведения матрицы A на вектор B необходимо найти
Ci= Aij*Bj, i=1, ...,n; j=1, ...,m ,
где n - число строк; m - число столбцов.
10