Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

WinRAR ZIP archi / 2011_Лабораторные по инф_паскаль_Ч2

.pdf
Скачиваний:
30
Добавлен:
14.02.2015
Размер:
264.15 Кб
Скачать

Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования «Алтайский государственный технический университет имени И.И.Ползунова»

Факультет пищевых и химических производств

Кафедра технологии хранения и переработки зерна

Лузев В.С.

Методические указания к выполнению лабораторных работ по дисциплине

информатика

Основы алгоритмизации и программирования на языке

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