Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 27

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 27 страницаОсновы программирования (947332) страница 272013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 27)

Затем реализуют эти подпрограммы, используя заглуш­ки вместо подпрограмм следующего уровня и т.д.Задания для самопроверкиЗадание 1. Дана матрица B(n,m), п, m < 20, m > п. Разработайте программу, ко­торая приведет матрицу к квадратному виду В(п,п) путем последовательного вычер­кивания из каждой строки матрицы ее m-n неположительных элементов. Если тако­вых нет или их не хватает для выравнивания матрицы, то вычеркнуть из начала стро­ки столько элементов, сколько необходимо для завершения процесса. Вывести на пе­чать исходную и сформированную матрицы.Задание 2. Дана символьная матрица SIM(n,m), n,m£20). Разработайте програм­му, которая вводит значения элементов матрицы с клавиатуры и упорядочивает мат­рицу, разместив строки в алфавитном порядке в соответствии с символами первогостолбца.

Для каждой строки матрицы SIM определить, каких букв в ней больше:гласных или согласных. Вывести на печать исходную и отсортированную матрицы,а также информацию о соотношении букв в каждой строке.155Часть I. Основы алгоритмизации и процедурное программирование5.3. МодулиПри разработке больших программ целесообразно часть подпрограмм идругих ресурсов, таких, как переменные, константы, описания типов, соби­рать вместе и компилировать отдельно от основной программы в виде биб­лиотек ресурсов или модулей.Модуль - это автономно компилируемая коллекция программных ресур­сов, предназначенная для использования другими модулями и программами.Все ресурсы модуля делятся на две группы: внешние - предназначенныедля использования другими программными единицами, и внутренние - ра­бочие ресурсы данного модуля.Структура модуля выглядит следующим образом:Unit <имя модуля>;Interface<интерфейсная секция>Implementation<секция реализации>[Begin<секция инициализации>7End,Имя модуля долэюно совпадать с именем фагта, в котором он содержит­ся.

Результат компиляции модуля помещается в файл с тем же именем и рас­ширением .tpu.Примечание. Среда языка Borland Pascal предусматривает три режима компиляции про­граммы, использующей модули:• Compile - компилируется только основная программа, все модули должны быть пред­варительно откомпилированы в файлы <имя модуля>.1ри и размещены либо в текущем ката­логе, либо в одном из каталогов, указанных как источники файлов .tpu в настройках среды(Options/Directories);• Маке - модули, для которых не обнаружены файлы .tpu, компилируются из соответ­ствующих файлов .pas, которые должны находиться в текущем каталоге или в каталогах, ука­занных в настройках среды в качестве источников исходных файлов модулей;• Build - все ранее откомпилированные модули .tpu игнорируются и все модули ком­пилируются из своих исходных файлов заново.В процессе отладки модулей целесообразно использовать режим Build, а при отладкепрофаммы - режим Compile.Интерфейсная сещия содержит объявление ресурсов (в том числе заго­ловки подпрограмм), к которым возможны обращения извне.Секция реализации содержит описание подпрограмм, объявленных в ин­терфейсной секции, и описание внутренних ресурсов модуля (локальных пе1565.

Модульное программированиеременных, типов, подпрограмм). Обращение к этим ресурсам возможнотолько из подпрограмм, описанных в том же модуле.CeKifUH UHuifuanwaifuu содержит операторы, которые выполняют некото­рые действия, необходимые для нормальной работы процедур модуля (на­пример, открывают файлы, инициализируют некоторые переменные и т.п.).Операторы секции инициализации выполняются один раз (при подключениимодуля) до начала выполнения основной программы. Эта секция в модулеможет отсутствовать.Программа, которая использует ресурсы нескольких модулей, должна вобласти описаний содержать спецификацию используемых модулей:Uses <имя модуля!>, <имя модуля2>, ...;В спецификации uses необходимо указывать только те модули, ресурсыкоторых данная программная единица (программа или модуль) используетнепосредственно.

Если подключаемый модуль использует другие модули, тоих подключение уже описано в нем. Секции инициализации подсоединяе­мых модулей выполняются в порядке их подключения.Пример 5.4. Разработать модуль, содержащий подпрограмму суммиро­вания элементов массива.Разбиваем текст программы примера 5.2 на две части: подпрограммуразмещаем в модуле, а тестирующую программу оставляем в качестве основ­ной программы. Так как все структурные типы параметров должны бытьпредварительно объявлены, описываем тип массива в модуле.{Модуль должен размещаться в файле Summa.pas}Unit Summa;Interface{объявление внешних ресурсов}Туре mas=array[L.]OJ of integer;Function sunt(b:mas;n:integer).'integer;Implementation .Function sum; {описание функции}Vars: integer; i: integer;begin 8:^=0;for i:=J to n do s:^s+b[i];sum:=s;end;End.Программа использует из модуля два ресурса: описание типа mas дляобъявления массива А и функцию Sum.Program ex;Uses Summa; {указание используемого модуля}Var a:mas; {используем ресурс mas}i,n: integer;157Часть L Основы алгоритмизации и процедурное программированиеBeginreadln(n);for i:=l to n do re ad(a[i]);ReadLn;WriteLn('CyMMa= \sum(a,n));{используем ресурс sum}EndBee ресурсы, объявленные в интерфейсноЯ части модуля, доступны восновной программе.

В случаях перекрытия имен, когда основная програм­ма и подключенный модуль содержат ресурсы с одинаковыми именами, приобращении к ресурсам модуля используют составные имена<имя модуля>.<имя ресурса>.Например, в модуле описана переменная X:Unit А;InterfaceVarX:real; ...EndА в основной программе, которая использует этот модуль, объявлена собст­венная переменная X:Program ex;Uses А;Var X:integer;BeginX:=10;{переменная программы}A.X:=0.45; ...

{переменная модуля A}В виде модулей в Borland Pascal реализованы библиотеки подпрограмм,использование которых существенно упрощает разработку программ.Вместе с системой программирования на Borland Pascal поставляютсяследующие библиотеки.System ~ основная библиотека - содержит описания всех стандартныхпроцедур и функций, таких, как математические функции, функции преобра­зований, процедуры и функции обработки строк и т.п. Ресурсы данной биб­лиотеки доступны любой программе без специального указания.Crt - библиотека управления экраном в текстовом режиме - содержитописание переменных, констант и процедур и функций, обеспечивающих уп­равление экраном, клавиатурой и динамиком.Graph - библиотека управления экраном в графическом режиме - содер­жит описание переменных, констант и процедур и функций, обеспечиваю­щих управление экраном в графическом режиме.1585.

Модульное программированиеDos - библиотека организации взаимодействия с операционной систе­мой MS DOS - содержит описание процедур и функций, обеспечивающихобращение к функциям операционной системы.Поставляемые вместе с описанными модули ТигЬоЗ, Printer, Graph3,Overlay устарели и практически не используются.Примечание. Следует иметь в виду, что модули System, Crt, Dos, Printer объединены вфайл Turbo.tpl, а модуль Graph поставляется отдельно в виде файла Graph.tpu.При разработке собственных библиотек программисты стремятся созда­вать подпрограммы, имеющие широкую область применения, для чего ис­пользуют специальные средства объявления параметров: открытые массивыи строки, нетипизированные параметры и параметры процедурного типа.5.4.

Открытые массивы и строкиПо правилам Borland Pascal размерность любого массива, передаваемо­го в качестве параметра, должна быть определена. Следовательно, без ис­пользования специальных средств применимость процедур и функций, име­ющих параметры-массивы, существенно ограничивается. Чтобы снять огра­ничение размерности для параметров - одномерных массивов, можно ис­пользовать открытые массивы.Открытый массив - это конструкция описания типа массива без указа­ния типа индексов, например:array of real;array of integer;Такое определение возможно только при описании формальных пара­метров подпрограммы. Применяя открытые массивы, следует помнить, чтоиндексы параметров, описанных как открытые массивы, всегда начинаютсяс нуля.

Реальное количество элементов фактического параметра массиваможно определить двумя способами. Во-первых - передать через дополни­тельные параметры, во-вторых- использовать специальные функции.^У/^Л('<идентификатор массива>) - для обычного массив, возвращаетверхнюю границу индекса массива, для открытого - максимальное значениеиндекса./,(?н'('<идентификатор массива>) - для обычного массива возвращаетнижнюю границу индекса массива, для открытого - ноль.Проиллюстрируем оба способа.Пример 5.5.

Вернемся к примеру 5.4. Пусть по-прежнему т ебуется раз­работать модуль, содержащий подпрограмму суммирования элементов мас­сива, но при условии отсутствия ограничения размерности массива.159Часть I. Основы алгоритмизации и процедурное программированиеВ решении, предложенном в примере 5.4, размерность массива ограни­чена: функция может работать только с массивами типа mas. Описание пара­метра как открытого массива позволит разработать функцию, которую мож­но использовать для любого массива целых чисел. Реальное количество эле­ментов массива в этом случае следует передавать через дополнительный па­раметр п.Unit Summa2;InterfaceFunction sum(b:array of integer; n: integer): integer;Implementation function sum;Var s: integer; i: integer;begin s:=0;{при вычислении суммы учитываем,что индексы изменяются от О до п-1,всего п элементов}for i:=0 to П'1 do s:=s+bfij;sum:=s;end;End.Теперь основная программа уже может описывать массив любой размер­ности и использовать из модуля только функцию определения суммы.Program ex;Uses Summa2;Var a:array[l..

10] of integer;i,n: integer;Begin ReadLn (n);for i:=I to n do Re ad(a[i]);ReadLn;WriteLnCCyMMa=\sum(a,n));End.Пример 5.6. Разработать программу суммирования элементов матрицыпо строкам, считая, что матрица заполнена целиком.Функцию суммирования элементов строки матрицы поместим в модуль.Поскольку она суммирует все элементы строки, для получения верхнего зна­чения индекса будем использовать функцию High.Unit ЗиттаЗ;InterfaceFunction sum(b:array of integer): integer;1605. Модульное программированиеImplementationFunction sum;Var s: integer; i: integer;begin s:=0;for i:=0 to High(b) do s:-=s+b[i];sum:=s;end;End.Тестирующая программа для работы с индексами также может исполь­зовать функции Low и High, которые вернут соответственно -5 и -3.Program ex;Uses SummaS;Const a:array['5..'3,3,.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

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