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

Методичка по информатике

.pdf
Скачиваний:
182
Добавлен:
18.03.2015
Размер:
9.43 Mб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Окончание табл.1

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

sin x

 

на интервале 0, 2

с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

y

 

x

3

 

 

x

2

на интервале

6, 3 с шагом 0.5.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

y

 

sin x

 

cos x tg x

 

на интервале 1.2, 1.2 с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

y

e

x

 

x

2 на интервале

2, 2 с шагом 0.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

y

1 tgx

2

2

на интервале

1.5, 1.5 с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

sin

 

 

x

1

 

sin x

1

3 на интервале 1, 2 с шагом 0.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.2. Составить программу решения задачи по указанному

 

преподавателем варианту из табл. 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2

 

 

 

Варианты заданий по теме «Подпрограммы-процедуры»

№ варианта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

1

Составить программу перемножения двух матриц произвольной

 

 

размерности, предусмотреть проверку возможности перемножения.

2

Составить программу сложения двух матриц произвольной размерности,

 

 

предусмотреть проверку возможности сложения.

3

Дана целочисленная прямоугольная матрица. Определить количество

 

 

строк, не содержащих ни одного нулевого элемента.

4

Дана целочисленная прямоугольная матрица. Определить количество

 

 

столбцов, не содержащих ни одного нулевого элемента.

5

Дана целочисленная прямоугольная матрица. Определить количество

 

 

столбцов, содержащих хотя бы один нулевой элемент.

6

Дана целочисленная прямоугольная матрица. Определить произведение

 

 

элементов в тех строках, которые не содержат отрицательных элементов.

7

Дана целочисленная прямоугольная матрица. Определить сумму

 

 

элементов в тех столбцах, которые не содержат отрицательных

 

 

элементов.

 

 

 

 

 

 

 

 

 

 

 

 

 

8

Дана целочисленная прямоугольная матрица. Определить сумму

 

 

элементов в тех строках, которые содержат хотя бы один отрицательный

 

 

элемент.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9Дана целочисленная прямоугольная матрица. Определить сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

100

 

Окончание табл. 2

1

2

10

Дана квадратная матрица действительных чисел. Найти сумму модулей

 

элементов, расположенных ниже главной диагонали.

11

Дана квадратная матрица действительных чисел. Найти сумму модулей

 

элементов, расположенных выше главной диагонали.

12

Дана прямоугольная матрица действительных чисел. Найти количество

 

строк, среднее арифметическое элементов которых меньше заданной

 

величины.

13

Дана прямоугольная матрица действительных чисел. Найти номер

 

первого из столбцов, содержащих хотя бы один положительный элемент.

14

Найти номер первого из столбцов прямоугольной матрицы, не

 

содержащих ни одного отрицательного элемента.

15

Найти номер первой из строк прямоугольной матрицы, не содержащих

 

ни одного отрицательного элемента.

16

Дана целочисленная прямоугольная матрица. Определить номер первого

 

из столбцов, содержащих хотя бы один нулевой элемент.

17

Дана целочисленная прямоугольная матрица. Определить номер первой

 

из строк, содержащих хотя бы один нулевой элемент.

18

Дан двумерный массив целых чисел. Составить программу, которая

 

определяет, есть ли в каждой из строк массива хотя бы один элемент,

 

оканчивающейся цифрой 3. В случае положительного ответа должны

 

быть напечатаны координаты любого из таких элементов

19

Найти номер первого из столбцов прямоугольной матрицы, не

 

содержащих ни одного положительного элемента.

20Найти номер первой из строк прямоугольной матрицы, не содержащих ни одного положительного элемента.

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

Для выполнения заданий необходимо:

1)изучить теоретическую часть (п.3) и нижеприведенные примеры (п. 7.1 и 7.2), воспользоваться указаниями (п. 7.3);

2)разработать алгоритмы для решения задач согласно выданному варианту, составить программы на языке Pascal, воспользовавшись приведенными примерами, протестировать и представить полученный результат преподавателю;

3)ответить на контрольные вопросы;

4)создать отчет по лабораторной работе в электронном виде.

101

7.1. Пример 1

Составить программу табулирования функции F x x cosx на отрезке a,b с шагом h.

Решение. Вычисление значения функции оформим в виде функции.

Program pr_3;

Var a,b,h,x : real; Function f(t : real) : real;

Begin f:=t*cos(t);

End;

Begin

Write('Введите начало и конец отрезка: '); Readln(a,b); Writeln('Введите шаг табуляции: '); Readln(h); Writeln('Аргумент Функция f(x)=x cos(x) ');

x:=a; Repeat

Writeln (x:6:3, f(x):20:3); x:=x+h;

Until x>b;

End.

7.2. Для реализации данного задания воспользоваться примером 2. Массив заполнить случайными действительными числами из интервала [-10;12).

Пример 2.

Составить программу, содержащую функцию нахождения максимального элемента двумерного массива.

Решение. В основной программе размерность массива n и m зададим именованными константами, определим тип – массив из n m элементов, массив этого типа и переменную для хранения максимального элемента:

Const n=5; m=8;

Type MyMass = array[l..n, 1..m] of Real; Var A : MyMass; Max : Real;

Функция в этом случае может иметь вид:

102

function Maximum (Var Nmax, Mmax : Byte; Var Mas : MyMass): Real;

var max_el : Real; i, j: Byte; begin

max_el := Mas[1, 1]; for i := 1 to Nmax do for j := 1 to Mmax do

if max_el < Mas[i, j] then max_el := Mas[i, j]; Maximum := max_el;

end;

Теперь для записи максимального элемента массива A в переменную Max можно использовать оператор:

Маx := Maximum (n, m, A);

Данная подпрограмма может работать только с массивами типа

MyMass.

7.3. Указание

При составлении программы для решения задачи оформить основную подпрограмму в виде функции, а подпрограммы ввода и вывода элементов массива – в виде отдельных процедур. Размерности массивов следует задать именованными константами. Воспользоваться примером 3. Все необходимые данные должны передаваться подпрограммам в качестве параметров; все величины, используемые только внутри подпрограмм, должны быть описаны как локальные. Использование глобальных переменных в подпрограммах не допускается! Вывод результатов работы подпрограмм должен выполняться в главной программе. Заполнение массивов следует производить с помощью генератора случайных чисел.

Пример 3. Даны два массива из N целых элементов из интервала 20, 30 . В каждом массиве найти максимальный элемент и затем сравнить их.

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

103

Program SravMas; {сравнение максимальных и минимальных элементов}

Const n=15;

Type massiv=Array[1..n] оf Integer; Var m1, m2 : massiv;

max1, max2 : Integer;

Procedure RandomMas(Var x:massiv); Var i:Integer;

Begin

For i:=1 To n Do x[i] := -20+Random(50);

End;

Procedure VivodMas(Var x:massiv); Var i:Integer;

Begin

For i:=1 To n Do write(x[i]:5);

End;

Procedure MaxMas(Var x:massiv; Var MX:Integer); Var i:integer;

Begin

MX:=x[1];

For i:=2 to n do

if x[i]>MX then MX:=x[i];

End;

Begin {основная программа}

Randomize;

RandomMas(m1); Writeln('Первый массив:'); VivodMas(m1); RandomMas(m2); Writeln('Второй массив:'); VivodMas(m2);

MaxMas(m1,max1); MaxMas(m2, max2); {вызов процедуры нахождения максимального элемента}

if max1>max2 then writeln('В 1-м массиве максимальный элемент больше и =',max1)

else if max1<max2 then writeln('Во 2-м массиве максимальныйй элемент больше и=',max2) else writeln('В обоих массивах максимальные равны ',max1);

104

End.

8. Требования к содержанию и оформлению отчета

Отчет о проделанной работе должен содержать: название и цель работы; номер и условие своего варианта;

описание основных этапов задания; тексты разработанных программ;

полученные при расчетах результаты (скриншоты); анализ полученных результатов и вывод по проделанной

работе; ответы на контрольные вопросы в соответствии с указаниями

преподавателя.

9. Критерии результативности лабораторного практикума

Лабораторная работа считается выполненной, если:

задание к лабораторной работе выполнено в полном объеме; студент представил тексты программ и результаты их

выполнения, соответствующие поставленным задачам;

при устном ответе на 2-3 контрольных вопроса по указанию преподавателя студент демонстрирует знание основных операторов и определений изученной темы и умение применить их при решении соответствующих задач;

представленный отчет по лабораторной работе соответствует требованиям п. 8.

Контрольные вопросы

1.Дайте определение подпрограммы.

2.Приведите пример описания процедуры.

3.Приведите пример описания функции.

4.Объясните отличие процедуры от функции.

5.Какие переменные называются локальными? Чем глобальные переменные отличаются от локальных? Можно ли локальной переменной дать имя, совпадающее с именем глобальной переменной?

6.Какую роль при работе с подпрограммой выполняют фактические параметры?

105

7.Сколько элементов может содержать список формальных параметров? Сколько элементов должен содержать список фактических параметров?

8.Можно ли в программе формальным параметрам давать имена, совпадающие с именами фактических параметров? Почему?

9.Могут ли фактические параметры быть выражениями? А именами других процедур, функций?

10.В чем отличие параметра-переменной и параметра-значения?

11.Может ли в качестве параметра при вызове подпрограммы, имеющей формальный параметр-значение, выступать: переменная, выражение, константа?

12.Существуют ли ограничения на тип возвращаемого функцией значения?

106

Лабораторная работа № 6

ФАЙЛЫ И ИХ ПРИМЕНЕНИЕ В PASCAL-ПРОГРАММАХ

1. Цель работы

Ознакомление с разновидностями файлов в Паскале. Принципы организации и порядок работы с типизированными файлами. Принципы организации и порядок работы с нетипизированными файлами. Организация текстовых файлов, операции чтения и записи текстовых файлов.

2. Задачи работы

Овладение основным навыкам организации и порядком работы с типизированными и нетипизированными файлами; получение навыков организации текстовых файлов, операции чтения и записи текстовых файлов.

3. Теоретическая часть

3.1. Основные понятия и определения

Файл – именованная область памяти на устройстве хранения информации.

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

Связывание файловой переменной – установка соответствия между файловой переменной и файлом на диске. Требуется для любых операций с файлом.

Указатель файла – маркер, показывающий, с какой позиции будет производиться чтение/запись в файле.

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

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

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

Блочная операция чтения/записи – операция чтения/записи, при выполнении которой считывается/записывается несколько элементов данных.

107

3.2. Теоретические сведения

Как правило, пользователь работает с компьютером не один раз. Зачастую информация, с которой работает пользователь, требуется многократно в течение длительного времени. Держать эту информацию постоянно в оперативной памяти нерационально. Для долговременного хранения информации ее требуется организовать.

Для долгосрочного хранения информации применяются файлы. Файл – это именованная область памяти на долгосрочном запоминающем устройстве, например, на жестком диске или дискете. Язык Паскаль предлагает несколько способов для работы с файлами.

В Паскале выделяют три типа файлов: текстовые, типизированные, нетипизированные.

Текстовый файл – содержит строки текста различной длины, чтение или запись осуществляется (как правило) построчно.

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

Нетипизированный файл – содержит любые данные, Паскалем никак не интерпретируемые. Позволяет производить за одну операцию чтение/запись сразу нескольких элементов.

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

компоненты файла

файл указатель файла

Рис. 1. Принцип организации указателя

Фактически указатель располагается между компонентами файла. В общем случае можно говорить о том, что указатель находится перед компонентой, которая будет считана или записана следующей операцией чтения/записи.

108

Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:

file of <тип> типизированный файл (указан тип компоненты);

text текстовый файл;

file нетипизированный файл. Примеры описания файловых переменных:

var

f1: file of integer; {файл с целыми числами}

f3: file;

{нетипизированный файл}

t: text;

{текстовый файл}

3.2.1. Стандартные процедуры и функции. Любые дисковые файлы становятся доступными программе после связывания их с файловой переменной, объявленной в программе. Все операции в программе производятся только с помощью связанной с ним файловой переменной.

Процедура Assign связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName. Установленная связь будет действовать до конца работы программы, или до тех пор, пока не будет сделано переназначение.

Assign(f, FileName);

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

Процедура ReSet(f) открывает для чтения файл, с которым связана файловая переменная f. После успешного выполнения процедуры ReSet файл готов к чтению из него первого элемента. Процедура завершается с сообщением об ошибке, если указанный файл не найден.

Процедура ReWrite(f) открывает для записи файл, с которым связана файловая переменная f. После успешного выполнения этой процедуры файл готов к записи в него первого элемента. Если указанный файл уже существовал, то все данные из него уничтожаются.

109