Главная страница
Навигация по странице:

  • 3.3. Описание двумерных массивов на языке Pascal

  • 5. Краткое руководство по эксплуатации оборудования

  • 6. Задание 6.1. Варианты заданий с использованием одномерных массивов

  • 6.2. Варианты заданий с использованием двумерных массивов

  • 7. Методика выполнения заданий

  • 7.1. Примеры типовых задач обработки одномерных массивов данных

  • 7.1.1. Нахождение суммы элементов массива.

  • 7.1.2.

  • 7.1.3.

  • 7.1.4. Поиск данных в массивах.

  • Методичка по информатике. Практикум по дисциплине Информатика Допущено Редакционноиздательским советом угату в качестве учебного пособия для студентов, обучающихся по направлениям подготовки бакалавров 080100 Экономика


    Скачать 8.99 Mb.
    НазваниеПрактикум по дисциплине Информатика Допущено Редакционноиздательским советом угату в качестве учебного пособия для студентов, обучающихся по направлениям подготовки бакалавров 080100 Экономика
    АнкорМетодичка по информатике.pdf
    Дата19.01.2018
    Размер8.99 Mb.
    Формат файлаpdf
    Имя файлаМетодичка по информатике.pdf
    ТипПрактикум
    #14582
    страница6 из 26
    1   2   3   4   5   6   7   8   9   ...   26
    3.2.2.
    Вывод
    элементов
    массива.
    Вывод массива осуществляется также поэлементно, с помощью оператора цикла, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.

    78
    Пример фрагмента программы вывода массива:
    Var A: array [1..10] of integer;
    I: byte ; {переменная I вводится как индекс массива}
    Begin
    For i :=1 to 10 do
    Write ( a [ i ],’ ‘); {вывод массива осуществляется в строку, после каждого элемента печатается три пробела}.
    На экране в результате выполнения данного фрагмента программы будут следующие значения:
    2 4 1 -7 ……и т.д.
    Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
    Пример программы вывода массива Паскаля «столбиком»:
    Var A: array [1..10] of integer;
    I : byte ; {переменная I вводится как индекс массива}
    Begin
    For i:=1 to 10 do
    Writeln (‘a[‘, i,’]=’, a[i]); { вывод элементов массива в столбик }
    На экране в результате выполнения данного фрагмента программы будут следующие значения: a [1]=2 a [2]=4 a [3]=1 и т.д.
    3.3. Описание двумерных массивов на языке Pascal
    Массив, для задания элементов которого требуется использовать два индекса, называется двумерным. Примерами двумерных массивов являются разнообразные таблицы, в которых каждый элемент характеризуется номером строки и номером столбца.

    79
    Например, в качестве двумерного массива можно представить оценки из аттестационной ведомости студентов, где каждая оценка показывает знания некоторого студента по определенному предмету:
    Ф.И.О.
    Математика Информатика
    Физика
    Химия
    Андреев А.Л.
    5 5
    4 5
    Биктимиров С.Р.
    3 4
    3 2
    Симонова В.П.
    4 3
    4 3
    Двумерные массивы, в которых диапазоны индексов начинаются с 1, также называются иногда матрицами. Размерность каждой матрицы определяется как MxN, где М – число строк в матрице, N – число столбцов.
    Например, в предложенной выше матрице оценок из трех строк и четырех столбцов элемент A[3, 1]=4, A[1, 2]=5, A[3, 2]=3, A[2, 4]=2.
    Первый индекс элемента матрицы характеризует номер строки матрицы, в которой расположен элемент, второй индекс – номер столбца.
    Если число строк матрицы равняется числу столбцов, то матрицы данного типа называются квадратными. Элементы квадратной матрицы вида B[1,1], B[2,2], B[3,3]… составляют главную диагональ матрицы.
    Описание типов двумерных массивов в языке Pascal осуществляется аналогично описанию типов одномерных массивов с добавлением диапазона изменения второго индекса, например:
    TYPE MATR=ARRAY[1..4, 1..5] OF INTEGER;
    TYPE T=ARRAY[0..10, 2000..2004] OF REAL;
    Переменные, относящиеся к типу массива, должны быть соответствующим образом объявлены в разделе описания переменных, например:
    VAR А: MATR;
    VAR B, C, D: T; или описание массива происходит непосредственно в разделе описания переменных:
    VAR N: ARRAY [1..5, 1..10] OF INTEGER;

    80
    4.Описание оборудования и используемых программных
    комплексов
    При выполнении лабораторной работы необходим специализированный компьютерный класс с минимальными системными требованиями компьютеров:
    Процессор – Intel Pentium III;
    ОЗУ – 256 Mb; видеокарта – 32 Mb.
    Требуемое программное обеспечение:
    Операционная система Microsoft Windows;
    Borland Pascal 7.0 for DOS / Borland Pascal 7.0 for Windows.
    5. Краткое руководство по эксплуатации оборудования
    При использовании оборудования необходимо: соблюдать общие правила нахождения в учебных лабораториях, работы с компьютером и использования программных средств; привести в порядок одежду; осмотреть рабочее место, убрать все мешающие работе предметы; визуально проверить правильность подключения ПЭВМ к электросети.
    6. Задание
    6.1. Варианты заданий с использованием одномерных
    массивов
    Решить задачу с использованием одномерных массивов по указанному преподавателем варианту табл. 1.

    81
    Таблица 1
    Варианты заданий на тему «Одномерные массивы»
    № варианта
    Задание
    1 2
    1
    Найдите среднее арифметическое элементов заданного массива из 8 целых чисел и определите, сколько элементов данного массива больше среднего.
    2
    Задан массив из 10 целых чисел. Замените все положительные элементы данного массива его максимальным элементом.
    3
    Задан массив из 8 действительных чисел. Замените все отрицательные элементы данного массива его минимальным элементом.
    4
    Найдите сумму максимального и минимального элементов заданного массива из 10 действительных чисел.
    5
    В заданном массиве из 8 действительных чисел вычислите сумму и среднее арифметическое значение положительных элементов.
    6
    Задан массив из 10 целых чисел. Найдите среднее арифметическое всех четных элементов массива.
    7
    Подсчитайте количество нулевых элементов в массиве из 10 целых чисел и распечатайте исходный массив в обратном порядке.
    8
    Дан целочисленный массив из 8 целых чисел. Преобразуйте его, прибавив к четным числам значение первого элемента. Первый элемент массива оставьте без изменений.
    9
    Дан целочисленный массив из 10 целых чисел. Преобразуйте его, прибавив к нечетным числам значение последнего элемента. Последний элемент массива оставьте без изменений.
    10
    Найдите наибольший по модулю элемент заданного массива из
    9 действительных чисел.
    11
    В заданном массиве из 5 действительных чисел определите количество чисел, не попадающих в интервал от -2 до 2,5.
    12
    Дан одномерный массив из 10 элементов. Подсчитайте количество его элементов, кратных 3.
    13
    Замените все положительные элементы заданного целочисленного массива из 8 элементов числом 1, а все отрицательные элементы – числом 0.
    14
    Задан массив из 8 целых чисел. Определите, каких элементов в массиве больше – четных или нечетных.
    15
    Вычислите среднее арифметическое всех отрицательных элементов заданного массива из 8 действительных чисел.

    82
    Окончание табл. 1 1
    2 16
    Дан одномерный массив из 10 элементов. Упорядочте его элементы по возрастанию методом «пузырька».
    17
    Дан одномерный массив из 10 элементов. Подсчитайте произведение его нечетных элементов.
    18
    Дан одномерный массив из 10 элементов. Найдите его минимальный элемент и напечатайте его порядковый номер.
    19
    Дан одномерный массив из 10 элементов. Найдите среднее арифметическое его элементов и выведите все элементы, меньшие среднего арифметического.
    20
    Дан одномерный массив из 10 элементов. Упорядочте его элементы по убыванию линейным методом.
    6.2. Варианты заданий с использованием двумерных
    массивов
    Решить задачу с использованием двумерных массивов по указанному преподавателем варианту табл. 2.
    Таблица 2
    Варианты заданий на тему «Двумерные массивы»
    № варианта
    Задание
    1 2
    1
    Дана целочисленная матрица размера 5x6. Поменять местами первый и последний из столбцов.
    2
    Дана действительная матрица размера 3x4. Найти сумму элементов последнего столбца данной матрицы.
    3
    Дана целочисленная матрица размера 5x7. Заменить в данной матрице все отрицательные элементы числом 0, положительные элементы – числом 1.
    4
    Дана целочисленная матрица размера 4x6. Переставить местами 1 и
    2 строку матрицы.
    5
    Дана целочисленная матрица размера 5x6. Поменять местами 1 и 2 столбцы.
    6
    Дана целочисленная матрица размера 4x3. Найти произведение элементов первого столбца данной матрицы.
    7
    Дана квадратная целочисленная матрица размера 4х4. Заменить нулями элементы матрицы, лежащие на главной диагонали.
    8
    Дана действительная матрица размера 3x4. Найти минимальное значение в первой строке данной матрицы.
    9
    Задана целочисленная квадратная матрица размера 3х3. Найти наименьший элемент главной диагонали данной матрицы.

    83
    Окончание табл. 2 1
    2 10
    Дана целочисленная матрица размера 4x4. Найти минимальное значение во втором столбце данной матрицы.
    11
    Дана действительная матрица размера 4x3. Найти максимальное значение в третьей строке данной матрицы.
    12
    Дана квадратная целочисленная матрица размера 6х6. Заменить нулями элементы матрицы, лежащие выше главной диагонали.
    13
    Известны результаты сдачи трех экзаменов десятью студентами.
    Найти средний балл каждого студента и общий средний балл.
    Точность среднего балла – два знака после запятой.
    14
    В матрице целых чисел размера 10х15 определить количество и сумму элементов, значения которых находятся вне интервала [-1, 1].
    15
    Дана квадратная целочисленная матрица 7х7. Найти сумму элементов ее побочной диагонали.
    16
    Дана действительная матрица размерности 3х5. Найти количество положительных элементов, расположенных в третьей строке данной матрицы.
    17
    Дана целочисленная матрица размерности 4х4. Найти количество отрицательных элементов, расположенных во втором столбце данной матрицы.
    18
    Дана действительная матрица размерности 3х5. Сформировать одномерный массив минимумов по строкам данной матрицы.
    19
    Дана действительная матрица размера 4x3. Сформировать одномерный массив максимумов по столбцам данной матрицы.
    20
    Дана действительная матрица размера 5x6. Подсчитать среднее арифметическое положительных элементов главной диагонали.
    7. Методика выполнения заданий
    Для выполнения заданий необходимо:
    1)
    изучить теоретическую часть (п. 3), рассмотреть нижеприведенные примеры (п. 7.1 и 7.2);
    2)
    разработать алгоритмы для решения задач согласно выданному варианту, составить программы на языке Pascal, воспользовавшись нижеприведенными примерами, протестировать и представить полученный результат преподавателю;
    3)
    ответить на контрольные вопросы;
    4)
    создать отчет по лабораторной работе в электронном виде.

    84
    7.1. Примеры типовых задач обработки одномерных
    массивов данных
    К стандартным типам задач на обработку массивов данных относятся следующие задачи: нахождение суммы элементов массива; нахождение количества элементов массива, удовлетворяющих определенным условиям; задачи на поиск элементов массива, удовлетворяющих некоторым заданным условиям; преобразование массивов путем замены и перестановки их элементов; упорядочение элементов массива и др.
    7.1.1. Нахождение суммы элементов массива. К данному классу относятся разнообразные задачи, связанные с вычислением итоговых сумм для заданного множества значений. Суммирование при этом может проводиться как по всем элементам массива, так и только по тем элементам, которые удовлетворяют заданным условиям.
    Для нахождения суммы элементов массива используется следующий алгоритм. Сначала предполагается, что значение искомой суммы равно нулю. Далее на каждом шаге цикла проводится накопление данной суммы путем добавления к уже имеющемуся значению суммы значения очередного элемента массива. Если суммирование проводится не по всем элементам массива, то в программу добавляется условный оператор проверки выполнения наложенного на элементы массива условия.
    Пример
    1.
    Нахождение суммы элементов массива, удовлетворяющих некоторому заданному условию.
    Найти сумму четных элементов заданного одномерного массива из 10 целых чисел.
    PROGRAM Sum_mas;
    Type Mas=array[1..10] of integer;
    Var a: Mas; i,s: integer;
    Begin

    85 s:=0; for i:=1 to 10 do begin writeln('Введите элемент массива'); readln(a[i]); if a[i] mod 2=0 then s:=s+a[i] {Проверка четности элемента и накопление суммы} end; writeln('Сумма s=', s)
    End.
    7.1.2.
    Нахождение
    количества
    элементов
    массива,
    удовлетворяющих определенным условиям. Для нахождения количества элементов массива, удовлетворяющих определенным условиям, используется следующий алгоритм.
    Сначала предполагается, что значение переменной-счетчика, обозначающей количество таких элементов, равно нулю. Далее на каждом шаге цикла проводится проверка выполнения наложенного на элементы массива условия, и в случае соответствия рассматриваемого элемента заданным условиям происходит увеличение значения переменной- счетчика на единицу.
    Пример 2. Задан массив из 6 целых чисел. Найти количество неотрицательных элементов массива.
    PROGRAM Kol;
    Var А: array[1..10] of integer; i, k: integer;
    Begin k:=0; for i:=1 to 10 do begin writeln('Введите элемент массива'); readln(a[i]); if A[i] >=0 then k:=k+1 {Проверка соответствия условию элемента и увеличение счетчика} end; writeln('Количество неотрицательных элементов к=', к) for i:=1 to 6 do

    86 write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела}
    End.
    7.1.3.
    Преобразование
    массивов
    путем
    замены
    и
    перестановки их элементов. Данную задачу можно представить себе так: есть стакан сока и кружка молока, нужно перелить молоко в стакан, а сок – в кружку. Решение данной задачи невозможно без наличия третьей емкости.
    Аналогично для выполнения преобразования замены-перестановки в массиве необходима дополнительная переменная. Следует также учитывать, что необходимо вывести на печать исходный и преобразованный массивы с соответствующими комментариями для наглядности результатов выполнения программы.
    Пример 3. Преобразовать массив, поменяв местами первый и последний элемент исходного массива из 6 элементов.
    PROGRAM Zamena;
    Var А: array[1..10] of integer; i, c: integer;
    Begin k:=0; for i:=1 to 10 do begin writeln('Введите элемент массива'); readln(a[i]); end; writeln('Исходный массив:'); for i:=1 to 6 do write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела} c:=a[1]; {дополнительной переменной с присваивается значение первого элемента массива} a[1]:=a[6]; {значение первого элемента массива заменяется на значение 6-го элемента} a[6]:=c;
    {шестому элементу массива присваивается значение 1-го элемента, сохраненное как переменная с}

    87 for i:= 1 to 6 do write (a[i]:5); writeln('Преобразованный массив:'); for i:=1 to 6 do write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела}
    End.
    7.1.4. Поиск данных в массивах. Поиск информации, удовлетворяющей определенным условиям, является одной из наиболее распространенных задач обработки массивов. В частности, к данному классу задач можно отнести поиск наибольших и наименьших элементов массива, поиск элементов, удовлетворяющих разнообразным операциям отношений (больших заданного числа, равных ему и т.д.) и другие.
    Пример 4. Поиск наибольшего элемента в массиве. Задан одномерный массив из 7 действительных элементов. Найти наибольший элемент данного массива.
    PROGRAM Max_mas;
    Type Mas=array[1..7] of real;
    Var a: Mas; max : real; i: integer;
    Begin for i:=1 to 7 do begin writeln(‘Введите элемент а[‘,i,’]’); readln(a[i]) end; max:=a[1]; for i:=2 to 7 do if maxEnd.
    В данной программе реализован следующий алгоритм. В начальный момент предполагается, что наибольшим является первый из элементов массива. Далее этот элемент сравнивается с остальными элементами массива, и, если найдется элемент, больший, чем

    88 предполагаемый максимум, то переменной мах присваивается это значение.
    7.1.5.
    Сортировка
    одномерных
    массивов
    данных.
    Сортировкой массива называют упорядочение его элементов в соответствии с определенными правилами (как правило, по возрастанию или убыванию элементов).
    Рассмотрим следующие алгоритмы сортировки массивов данных: линейная сортировка (сортировка отбором) и сортировка методом «пузырька».
    Алгоритм линейной сортировки массивов по возрастанию заключается в следующем. Сначала первый элемент массива сравнивается по очереди со всеми оставшимися элементами. Если очередной элемент массива меньше по величине, чем первый, то эти элементы переставляются местами. Сравнение продолжается далее уже для обновленного первого элемента, в результате чего будет найден и установлен на первое место самый наименьший элемент массива. Далее продолжается аналогичный процесс уже для оставшихся элементов массива, т.е. второй элемент сравнивается со всеми остальными и, при необходимости, переставляется с ними местами.
    Алгоритм завершается, когда сравниваются и упорядочиваются предпоследний и последний из оставшихся элементов массива.
    Пример 5. Линейная сортировка массива по возрастанию.
    Известны результаты тестирования 9 учащихся. Расположить данные результаты в порядке возрастания баллов.
    Программа реализации изложенного выше алгоритма линейной сортировки отбором может иметь следующий вид:
    PROGRAM Sort;
    TYPE M=array[1..9]of integer;
    Var a: M; i,j,m, k, x: integer;
    Begin
    For i:=1 to 9 do begin writeln('Введите результаты ',i,'-го учащегося'); readln(a[i])

    89 end;
    {Для всех элементов массива, кроме последнего, сделать} for j:=1 to 8 do begin m := j; {Ищем минимальный элемент (в начале j-й)} for k:=j+1 to 9 do if a[k]Особенностью сортировки методом «пузырька» является не сравнение каждого элемента со всеми, а сравнение в парах соседних элементов. Данный алгоритм состоит в последовательных просмотрах от начала к концу элементов массива. Если для пары соседних элементов выполняется условие, что элемент справа больше элемента слева, то производится обмен значениями этих элементов, т.е. в процессе выполнения алгоритма постепенно «всплывают» более
    «легкие» элементы массива.
    Фрагмент программы на Паскале выглядит так: for j:=n downto 2 do
    {Сравнить все пары соседних элементов от первого до (j-1)-го} for k:=1 to j-1 do if a[k]>a[k+1] then begin x:=a[k]; {Обменять k-й элемент с (k+1)-м} a[k]:=a[k+1]; a[k+1]:=x end;

    90
    1   2   3   4   5   6   7   8   9   ...   26


    написать администратору сайта