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

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

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

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

Конструкторпреобразования имеет прототип вида:Х(Т) // или Х(Т&) или X (const Т&)Функция преобразования имеет вид:class X {operator Т();};В языке C# область применения пользовательских преобразований уже, чем в языке C++. Можно определять свои преобразования только между двумяклассами, нельзя определять преобразования в типы значений или из них.

Преобразование из класса X в класс Y реализуется с помощ ью специального метода— функции преобразования:static operator Y (X х) { ... }Функция преобразования может быть только статическим методом либо класса х, либо класса Y. Если такая функция преобразования есть, то она вызывается сиспользованием обычного синтаксиса преобразований: (Y) х. Компилятор вставляет неявное преобразование из X в Y только, если соответствующ ая функцияпреобразования снабжена модификатором implicit:open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comstatic implicit operator Y (X x) { ... }Если же используется модификатор explicit, то функция преобразования может вызываться только явно.

По умолчанию принимается модификатор explicit, чтоснижает вероятность случайной ошибки.В Delphi есть неявное преобразование типов, работает для функций. Пример (не работает для Writeln, потому что это не функция, а конструкция языка):program Overloads;{$APPTYPE CONSOLE}typeTRec = recordprivatefunction GetOrd: Integer;publicclass operator Implicit(const Value: TRec): Integer;property ord: Integer read GetOrd;end;class operator TRec.Implicit(const Value: TRec): Integer;beginResult := 0;end;function TRec.GetOrd: Integer;beginResult := 0;end;procedure Foo(i: Integer);beginend;varR: TRec;a: array[0..0] of Integer;beginWriteln(R);//E2054 Illegal type in Write/Writeln statementWriteln(Integer(R));//explicit cast, provided by class operator ImplicitWriteln(R.ord);//my preferred option, a propertya[R] := 0;//E2010 Incompatible types: 'Integer' and 'TRec'a[Integer(R)] := 0;//again, explicit cast is finea[R.ord] := 0;//or using a propertyFoo(R);//implicit cast used for actual parametersend.Понятия conversion и casting[править]В большинстве языков, основанных на базе Algol и обладающ их механизмом вложенных функций - например, в Ada, Delphi, Modula 2 и Pascal, понятияconversion и casting принципиально различны.

Понятие conversion относится к явному или неявному изменению значения одного типа данных на значение другоготипа данных (например, расширение 16-битного целого до 32-битного). В этом случае, могут измениться требования к объёму выделенной памяти; могутвозникнуть потери точности или округления.

Понятие casting, напротив, обозначает явное изменение интерпретации последовательности бит. Например,последовательность из 32 бит может быть интерпретирована как целое без знака, как массив из 32 значений типа boolean или как вещ ественное число cодинарной точностью, соответствующ ее стандарту IEEE. В C-подобных языках, понятием casting обозначается явное приведение типа в независимости от того,является ли оно изменением интерпретации последовательности бит, либо же настоящ им преобразованием типа.Упаковка и распаковка[править]Данные понятия определены для языков C# и Java.Упаковкой (boxing) называется процесс преобразования значения простого типа значения в экземпляр соответствующ его класса-оболочки.Are you a developer? Try out the HTML to PDF APIopen in browser PRO versionpdfcrowd.comРаспаковкой (unboxing) называется, очевидно, процесс преобразования экземпляра класса-оболочки в значение соответствующ его простого типа.C#[править]В C# упаковка и распаковка выполняются автоматически.Пример упаковки и распаковки:int i = 123;// The following line boxes i.object o = i;o = 123;i = (int) o;// unboxingJava[править]В Java автоупаковка и автораспаковка поддерживаются начиная с J2SE 5.0 (сентябрь 2004 года).Пример упаковки и распаковки:int i = 123;Integer boxedI = Integer.valueOf(i); // boxingInteger boxedI = Integer.valueOf(123);int i = boxedI.intValue(); // unboxingДругие языки[править]В некоторых языках упаковка и распаковка отсутствуют.

Например, в Smalltalk любое значение принадлежит некоторому классу (т.е. даже значения простыхтипов являются экземплярами классов).В JavaScript ситуация несколько иная. Например, есть примитивный тип Number для чисел. В отличие от Java и C#, это тип является полноценным (к объектамэтого типа можно применить операцию typeof). Однако при вызове методов примитивный тип упаковывается в объект, прототипом которого являетсяNumber.prototype(это не тот же самый Number-примитивный тип!), и в котором уже определены нужные методы. Пример кода, который это демонстрирует:Number.prototype.test = function() { return this; }var x = 5;alert(x + " " + typeof x);x = x.test();alert(x + " " + typeof x);Операторный базис языков программирования.

Управление последовательностью вычислений[править]ADA[править]Примечание: в отличие от нижеследующ их языков (таких как Pascal / Delphi и Modula-2), в ADA конструкция with не входит в операторный базис, а служит дляподключения пакетов; см. раздел 7.if condition thenopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comif condition thenstatement;elseif enother_condition thenenother_statement;...elselast_one_statement;end if;case X iswhen constant1 =>stetement1;when constant2 | constant3 =>statement2_and3;...when others =>other_statement;end case;return; -- for proceduresreturn Value; -- for functionsgoto LabelDont_Do_Smth;<<Label>>Циклы устроены посложнее:Endless_Loop :loopDo_Something;end loop Endless_Loop;While_Loop :while X <= 5 loopX := Calculate_Something;end loop While_Loop;Until_Loop :loopX := Calculate_Something;exit Until_Loop when X > 5;end loop Until_Loop;Exit_Loop :loopX := Calculate_Something;exit Exit_Loop when X > 5;Do_Something (X);end loop Exit_Loop;For_Loop :for I in Integer range 1 ..

10 loopDo_Something (I)end loop For_Loop;(Замечание: именовать циклы необязательно.)open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comОБЕРОН И ОБЕРОН-2[править]Операторы в последовательности операторов идут через точку с запятой. В конце последовательности должна стоять точка.Пайп-символы «|» — это обязательная деталь конструкций CASE и WITH (они разделяют альтернативные варианты, за исключением умолчательного,задаваемого после ключевого слова ELSE).IF Выражение THEN ПоследовательностьОператоров{ELSIF Выражение THEN ПоследовательностьОператоров}[ELSE ПоследовательностьОператоров]END.CASE ch OF"A" .. "Z": ReadIdentifier |"0" ..

"9": ReadNumber |"'", '"': ReadStringELSE SpecialCharacterEND.WHILE Выражение DOПоследовательностьОператоровEND.REPEATПоследовательностьОператоровUNTIL Выражение.FOR v := начало TO конец BY шаг DOПоследовательностьОператоровEND.(* Присутствует только в Оберон-2 *)LOOPПоследовательностьОператоровEND.(* Вечный цикл; для выхода используется ключевое слово EXIT *)WITHДискриминант: Значение1 DO ПоследовательностьОператоров1 |Дискриминант: Значение2 DO ПоследовательностьОператоров2ELSE ПоследовательностьОператоров3END.(* Является подобием оператора CASE-OF по дискриминантуразмеченного объединения; присутствует только в Оберон-2 *)Modula-2[править]Полностью совпадает с Обероном-2, за исключением WITH, определяемого так:WITH ПеременнаяСтруктурногоТипа DOПоследовательностьОператоровПоле1:= Значение1;ПоследовательностьОператоровПоле2:= Значение2;…open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com…END.(* Поле1, Поле2, итд.

— поля переменной «ПеременнаяСтруктурногоТипа»;конструкция с аналогичным поведением есть в Pascal и Delphi *)Pascal и Delphi[править]if condition1 then beginstatement1;statement2;…end { заметьте, точки с запятой нет }else if condition2 then begin…endelse begin…end; { if-блок закончен, точка с запятой есть }case value1 ofconstant1: beginstatement1;statement2;…end;constant2: begin…end;…else begin…end;end;goto label1; { да, в стандарте Паскаля это было }never_executed_statement1;never_executed_statement2;…label1:for variable1 := constant1 to constant2 do beginstatement1;statement2;…end; { если constant1 > constant2, используется downto }while continuation do beginstatement1;statement2;…end;repeatstatement1;statement2;…until discontinuation;open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comuntil discontinuation;{ здесь, discontinuation означает условие останова, а непродолжения (как, например, в цикле предыдущего типа);также заметьте, что скобки begin / end тут не нужны }with struct1.substruct1.subsubstruct1 do beginfield1 = value1;field2 = value2;…end;{ field1 и field2 — это поля структуры struct1.substruct1.subsubstruct1;в этом блоке они перекрывают собой любые переменные с теми же именами }C и C++[править]if (condition1) {statement1;statement2;…}else if (condition2) {…}else {…}return;// возврат из void-функцииreturn value1; // возврат из функции, отдающей значениеswitch (value1) {case constant1:statement1;statement2;…break;case constant2:…break;…default:…break;}// также вместо break можно использовать return (выходим не только из switch-блока, но и из функции).goto label1;never_executed_statement1;never_executed_statement2;…label1:for (initializer; continuation; increment) {statement1;statement2;…}open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com}// любые из трёх выражений в заголовке цикла могут пустовать.// например, for ( ; ; ) {} даст вечный цикл.do {statement1;statement2;…} while (continuation);while (continuation) {statement1;statement2;…}for в C# и Java[править]В Java используется 2 формы оператора цикла for.

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

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