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

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

PDF-файл Сравнение языков программирования (esyr) (Сравнение языков программирования), страница 4 Языки программирования (53647): Другое - 7 семестрСравнение языков программирования (esyr) (Сравнение языков программирования) - PDF, страница 4 (53647) - СтудИзба2019-09-19СтудИзба

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

Файл "Сравнение языков программирования (esyr)" внутри архива находится в папке "Сравнение языков программирования". PDF-файл из архива "Сравнение языков программирования", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

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

Текст 4 страницы из PDF

Первая форма полностью соответствует оператору for языка Си++:for (e1; e2; e3) SВторая форма появилась в J2SE 5.0 (вместе с generic'ами) и используется для поэлементного просмотра коллекций (цикл for-each). Она имеет вид;for (T v: Coll) SЗдесь Coll — коллекция элементов (типа T или приводимых к типу T).

Переменная v на каждой итерации цикла принимает значение очередного элементаколлекции. Для того, чтобы объекты класса-коллекции могли появляться в цикле for-each, класс должен реализовать интерфейс Iterable.Для того, чтобы for можно было аналогичным образом использовать в C#, коллекция должна реализовывать интерфейс IEnumerable (конкретно методGetEnumerator)// метод класса, который мы хотим сделать итеративнымpublic System.Collections.IEnumerator GetEnumerator(){for (int i = 0; i < 10; i++){yield return i;}}Здесь yield преобразует int в объект класса IEnumerator. Кроме того, внутреннее состояние функции запоминается и в следующ ий раз выполнение функции будетпродолжено с того состояния и места, где функция вышла в прошлый раз. yield может вызываться только в теле for.Процедурные абстракции[править]Передача параметров в подпрограммы[править]Для каждой подпрограммы указывается набор формальных параметров. Можно рассматривать формальные параметры как локальные переменные телаподпрограммы.

При вызове подпрограммы указывается список фактических параметров. Соответствие между фактическими и формальными параметрамивыполняется по позиции в списке: первый фактический параметр соответствует первому формальному параметру и т. д. Такой способ называется позиционным.Язык С#, начиная с версии 4, предусматривает альтернативный — ключевой способ отождествления, в котором используются имена формальных параметров, ноopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comмы не будем его рассматривать. Сущ ествует три вида формальных параметров:входные параметры (параметры, от которых требуется только значение). Мы используем только значения фактических параметров, которые не меняются привыходе из тела функции;выходные параметры (эти параметры не обязаны иметь начальное значение, но могут быть изменены в теле функции);изменяемые параметры (требуется и исходное значение, и возможность его изменения).С входным параметром может связываться произвольное выражение, а выходным или изменяемым — только объекты, которые могут стоять в левой частиоператора присваивания.

В большинстве языков программирования вместо указания вида параметра указывается способ (механизм) связывания параметра,называемый способом передачи параметра.Сущ ествует два основных способа передачи параметров: по значению и по ссылке.Передача параметров по значению[править]Формальный параметр есть некоторая локальная переменная. Место для локальных переменных отводится в стеке.

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

Формальный параметр — это ссылка на объект. (Сущ ествует мнение, что данное «определение» нетолько не отражает сути явления, но и неверно в корне. В дискуссии вокруг передачи аргументов в Java Dale King дал следующ ее определение. Передача поссылке — это когда lvalue формального параметра устанавливается в lvalue фактического параметра.) В момент вызова происходит инициализация ссылкифактическим параметром. Преобразования типов в этот момент не происходит: типы формального и фактического параметров должны совпадать.

Посколькуссылка после инициализации отождествляется с объектом, то любые изменения формального параметра подразумевают изменения фактического параметра.Очевидно, что способ передачи по значению соответствует семантике входных формальных параметров. По ссылке можно передавать выходные и изменяемыепараметры.Аргументы в C/C++ всегда передаются по значению[править]В C++ есть ссылочный тип. Переменная ссылочного типа может ссылаться на значение любого типа, должна быть инициализирована и не может менять значения.С помощ ью передачи переменной ссылочного типа можно имитировать все возможности контрукции var из Pascal. Но можно действовать в стиле C —передавать указатель.

В свою очередь, чтобы менять указатель, можно передавать в функцию/метод указатель или ссылку на него.Аргументы в Java всегда передаются по значению[править]Сущ ествует распространённое заблуждение о том, что «объекты передаются по ссылке, а примитивные типы — по значению». На самом деле ситуация иная:1. Аргументы любого типа передаются по значению. Объекты, однако, не передаются вообщ е.2.

Значения переменных всегда примитивы или ссылки (или null), но никак не объекты.Подробнее см. http://www.yoda.arachsys.com/java/passing.html.В соответствии с изложенным выше, метод может изменить объект через аргумент-ссылку. С примитивным типом это не пройдёт, так как в Java нет ссылок назначения примитивных типов. Чтобы иметь возможность изменить из метода значение некоторой внешней переменной примитивного типа, нужно чтобы этапеременная была полем некоторого объекта.В связи с этим для примитивных типов были введены классы-обёртки.

Объект такого класса содержит в себе значение примитивного типа, которое можно какпрочитать, так и поменять. См. также Упаковка и распаковкаopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comПерегрузка операций[править]Ада 83, Ада 95, Си++, Java, Delphi, C#Понятие «перегрузка» (англ. overloading) означает, что одному имени в одной области видимости может соответствовать несколько определений. В современныхязыках программирования перегружаться могут только имена подпрограмм, но не типов, переменных, модулей.Пример на языке C++:class X {public:void f();void f(int)};X a;a.f(); // первая функцияa.f(0); // вторая функцияОтличие перегрузки от замещ ения (скрытие, англ.

hide) состоит во-первых, в том, что перегрузка обрабатывается статически (на этапе трансляции) (азамещ ение?), в во-вторых, при замещ ении речь идет о разных областях видимости: базовый класс с объявлением виртуального метода (объемлющ ая областьвидимости) и производный класс с замещ ающ им методом (вложенная область видимости).ADA[править]В аде есть процедуры и функции.

Первые не возвращ ают значения, вторые - возвращ ают. Самое интересное здесь - это виды передачи параметров. В аде их 4.inФактический параметр не изменяется и передается как константа read-only (этот модификатор используется по умолчанию)outФактический параметр передается только на изменение. Внутри подпрограммы этот параметр не доступен на чтение.in outФактический параметр передается с read-write семантикой.accessФактический параметр является указателем.

Это не модификатор, а тип и может использоваться с 3-мя вышеперечисленными модификаторами.До 2012-го года функции в Аде могли принимать только in и access параметры.Имеются типы-указатели на подпрограмму, определяются в виде.type PFunction is access function (X : in Param_Type) return Return_Type;ОБЕРОН И ОБЕРОН-2[править]Имеются два вида процедур: собственно процедуры и процедуры- функции. Последние активизируются обозначением функции как часть выражения ивозвращ ают результат, который является операндом выражения.

Собственно процедуры активизируются вызовом процедуры. Процедура является процедуройфункцией, если ее формальные параметры задают тип результата. Тело процедуры-функции должно содержать оператор возврата, который определяет результат.PROCEDURE log2 (x: INTEGER): INTEGER;VAR y: INTEGER; (*предполагается x>0*)BEGINy := 0; WHILE x > 1 DO x := x DIV 2; INC(y) END;RETURN yopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comRETURN yEND log2Определение новых типов данных. Логические модули.

Классы[править]ADA[править]В Аде вообщ е типы принято определять вручную, пользуясь конструкциями type и subtype. Например:type Short is range -128 .. +128type Index is range 0 .. 256type My_String is array ( Index range <> ) of Character -- My_String - это массив, индексируемый типом Index в неизвестных пока границах, состоящий из Charactersubtype String_10 is My_String ( 0 .. 10 ); -- Подтип типа My_String, состоящий из 11 элементов.type Money is delta 1/100 range 0.0 ... 10000.0Ключевое слово Limited означает, что у новоявленного типа нет стандартных операций до тех пор, пока программист сам их не опишет.В языке Ada есть мощ ный механизм пакетов, и этим он, несмотря на то, что основан на Pascal, совсем на него не похож.

Пакеты заимствованы из других языков.Они похожи на классы тем, что являются средством абстракции, позволяющ ем инкапсулировать сложность внутри пакета, предоставив наружу только интерфейс.Ладно, к сути.Каждый пакет физически разделён на две части.-- Интерфейсpackage Points istype Point is recordx: Integer;y: Integer;end record;zero: constant Point := (0, 0);procedure setToZero(point: in out Point);function dotProduct(point1: in Point; point2: in Point) return Integer;end Points;-- Реализацияpackage body Points isprocedure setToZero(point: in out Point) isbeginpoint := zero;end setToZero;function dotProduct(point1: in Point; point2: in Point) return Integer isbeginreturn point1.x * point2.x + point1.y * point2.y;end setToZero;end Points;Ada имеет средства разграничения доступа. Всё, что следует за спецификатором private, не будет доступно при импорте пакета.-- Интерфейсpackage Points istype Point is private; -- Это ключевое слово как бы намекает.zero: constant Point; -- Тут тоже неявный private.procedure setToZero(point: in out Point);function dotProduct(point1: in Point; point2: in Point) return Integer;privatetype Point is recordx: Integer;y: Integer;end record;zero: constant Point := (0, 0);open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comzero: constant Point := (0, 0);end Points;Вне пакета можно будет объявить переменные типа «Point», но все действия будут ограничены присваиваниями, сравнениями на равенство и проверкамипринадлежности (нужно описать подробнее).

Поэтому в пакет надо бы добавить «конструктор», если, конечно, предполагается возможная инициализация этихструктур вне пакета. Если стандартная реализация этих операций не устраивает, можно использовать limited private, который в остальном ничем от private неотличается, но этих операций не позволяет.Реализация может также иметь часть-инициализацию.

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