Главная » Просмотр файлов » Сравнение языков программирования (esyr)

Сравнение языков программирования (esyr) (1161143), страница 7

Файл №1161143 Сравнение языков программирования (esyr) (Сравнение языков программирования) 7 страницаСравнение языков программирования (esyr) (1161143) страница 72019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Эти процедуры служат командами.MODULE Trees; (* экспорт: Tree, Node, Insert, Search, Write, Init *)IMPORT Texts, Oberon; (* экспорт только для чтения: Node.name *)TYPETree* = POINTER TO Node;Node* = RECORDname-: POINTER TO ARRAY OF CHAR;left, right: TreeEND;VAR w: Texts.Writer;PROCEDURE (t: Tree) Insert*VAR p, father: Tree;BEGIN p := t;REPEAT father := p;IF name = p.name^IF name < p.name^UNTIL p = NIL;NEW(p); p.left := NIL;IF name < father.name^END Insert;(name: ARRAY OF CHAR);THEN RETURN END;THEN p := p.left ELSE p := p.right ENDp.right := NIL; NEW(p.name, LEN(name)+1); COPY(name, p.name^);THEN father.left := p ELSE father.right := p ENDPROCEDURE (t: Tree) Search* (name: ARRAY OF CHAR): Tree;VAR p: Tree;BEGIN p := t;WHILE (p # NIL) & (name # p.name^) DOIF name < p.name^ THEN p := p.left ELSE p := p.right ENDEND;RETURN pEND Search;PROCEDURE (t: Tree) Write*;BEGINIF t.left # NIL THEN t.left.Write END;Texts.WriteString(w, t.name^); Texts.WriteLn(w); Texts.Append(Oberon.Log, w.buf);IF t.right # NIL THEN t.right.Write ENDEND Write;PROCEDURE Init* (t: Tree);BEGIN NEW(t.name, 1); t.name[0] := 0X; t.left := NIL; t.right := NILEND Init;BEGIN Texts.OpenWriter(w)END Trees.Загруженный модуль может вызывать команду незагруженного модуля, задавая ее имя как строку.

Специфицированный модуль при этом динамическизагружается и выполняется заданная команда. Динамическая загрузка позволяет пользователю запустить программу как небольшой набор базисных модулей ирасширять ее, добавляя последующ ие модули во время выполнения по мере необходимости. Интерфейс модуля (объявления экспортируемых объектов)извлекается из модуля так называемым смотрителем, который является отдельным инструментом среды Оберон.Modula-2open in browser PRO version[править]Are you a developer? Try out the HTML to PDF APIpdfcrowd.comПрограмма представляет собой набор модулей — самостоятельных единиц компиляции, которые могут компилироваться раздельно.

При этом программныймодуль может быть (но не обязан) разделён на две части: модуль определений и модуль реализации. Модуль определений — это внешний интерфейс модуля, тоесть набор экспортируемых им имён констант, переменных, типов, заголовков процедур и функций, которые доступны внешним модулям. Модуль реализациисодержит программный код, в частности, конкретизацию описаний всего, что перечислено в модуле определений. Например, некоторый тип «запись» может бытьобъявлен в модуле определений с указанием лишь его имени, а в модуле реализации — с полной структурой.

В этом случае внешние модули могут создаватьзначения данного типа, вызывать процедуры и функции, работающ ие с ним, выполнять присваивание переменных, но не имеют прямого доступа к структурезначений, поскольку эта структура не описана в модуле определений. Если для этого же типа описать в модуле определений структуру, то она станет доступна.Помимо модулей глобального уровня в Модуле-2 допускается создавать локальные модули.Импорт определений, описанных в прочих модулях, полностью контролируется. Можно импортировать модули определений целиком, но синтаксис позволяетсущ ественно уточнять списки импорта, например, импортировать из модуля конкретные константы, переменные, процедуры и функции, только те, которыенеобходимы.DEFINITION MODULE ModuleName;{Import}{Declaration}END ModuleName.========================Где Import это:[FROM ModuleName] IMPORTidentifier {,identifier};IMPLEMENTATION MODULE ModName;{Import}{Declaration}[ BEGINListOfStatements[EXCEPTListOfStatements][FINALLYListOfStatementsEXCEPTListOfStatements]]END ModName.(* Модуль определений *)(* Модуль реализаций *)MODULE ModName; (* Должен существовать единственный на весь проект.

Это main. *){Import}{Declaration}BEGINListOfStatements[EXCEPTListOfStatements]END ModName.Для обеспечения видимости в других модулях объявления функций, переменных и типов, описанные в модулях определений, можно импортировать.Остановимся на типах. При импортировании их внутренняя структура становится видна импортирующ ему модулю (т.н. прозрачный экспорт). Сущ ествует скрытыйэкспорт (opaque export), где видно становится только имя типа. Он возможен только для указательного типа (но сделаем указатель на структуру - и вуаля,получим инкапсуляцию и абстракцию данных).ADA[править]Ада, наверное - единственный язык со вложенностью модулей, их раздельной компиляцией и двойной связью одновременно.

Опишем вложеннуюспецификацию, тут ничего сложного:open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.compackage Outer is...procedure some_proc (X: Some_type) is private;package Inner is... -- Тут, в общем то видно все, что есть в пакете Outer.end Inner;...end Outer;Тела этих пакетов, как и тело функции, можно разнести по разным файлам (единицам компиляции), используя "заглушку" separate:package body Outer is...package Inner is separate;...procedure some_proc (X: some_type) is separate;end Outer;Теперь опишем тела модуля Inner и процедуры.separate (Outer) --Тут нет `;'package body Inner is...end Inner;separate (Outer)procedure some_proc (X: some_type) is...end some_proc;Вот здесь заглушка separate и является двойной модульной связью.Исключительные ситуации и обработка ошибок[править]ЗачечаниеКроме перечисленных в итоговой таблице языков исключения поддерживает Visual Basic.Исключения и блоки try {} catch {} finally {}.

Семантика возобновления и семантика завершения.[править]Семантика возобновления: после обработки исключения управление может вернуться непосредственно в точку, где возникло исключение (варианты: наследующ ий оператор или на любой оператор из того же блока). Пример языка c семантикой возобновления: Visual Basic.Моделирование семантики возобновления на C++:bool need_restart = true;while (need_restart) {need_restart = false;try {// Some code here} catch (...) {// C# - просто catch, без круглых скобок// Java - catch (Throwable e)}}open in browser PRO versionneed_restart = true;Are you a developer? Try out the HTML to PDF APIpdfcrowd.comСемантика завершения: после возникновения исключения блок, в котором оно возникло, обязательно завершается. Обработка исключения происходит вблоках, вызвавших блок с исключением.

Пример языка с семантикой завершения: Си++.catch (в delphi - except) - то что будет выполнено в случае ошибки в блоке try. finally - то что будет выполнено в любом случае, вне зависимости от того чтопроизошло в блоке try.Конструкция try ... finally ... есть в C#, Java, Delphi. Декларируется, что в C++ в finally нет необходимости в виду RAII и, как следствие, выполнении деструкторовна выходе из блока.throw (C++) и throws (Java)[править]Текст раздела построен с т.з. программиста Java (иначе говоря, обозначены отличия синтаксиса и семантики конструкции C++ от конструкции Java, а не наоборот).Причина — одно из заданий экзамена по ЯПам звучит примерно как «опишите конструкцию throws в Java (зачем нужно и как работает).

Как моделируется на C++,Delphi[7]?».Примеры употребления конструкций:// Javavoid someMethod() throws IOException, SomeOtherException { … }// IOException — стандартный класс исключения, наследник Exception.// SomeException должен быть наследником Throwable.void someMethod() { … }// Запись «не выбрасывает исключения»: отсутствие throws и списка исключений.// C++void someMethod() throw (SomeException1, SomeException2) { … }// SomeException1, SomeException2 — вообще говоря, любые типы.// Декларациии throw должны совпадать как при определении, так и при описании.void someMethod() throw () { … }// Запись «не выбрасывает исключения»: throw ().void someMethod() { … }// Может выбрасывать любые исключения.Данные конструкции служат для того, чтобы показать программисту и компилятору, что данный метод (или, в случае C++, метод или функция) может выбрасыватьисключения соответствующ их типов.

Насколько я понимаю, всё это влияет только на статические проверки компилятора и эстетические чувства программиста. Вruntime эти декларации никак себя не проявляют, поэтому употребляемые здесь «может / не может выбрасывать исключение данного типа» и тому подобныеобороты следует понимать в контексте статических проверок. (Замечание: не совсем верно.

Исключения могут возникнуть в виртуальной функции или вотдельно оттранслированной. Memento std::unexpected().)В Java считается, что метод, выбрасывающ ий исключение должен обозначить это с помощ ью конструкции throws. Иначе говоря, считается, что если директивыthrows нет, то метод не выбрасывает исключений. Компилятор делает некоторые статические проверки, по крайней мере, запрещ ает выбрасывать исключения, неперечисленные в throws, явно — с помощ ью оператора throw.В C++, в отличие от Java, если директива throw не задана, то считается, что данный метод или функция может выбрасывать любые исключения.

Статические(времени компиляции) проверки делаются только для тех методов/функций, для которых указан (возможно пустой) список исключений.Одно из заданий экзамена по ЯПам[править]2004 г, задание 8. Смоделируйте на языке Си++ функциюopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comvoid f() throw (E1,E2,E3) { g(); h(); }предполагая, что конструкция throw[8] не допускается компилятором.void f(){try {g(); h();} catch (E1) {throw;} catch (E2) {throw;} catch (E3) {throw;} catch (...) {unexpected();}}ADA[править]Создание исключения:New_Exception: exception;Поднятие/возбуждение исключения[9]:raise New_Exception;Отлов исключения:beginRise_Exception;exceptionwhen New_Exception =>Do_Smth;end;Отлов исключения так же может иметь такой вид:when Error: Error_Name =>Однако, что он означает я до конца не понял, но на экзамене это вряд ли нужно будет.

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

Тип файла
PDF-файл
Размер
597,43 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Сравнение языков программирования
Сравнение_языков_программирования_files
ClickTracking.js
CollapsibleTabs.js
ajax.js
centralnotice.js
combined.css
commonPrint.css
flaggedrevs.css
flaggedrevs.js
index.css
index.php
index_002.css
index_003.css
index_004.css
index_005.css
injection_graph_func.js
injection_nh_graph.css
jquery-ui-1.css
js2.js
main.css
main_002.css
mwsuggest.js
plugins.js
shared.css
skypeplugin_dropdownmenu.css
wikibits.js
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6505
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее