Главная » Правописание слов » Как пишется модуль в программировании

Слово Как пишется модуль в программировании - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

Урок 11 — Пользовательские модули

Модули создаются, как правило, для обеспечения компактности кода, о чем приходиться заботиться крупным проектам. Стоит также отметить, что использование модулей в каком-то смысле снимает ограничение на сегментацию памяти, так как код каждого модуля располагается в отдельном сегменте.

Структура модуля выглядит так:

Далее мы поочередно рассмотрим каждый из данных разделов.

Имя модуля ( Unit )

Для объявления данного модуля, в программе нужно указать его имя:

После чего станет возможным использование всех описанных в интерфейсной части объектов.

Исполняемая часть ( Implementation )

Начинается этот раздел со слова Implementation (реализация). Именно здесь нужно описать подпрограммы, объявленные в интерфейсной части. При этом в их заголовках разрешается не указывать формальные параметры, иначе они должны полностью совпадать с таковыми в интерфейсной части. Кроме этого, интерфейсная часть может содержать локальные (недоступные вызывающей программе) для модуля объекты.
Инициирующая часть

Компиляция модулей

Использовать в программе можно лишь скомпилированные модули, имеющие расширение, предусмотренное вашей средой разработки приложений. Рассмотрим три наиболее популярные из них:

компиляция модулей в Turbo Pascal

Итогом компиляции модуля в Turbo Pascal, будет файл с расширением .tpu (Turbo Pascal Unit), хранящий его код.

компиляция модулей в Free Pascal

После компиляции модуля в среде Free Pascal, создаются два файла с разными разрешениями: .ppu и .o. Первый содержит интерфейсную часть модуля, а второй (необходим для компоновки программы) – часть реализаций.

компиляция модулей в Pascal ABC.NET

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

После компиляции файлов данное приложение должно исправно работать. Конечно, если вы, отвечая на вопрос “Этот массив упорядочен?” укажите программе ложную информацию, то и она может ответить тем же.

Источник

Как пишется модуль в программировании

Содержание раздела PASCAL

Стандартный Паскаль не предусматривает никаких механизмов раздельной компиляции частей программы с последующей их сборкой перед выполнением. Более того, последовательное проведение в жизнь принципа обязательного описания любого объекта перед его ис пользованием делает фактически невозможным разработку разнообразных библиотек прикладных программ. Точнее, такие библиотеки в рамках стандартного Паскаля могут существовать только в виде исходных текстов и программист должен сам включать в программу подчас весьма обширные тексты различных поддерживающих процедур, таких, как, например, процедуры матричной алгебры, численного интегрирования, математической статистики и т.п.

Вполне понятно, поэтому стремление разработчиков коммерческих компиляторов Паскаля включать в язык средства, повышающие его модульность. Чаще всего таким средством является разрешение использовать внешние процедуры и функции, тела которых заменяются зарезервированным словом External.

Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важной особенностью модулей является то обстоятельство, что компилятор Турбо-Паскаля размещает их про граммный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 Кбайт, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создавать весьма крупные программы.

Модуль имеет следующую структуру:
Unit ;
Interface

Implementation

[ Begin ]
End.

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

2. Заголовок модуля и связь модулей друг с другом

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

Если предложение Uses. используется, оно должно открывать раздел описаний основной программы или следовать сразу за кодовым словом Interface в модуле.

Интерфейсная часть открывается кодовым словом Interface. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям.

При объявлении глобальных блоков в интерфейсной части пишется только их заголовок, например:
Unit Cmplx;
Interface
Type
Complex = Record
Re: Real;
Im: Real;
End;

Procedure AddC (X, У: Complex; Var R: Complex);
Procedure MulC (X, У: Complex; Var Z : Complex);

Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля, равно как и глобальные объекты основной программы, помещаются компилятором Турбо-Паскаля в обилии сегмент данных (максимальная длина сегмента 65521 байт).

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

Если в интерфейсной части объявляются внешние блоки или блоки в машинных кодах, их тела (т.е. зарезервированное слово External в первом случае и машинные коды вместе со словом Inline во втором) должны следовать сразу за их заголовками.

В интерфейсной части модулей нельзя использовать опережающее описание.

Исполняемая часть начинается кодовым словом Implementation и содержит тела процедур и функций, объявленных в интерфейсной части. В этой части могут также объявляться локальные для модуля объекты: вспомогательные типы, константы, переменные и блоки, а также метки, если они используются в инициирующей части. Ранее объявленные в интерфейсной части глобальные процедуры и функции должны описываться в той же последовательности, в какой появляются их заголовки в интерфейсной части. Описанию глобального блока в исполняемой части должен предшествовать заголовок, в котором разрешается опускать список формальных переменных (и тип результата для функции), так как они уже описаны в интерфейсной части.

Но если заголовок блока приводится в полном виде, т.е. со списком формальных параметров и объявлением результата, он должен совпадать с заголовком, объявленным в интерфейсной части, например:

Unit Cmplx;
Interface
Type
Complex = Record
Re: Real;
Im: Real;
End;
Procedure AddC (X, У: Complex; Var Z : Complex);

Procedure AddC;
Begin
Z.Re:= Х.Rе + Y.Re;
Z.Im:= X.Im + Y.Im;
End;

Локальные переменные и константы, а также все программные коды, порожденные при компиляции модуля, помещаются в общий сегмент памяти.

Unit FileText;
Interface

Procedure Print(S: String);

Implementation
Var
F: Text;
Const Name = ‘output.txt’;

Более того, если изменения внесены в интерфейсную часгь модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему. Режим Make, таким образом, существенно облегчает процесс разработки крупных программ с множеством модулей: программист избавляется от необходимости следить за соответствием существующих TPU-файлов и их исходного текста, так как система делает это автоматически.

В режиме Build существующие TPU-файлы игнорируются, и система пытается отыскать (и компилировать) соответствующий PAS-файл для каждого объявленного в Uses модуля. После компиляции в режиме Build программист может быть уверен в том, что учтены все сделанные им изменения в любом из модулей.

Подключение модулей к основной программе и их возможная компиляция осуществляется в порядке их объявления в предложении Uses. При переходе к очередному модулю система предварительно отыскивает все модули, на которые он ссылается. Ссылки модулей друг на друга могут образовывать древовидную структуру любой сложности, однако запрещается явное или косвенное обращение модуля к самому себе.

7. Доступ к объявленным в модуле объектам

Пусть, например, создан модуль, реализующий арифметику комплексных чисел (напомню, что такая арифметика ни в стандартном Паскале, ни в Турбо-Паскале не предусмотрена). К сожалению, в Турбо-Паскале нельзя использовать функции, значения которых имели бы структурированный тип (запись, например), поэтому арифметика комплексных чисел реализуется четырьмя приведенными ниже процедурами.

Unit Cmplx;
Interface
Type
Complex = Record
Re: Real;
Im: Real;
End;
Procedure AddC (X, У: Complex; Var Z ; Complex);
Procedure SubC (X, У: Complex; Var Z: Complex);
Procedure MulC (X, Y.: Complex; Var Z: Complex);
Procedure DivC (X, У: Complex; Var Z: Complex);

Implementation
Procedure Addc;
Begin
Z.Re:= X.Re + Y.Re;
Z.Im:= X.Im + Y.Im;
End ;

Текст этого модуля нужно поместить в файл CMPLX.PAS. Теперь можно написать программу, приведенную в примере:

Program TestOfComplex;
Uses Cmplx;
Var
A, B, С: Complex;
Begin
A.Re:= 1;
A.Im:= 1;
B.Re:= 1;
B.Im:= 2;
AddC (A, B, C);
WriteLn (‘Сложение: ‘, C.Re:5:1, C.Im:5:1,’i’);
SubC (A, B, C);
WriteLn (‘Вычитание: ‘, C.Re:5:1, C.Im:5:1,’i’);
MulC (A, B, C);
WriteLn (‘Умножение: ‘, C.Re:5:1, C.Im:5:1,’i’);
DivC (A, B, C);
WriteLn (‘Деление: ‘, C.Re:5:1, C.Im:5:1,’i’);
End.

Как видим, программе стали доступны все объекты, объявленные в интерфейсной части. При необходимости мы можем переопределить любой из этих объектов, как это произошло, например, с объявленной в модуле типизированной константой С. Переопределение объекта означает, что вновь объявленный объект «закрывает» ранее определенный в блоке одноименный объект. При необходимости мы можем получить доступ к «закрытому» объекту. Для этого нужно перед именем объекта поставить имя модуля и точку. Так, оператор
WriteLn(Cmplx.C.Re:5:1, Cmplx.C.Im:5:1,’i’);
выведет на экран содержимое «закрытой» типизированной константы из примера.

8. Стандартные модули

Модули Graph, Turbo3 и Graph3 содержатся в одноименных TPU-файлах, остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль System подключается к любой Турбо-Паскалевой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за кодовым словом Uses.

Ниже приводится краткая характеристика стандартных модулей.

В модуль System входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции Турбо-Паскаля, которые не вошли в другие стандартные модули (например, Inc, Dec, Getdir и т.п.). Как уже говорилось, модуль System подключается к любой Турбо-Паскалевой программе независимо от, того, объявлен ли он в предложении Uses или нет.

Модуль Printer упрощает вывод текстов на матричный принтер. В нем определяется файловая переменная Lst типа Text, которая связывается с логическим устройством Prn. После подключения модуля может быть выполнена, например, такая программа:
USES
Printer;
Begin
WriteLn (Lst, ‘TEST’); <Выводит строку на принтер>
End.

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

Модуль Graph содержит обширный набор типов, констант, процедур и функций для управления графическим режимом работы экрана. С помощью блоков, входящих в модуль Graph, можно создавать самые разнообразные графические изображения и выводить на экран текстовые надписи стандартными или разработанными программистом шрифтами. Программы модуля Graph после соответствующей настройки могут поддержать любой тип аппаратных графических средств (CGA, EGA, VGA). Настройка на имеющиеся в распоряжении программиста технические средства графики осуществляется специальными программами-драйверами, которые не входят в библиотечный файл TURBO.TPL, но поставляются вместе с ним.

В модуле Dos собраны процедуры и функции, открывающие доступ Турбо-Паскалевым программам ко всем средствам дисковой операционной системы PC DOS (MS DOS).

Блоки модуля Overlay понадобятся при разработке громоздких программ с перекрытиями (позволяет хранить в памяти только нужные части программы, а не требующиеся на данный момент удалять из памяти, сохраняя на диск, либо возвращать в память при необходимости). Как уже говорилось, Турбо-Паскаль обеспечивает создание программ, длина которых ограничивается лишь доступной памятью. Для большинства отечественных IBM-совместимых ПЭВМ доступная программе память составляет около 550 Кбайт (без инстру ментальных оболочек типа Norton Commander и без самой системы Турбо-Паскаль). Память такого размера достаточна для большинства прикладных задач, тем не менее, использование программ с перекрытиями снимает и это ограничение.

Два библиотечных модуля Turbo3 и Graph3 введены для совместимости с ранней версией 3.0 системы Турбо-Паскаль.

Источник

Pascal | Лекция №12

Внешние подпрограммы и модули

Содержание:

Стандартный Паскаль (в отличие от др. языков программирования высокого уровня) не располагает средствами разработки и поддержки библиотек программиста, которые компилируются отдельно и в дальнейшем могут быть использованы не только самим разработчиком. Трудности, связанные с огромными объемами программ, их сложностью и потребностью в коллективной работе, в Турбо Паскале преодолеваются двумя способами:

Организация внешних подпрограмм

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

Пример: дано натуральное число n. Найти сумму первой и последней цифр этого числа.

Для решения используем функцию, вычисляющую количество цифр в записи натурального числа. Сохраним текст этой функции в файле digits.inc:

Опишем еще одну функцию: возведение натурального числа в натуральную степень (a n ). Сохраним ее в файле power.inc:

Основная программа, решающая поставленную задачу и использующая описанные выше функции, будет иметь вид:

<$I >– это директива компилятора (псевдокомментарий), позволяющая в данное место текста программы вставить содержимое файла с указанным именем.

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

Создание и использование модулей

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

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

Модуль состоит из следующих частей:

Все разделы модуля, за исключением секции инициализации, являются обяза­тельными. Обязательна также указанная последовательность разделов.

Общая схема структуры модуля выглядит следующим образом:

Заголовок модуля состоит из зарезервированного слова Unit и идентифика­тора. Идентификатор модуля должен быть уникальным. Пример заголовка: Unit MyModule;

Модуль должен быть помещен в файл, имя которого совпадает с именем моду­ля, а его расширение должно быть .PAS.

Через интерфейс осуществляется взаимодействие основной программы с моду­лем (модуля с модулем). В интерфейсе указываются константы, типы, перемен­ные, процедуры и функции, которые могут быть использованы основной программой (модулем) при вызове этого модуля.

Интерфейсная часть начинается словом Interface. Далее после слова Uses указываются имена модулей, которые используются данным модулем (необязательная часть). После этого могут быть: раздел объявления констант, раздел объявления типов, раздел объявления переменных, раздел объявления процедур и функций. В разделе объявления процедур и функций указываются лишь заголовки подпрограмм. Сами подпрограммы приводятся в исполнительной части.

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

Исполнительная часть (раздел реализации) включает все подпрограммы модуля. Она может также включать локальные метки, константы, типы и переменные.

Исполнительная часть начинается словом Implementation. Затем после слова Uses указываются имена модулей, которые используются подпрограммами дан­ной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут быть: раздел объявления меток, раздел объявления локальных констант, раздел объявления локальных типов, раздел объявления ло­кальных переменных. Затем идут описания подпрограмм модуля.

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

В некоторых случаях перед обращением к модулю следует провести его ини­циализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Необходимые действия можно вьшолнить в разделе инициализации модуля. Этот раздел начина­ется словом Begin, после которого идут исполняемые операторы, а затем поме­щается слово End. (с точкой), например:

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

Если инициализация модуля не нужна, то в секции помещается лишь слово End. (с точкой).

Пример разработки и использования модуля приведен на стр.147-151 учебника И.Г. Семакин, А.П. Шестаков «Основы программирования».

При разработке модуля рекомендуется такая последовательность действий:

Разработанный модуль сохраняется в файле с расширением .pas. Для компиляции можно воспользоваться внешним компилятором, поставляемым вместе с Турбо Паскалем. Команда будет выглядеть так: TPC имя_файла.pas. Если в тексте нет синтаксических ошибок, получим файл с расширением .tpu, иначе будет выведено сообщение с указанием строки, содержащей ошибку.

Другой вариант компиляции: в меню системы программирования Турбо Паскаль выбрать Compile/Destination Disk, затем — Compile/Build.

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

Стандартные модули

В Турбо Паскале в настоящее время имеется большое количество стандартных подпрограмм, объединенных в несколько стандартных модулей. Они позволяют упростить процедуру написания программ, более полно использовать возможности компьютера, возможности операционной системы. В Турбо Паскале имеются следующие стандартные модули: SYSTEM, STRINGS, CRT, GRAPH, DOS, WINDOS, OVERLAY, PRINTER, TURBO3, GRAPH3. Из них только модуль SYSTEM подключается автоматически к любой программе.

Краткая характеристика модулей:

При использовании ресурсов модуля программисту совсем не обязательно иметь представление о том, как работают вызываемые подпрограммы. Достаточно знать назначение подпрограмм и их спецификации (т.е. имена и параметры). По такому принципу осуществляется работа со всеми стандартными модулями.

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

Источник

Pascal. Модуль (UNIT)

Модуль (unit) представляет собой набор констант, типов данных, переменных, процедур и функций. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском Вашей программы и осуществляет необходимую инициализацию. Короче говоря, модуль представляет собой библиотеку описаний, которую можно вставить в свою программу и которая позволит разбить программу на части, компилируемые отдельно.

Турбо-Паскаль обеспечивает Вам доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Некоторые из них специфичны для Турбо-Паскаля; другие специфичны для персонального компьютера РС фирмы IBM (и совместимых с ним компьютеров) или для операционной системы MS-DOS. Их количество велико, однако, в своей программе Вы редко используете их все сразу. Поэтому они разделены на связанные группы, называемые модулями. В этом случае Вы можете использовать только те модули, которые необходимы в программе.

Структура модуля

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

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

Модуль может использовать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface. Отметим, что здесь выполняется общее правило использования предложения uses: если модуль, имя которого указано в предложении uses, использует другие модули, то имена этих модулей также должны быть указаны в предложении uses, причем до того, как они будут использованы.

Стандартные модули

Файл TURBO.TPL содержит все стандартные пакеты, кроме Graph и пакетов совместимости (Graph3 и Turbo3): System, Overlay, Crt, Dos и Printer. Эти пакеты загружаются в память вместе с Турбо-Паскалем и всегда вам доступны. Обычно файл TURBO.TPL хранят в одном каталоге с TURBO.EXE (или TPC.EXE). Вы можете хранить его и в другом каталоге, если он описан как каталог Турбо-Паскаля. Для этого необходимо с помощью TINST.EXE установить этот каталог в файле TURBO.EXE.

Используемые пакеты: нет

System содержит все стандартные и встроенные процедуры и функции Турбо-Паскаля. Любая подпрограмма Турбо-Паскаля, не являющаяся частью стандартного Паскаля и не находящаяся ни в каком другом модуле, содержится в System. Этот модуль присоединяется ко всем программам.

Используемые пакеты: нет

DOS определяет многочисленные паскалевские процедуры и функции, которые эквивалентны наиболее часто используемым вызовам DOS, как например, GetТime, SetТime, DiskSize и так далее. Кроме того, он определяет две программы низкого уровня МsDos и Intr, которые позволяют активизировать любой вызов MS-DOS или системное прерывание. Registers представляет собой тип данных для параметра в МsDos и Intr. Кроме того, определяются некоторые другие константы и типы данных.

Используемые пакеты: нет

Используемые пакеты: нет

Crt обеспечивает набор специфичных для РС описаний констант, переменных и программ для операций ввода/вывода. Последние можно использовать для работы с экраном (задание окон, непосредственное управление курсором, цвет текста и фона). Кроме того, Вы можете осуществлять «необработанный» ввод с клавиатуры и управлять платой генерации звукового сигнала персонального компьютера. Этот модуль обеспечивает множество подпрограмм, которые были стандартными в версии 3.0.

Используемые пакеты: Crt

В модуле Printer дано описание переменной текстового файла Lst, которая связывается с драйвером устройства, позволяющим направлять стандартный для Паскаля вывод на печатающее устройство с помощью Write и Writeln. Например, включив Printer в свою программу, Вы можете сделать следующее:

Используемые пакеты: Crt

Используемые пакеты: Crt

Этот модуль содержит две переменные и несколько процедур, которые больше не поддерживаются Турбо-Паскалем. Они включают встроенную файловую переменную Кbd, булеву переменную CBreak и первоначальные целочисленные версии MemAvail и MaxAvail (которые возвращают размер свободной памяти в параграфах, а не в байтах, как это делают настоящие версии).

Используемые пакеты: Crt

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

Этот модуль реализует независимый от устройства графический драйвер фирмы «Борланд», позволяющий поддерживать графические адаптеры типа СGА, ЕGА, Hercules, АТТ 400, МСGА, 3270 РС и VGА.

Написание собственных модулей

Допустим, Вы написали модуль IntLib, записали его в файл INTLIВ.PAS и оттранслировали на диск; получившийся в результате код находится в файле INTLIВ.ТРU. Для использования этого модуля в программе необходимо включить в нее оператор uses, указывающий компилятору, какой модуль используется. Ваша программа может выглядеть следующим образом:

Отметим, что Турбо-Паскаль предполагает, что файл, в котором находится модуль, имеет такое же имя, что и сам модуль. Если имя Вашего модуля МyUtilities, то Турбо-Паскаль будет искать файл с именем МYUTILIТ.PAS.

В любом случае имеет смысл переслать файлы с расширением *.ТРU (вместе с исходными файлами) в каталог модулей, который определен с помощью команды О/D/Unit directories (Каталоги модулей). В одном исходном файле может находиться только один модуль, поскольку компиляция прекращается, как только обнаружен завершающий оператор end.

Введем эту подпрограмму, запишем ее в файл INTLIВ.PAS, а затем оттранслируем на диск. В результате получим код модуля в файле INTLIВ.ТРU. Перешлем его в каталог модулей. Следующая программа использует модуль IntLib:

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

Источник

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

Какие вы еще знаете однокоренные слова к слову Как пишется модуль в программировании:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *