Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 7.++Массивы в качестве параметров подпрограмм. Файлы.

Лекция 7.++Массивы в качестве параметров подпрограмм. Файлы. (Воробьева И.А. - Информатика. Язык Паскаль)

PDF-файл Лекция+7.++Массивы+в+качестве+параметров+подпрограмм.+Файлы. (Воробьева И.А. - Информатика. Язык Паскаль) Информатика (112491): Книга - 2 семестрЛекция+7.++Массивы+в+качестве+параметров+подпрограмм.+Файлы. (Воробьева И.А. - Информатика. Язык Паскаль) - PDF (112491) - СтудИзба2021-10-04СтудИзба

Описание файла

Файл "Лекция+7.++Массивы+в+качестве+параметров+подпрограмм.+Файлы." внутри архива находится в папке "Воробьева И.А. - Информатика. Язык Паскаль". PDF-файл из архива "Воробьева И.А. - Информатика. Язык Паскаль", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

1Воробьева И.А. «Информатика. Язык Паскаль»6.4. Массивы в качестве параметров подпрограммВажно! Параметром процедуры может быть любая переменнаяпредопределенного типа, это означает, что для передачи в процедурустатического массива или матрицы в качестве параметра, тип егодолжен быть описан заранее.Действительно, тип integer или real – это простыепредопределенныетипы.Массивыжеотносятсякструктурированным типам переменных, к которым также относятсязаписи,множества,файлы.Общийметодполученияструктурированных переменных – это объединение компонентов,принадлежащих к произвольным (возможно тоже составным)типам, в один составной тип.Статический массив может содержать как простые однотипныеэлементы, такие как integer, real, char…, так и сложные – массивзаписей или массив массивов (один из видов представления матрицы).Никто не запретит нам объявить и массив из матриц, а это ужетрехмерный массив.

Более того, число компонент в массивах мыопределяем с помощью типа диапазон произвольным способом,например: «array[1..n, 1..m] of real» или «array[1..5] of integer».Подобные определения никак не относятся к предопределеннымтипам, они называются пользовательскими типами, которые мы задаемсами.Таким образом, прежде чем использовать статические массивы вкачестве параметров подпрограмм, необходимо описать нужные типыв специальном разделе type программы.Примеры различных описанийconstn=10; m=7;type// ---------- раздел описаний пользовательских типов -----12Воробьева И.А.

«Информатика. Язык Паскаль»massR = array[1..n] of real;// тип – одномерный массивиз n вещественных чиселmassI = array[1..5] of integer; // тип – одномерный массивиз 5 целых чиселmatrixR= array[1..n, 1..m] of real; // тип – матрица вещественныхчисел размерности (n, m)QmatrixI= array[1..3, 1..3] of integer; // тип – квадратная матрицавещественных чисел размерности (3, 3)Замечание 6.1.

Матрицу можно задать и другим способом. Например,если считать ее не двумерным массивом однотипных элементов, аодномерным массивом, каждый элемент, которого сам являетсяодномерным массивом.Пример объявления матрицы в форме «массива массивов»VECTOR = array[1..m] of real; // тип – вектор из m вещ. чиселDUB= array[1..n] of VECTOR; // массив из n одномерных массивовтипа VECTORилиn строк длины m (матрица [n, m])илиn столбцов длины m (матрица [m, n])VAR//---------------- объявление переменных ---------------Vec: VECTOR;// вектор из m вещ. чиселM: DUB;// массив из n одномерных массивов типа VECTORrez: real;grad: matrixR; // матрица вещественных чисел размерности (n, m)Number: massI;// одномерный массив из 5 целых чиселR1, R2: massR; // одномерные массивы R1 и R2 из n вещ. чиселKol: QmatrixI ;// объявлена матрица размерности (3, 3)//---------------- раздел процедур и функций ----------------------23Воробьева И.А. «Информатика.

Язык Паскаль»procedure primer1 (out A: massR);procedure primer2 (var B: massI, var Sum: QmatrixI);function primer3 (const C1, C2: matrixR): integer;procedure primer4 (var M1: DUB);BEGIN//------------- раздел операторов ----------…primer1 (grad);primer2 (Number, Kol);rez:= M[1][2]; // присвоили вещественное числоVec:=M[2];// присвоили вещественный вектор длины m…END.Последнее, что важно напомнить о работе с массивами и матрицами вподпрограммах – это то, что параметры в подпрограммы могут бытьпереданы двумя основными способами: по значению (параметр-значение);procedure primer5 (A: massR, i, j: integer, x: real); по адресу переменной (параметр-переменная и параметрконстанта).procedure primer4 (var M1: DUB);function primer3 (const C1, C2: matrixR): integer;procedure primer1 (out A: massR);Если массив достаточно большого размера, он должен передаваться вподпрограмму только как параметр-переменная или параметрконстанта: если массив в ходе выполнения подпрограммы не изменяется, егонужно описать как параметр-константу; если изменяется – как параметр-переменную.Входные параметры-массивы не описывают как параметры-значения,поскольку это приводит к неоправданному расходу памяти и временина бесполезное копирование.34Воробьева И.А.

«Информатика. Язык Паскаль»Напоминание. Параметр-константа – это не совсем то, что вы привыкливидеть в разделе программы Const. Параметр-константа – этопараметр, который передают в подпрограмму, точно зная, что ондолжен использоваться только как информация, но не долженизменяться.

Своего рода, защита от случайного изменения тойпеременной, которая не должна изменяться подпрограммой, т.е.параметр-константа в физическом представлении может бытьизменяемой переменной.В функции, которая решает задачу «поиск максимума в матрице»,элементы матрицы, передаваемой в функцию, должны быть защищеныот случайного изменения (т.е.

параметр-константа). А в процедуре,которая решает задачу «заменить все отрицательные элементыматрицы нулями», передаваемую матрицу можно и даже нужноменять, т.е. передавать ее надо как параметр-переменную.Подумайте: почему для решения первой задачи была выбранафункция, а для решения второй – процедура?6.5. Примеры программ с массивами в качестве параметровподпрограммТаблица 6.6. Задачи на разработкупрограммы с использованием указанной в задании подпрограммыОбщая задачаСоставить программу с разработкой и использованием указанной взадании подпрограммы.Подпрограмма не должна использовать «внутри себя»глобальных переменных. Все необходимое для работыподпрограммы и передачи результата должно осуществлятьсячерез параметры подпрограммы.Индивидуальная задачаДля каждой из двух матриц: A (2 строки, 4 столбца) и B (3 строки, 3столбца) вычислить и вывести количество отрицательныхэлементов.

Также определить, в какой из них среднееарифметическое значение прочих элементов имеет большуювеличину (вывести одно из сообщений: “больше в A”, “больше в B”45Воробьева И.А. «Информатика. Язык Паскаль»или “одинаково”).ПодзадачаДля вычисления количества отрицательных элементов исреднего арифметического значения прочих элементов матрицыиспользовать подпрограмму.началоввод A(na,ma), B(nb,mb)вывод A(na,ma), B(nb,mb)na, ma, AПОДСЧЕТ ОТРИЦ. ЭЛ. ИСР. АРИФМ.

НЕОТРИЦ.ЭЛЕМЕНТОВ в «A»Otr, SredAвывод Otrnb, mb, ВПОДСЧЕТ ОТРИЦ. ЭЛ. ИСР. АРИФМ. НЕОТРИЦ.ЭЛЕМЕНТОВ в «В»Otr, SredBвывод Otr+SredA < 0ANDSredB < 0−+SredA > SredB+−SredA < SredB−«БОЛЬШЕ в A»«Not SredA, SredB»«БОЛЬШЕ в В»конец«ПОРОВНУ»56Воробьева И.А. «Информатика. Язык Паскаль»Головной модульprogram SRAVN;{--------------определения, необходимые для подпрограммы----------------}constn= 3; // максимум 3 строкиm= 4; // максимум 4 столбцаtypeMatrix = array[1..n, 1..m] of integer;{---------------------сюда позже вставим БЛОК *, а пока только -------------------------------------------заголовок функции с заглушкой-----------------------------}//_________ описание функции//_________ Mt – матрица//_________ n1, m1 – ее размерность//_________ Sred - среднее арифметическое элементов «≥0»//_________ возвращает: Otr - число отрицательных элементовFunction Otr (const Mt: Matrix; n1, m1: byte; out Sred: real): integer;BeginSred:= -1;// заглушка «все элементы отрицательны»Otr:=n1*m1; // значит Sred= -1 – нет неотрицательных элементовEnd;{---------- теперь доопределяем переменные, которые нам нужны в ----------------------------------головном модуле----------}CONSTna=2; ma=4; // реальные размеры матрицы Аnb=3; mb=3; // реальные размеры матрицы BVARA: Matrix=( // объявлена матрица размерности (3, 4),(0, 1, 10, -2),// 1-я строка(10, -10, 0, -7),// 2-я строка(0, 0, 0, 0)// 3-я строка; // НО наша матрица A(2,4) (добавлены нули в фиктивные элементы)67Воробьева И.А.

«Информатика. Язык Паскаль»B: Matrix=(// объявлена матрица размерности (3, 4)(7, -1, 10, 0),// 1-я строка(10, -10, 0, 0),// 2-я строка(0, 0, 0, 0)// 3-я строка; // НО наша матрица B(3,3) (добавлены нули в фиктивные элементы)SredA, SredB: real; // Ср. арифм. неотрицат. элементов в A и BBEGINwriteln('--------Поиск в матрицах А и В ---------'); // заголовок//--------- вывод матриц А(na,ma) и B(nb,mb)// -------- самостоятельно ---------------//--------- вызов решающей подзадачи для Аwriteln('Число отрицательных в А = ', Otr(A, na, ma, SredA):3 );//--------- вызов решающей подзадачи для Bwriteln('Число отрицательных в B = ', Otr(B, nb, mb, SredB):3 );IF (SredA < 0) AND (SredB < 0) then writeln( 'В матрицах A и В всеэлементы отрицательны')ELSEif SredA > SredB then writeln( 'Больше в A')else if SredA < SredB then writeln( 'Больше в B')else writeln( 'Поровну') ;END.Определим все обобщенные данные, которые нам потребуютсядля подзадачи, на основе реальных данных исходной задачи:n1 – максимальное число строк в матрице,m1 – максимальное число столбцов в матрице,;;78Воробьева И.А.

«Информатика. Язык Паскаль»i – индекс строк,Mt–;прямоугольнаяj – индекс столбцов,(n1,m1)матрицаэлементов, причем значения элементов:изцелочисленных;Otr – число отрицательных элементов в матрице,Sred – среднее арифметическое неотрицательных (в матрице,ситуации;;) элементов, и введем признак альтернативной– отсутствие неотрицательных элементов вматрице;Цветом выделены переменные, которые для функции будутвходными и выходными и, следовательно, будут ее параметрами иливозвращаемыми значениями.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее