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

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

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

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

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

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

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

Известно, что сопрограммы выполняются квазипараллельно. Следовательно, их использование исключает трудную проблему взаимодействия истиннопараллельных процессов.2. Переключение процессора от одной сопрограммы к другой осщ ествляется явным оператором передачи управления. Выполнение сопрограммы, которойпередаётся управление, возобновляется с той точки, где она была приостановлена последним таким оператором.Примеры кода[править]Примеры кода на Java[править]package MyPackage; // Всё, что будет написано в этом файле, считается лежащим в этом пакете.import java.lang.*; // Импорт пакетов.public class MyClass{private static int m_i = 3;private static int m_j;static {// Демонстрация статического блока в Java.

Операторы в этом блоке будут выполнены в самом начале программы.m_j = m_i * 4;}public static void main(String[] args){final int N = 5; // final — аналог констант в языках C/C++final int M = 3;double a[][] = new double[N][M];double [][]b = new double[N][M];for (int i = 0; i < a.length; ++i) {for (int j = 0; j < a[i].length; ++j) {a[i][j] = i * j;}}for (int i = 0; i < b.length; ++i) {for (int j = 0; j < b[i].length; ++j) {b[i][j] = i + j;}}double res[][] = sumMatrices(a, b);for (int i = 0; res != null && i < res.length; ++i) {for (int j = 0; res[i] != null && j < res[i].length; ++j) {System.out.print(res[i][j] + " ");}System.out.println();}}public static double[][] sumMatrices(double a[][], double b[][]){label1: if (a != null && b != null && a.length == b.length) {label2: {for (double x[] : a) { // аналог for-eachfor (double y[] : b) {if (x.length != y.length) {break label2; // прервать внешний цикл}}open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com}}break label1;}}}System.out.println("Bad Arrays...");return null;} else {System.out.println("Bad Arrays...");return null;}double [][]res = new double[a.length][a[0].length];for (int i = 0; i < a.length; ++i) {for (int j = 0; j < a[i].length; ++j) {res[i][j] = a[i][j] + b[i][j];}}return res;package MyPackage;import java.sql.SQLException;public class Example{public static void main(String [] argv){// демонстрация работы внутренних классов:Outer outer = new Outer(10);outer.test();// демонстрация работы динамической диспетчеризации методов:A refA;refA = new A(5);refA.callMe();refA = new B(10, 15);refA.callMe();// демонстрация работы с абстрактными классами:}}//AbstrA abstra = new AbstrA(5); — нельзя, т.к.

AbstrA — абстрактный класс.AbstrA refAbstrA;refAbstrA = new AbstrB(5, 10);refAbstrA.callMe();// демонстрация работы с интерфейсами:Client client = new Client();client.someFunc();// демонстрация работы с исключениями:try {client.badFuncEx();// Мы не можем оставить потенциальную посылку функцией исключения без внимания:// либо окружим её вызов конструкцией try-catch,// либо напишем, что эта функция тоже может бросать исключения (большое отличие от языка С++).} catch (Exception ex) { // Ловушка для всех исключений, ибо Exception — это базовый класс.//do Smth...}class Outer{private int x = 0;public Outer(int x){this.x = x;}private void display(){System.out.println(x);}public void test(){Inner in = new Inner();in.useOuterFunc();open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com}in.useOuterFunc();}class Inner{public void useOuterFunc(){// Внутренний класс имеет непосредственный доступ к приватным и публичным полям внешнего класса.// Обратное неверно.display();x = 15;display();}}// Реализация динамической диспетчеризации методов:class A{private int i;A(int i){this.i = i;}public void callMe(){System.out.println("In A.callMe().

" + i);}}final class B extends A// final означает, что никакой класс не сможет отнаследоваться от В.// final, стоящий перед описанием метода запрещает его переопределение.{private int i; // Поле i класса B перекрывает поле i суперкласса.B(int i, int j){super(i); // вызывается метод А(int i) суперкласса.this.i = j;}public void callMe()// Сигнатура функций должна совпадать. В противном же случае — это обычная перегрузка.// Сам метод называется переопределённым (аналог виртуальным методам в С++).{System.out.println("In B.callMe(). " + i); // Здесь выведется значение поля подкласса.// Для доcтупа к полю суперкласа нужно использовать super.i (но здесь поле недоступно, ибо private).}}// Использование абстрактных классов. Если мы объявляем какой-то метод в классе абстрактным, то// автоматически должны сделать абстрактным и сам класс.

С точки зрения динамической диспетчеризации это означает лишь то,// что подклассы должны будут явно реализовать все абстрактные методы или тоже быть абстрактными.abstract class AbstrA{private int i;AbstrA(int i){this.i = i;}abstract public void callMe();}final class AbstrB extends AbstrA{private int i;AbstrB(int i, int j){super(i);this.i = j;}public void callMe(){System.out.println("In AbstrB.callMe().

" + i);}protected void finalize()open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com}protected void finalize(){// Считаю нужным упомянуть о методе finalize. Он должен вызываться при удалении объекта сборщиком мусора.// Используется для освобождения занятых ресурсов (закрытия файлов и т.п.).// Однако его поведение настолько туманно, что применять его не стоит, а позаботиться об освобождении отдельно. :)System.out.println("Wow! You're lucky to see it in your console! :D");}// Использование интерфейсов и исключений.

:)// Все методы и члены интерфейсов по умолчанию делаются публичными. Все члены — final static.interface MyInterface{int pubStatFinalMember = 121;// Все переменные должны быть инициализированы.void someFunc();}/*Доступ class имя_класса [extends суперкласс][implements интерфейс [, интерфейс...]]//тело класса*/class Client implements MyInterface// В классе должны быть определены все функции интерфейса. Спецификатор доступа у них обязан быть public.// Если в классе определяются не все функции интерфейса, то он должен быть объявлен абстрактным.// Кроме того интерфейс может быть вложен в класс или же другой интерфейс, а также интерфейсы можно наследовать.{public void someFunc(){//pubStatFinalMember = 601; ——— Нельзя, т.к.

переменная — final.}System.out.println("In someFunc() from interface.");}public void badFuncEx() throws SQLException{//Здесь же и рассмотрим исключения. :)try {int i = 0;i = pubStatFinalMember / i;System.out.println("You shouldn't see it.");} catch (ArithmeticException ex) { // Тут мы поймаем исключение деления на нульSystem.out.println(ex);throw new SQLException();// Пошлём другое исключение выше. >:D Но в таком случае мы должны у функции пометить, что она может// разбрасываться исключениями (см. throws список_исключений).} finally {// Этот блок кода обязательно получит управление после блока try/catch вне зависимости от исключения.System.out.println("You will always see it.");}}Вывод:1015In A.callMe().

5In B.callMe(). 15In AbstrB.callMe(). 10In someFunc() from interface.java.lang.ArithmeticException: / by zeroYou will always see it.Пример кода на Delphi[править]Описание юнита, наследования и конструкторовunit Unit1;interfaceopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comusesForms, Dialogs, Classes, Controls, StdCtrls;type// Определение родительского класса основанного, по умолчанию, на TObjectTFruit = classpublicname: string;Constructor Create; overload;// Этот конструктор использует умолчанияConstructor Create(name : string); overload;end;// Определение типа потомкаTApple = class(TFruit)publicdiameter : Integer;publishedConstructor Create(name : string; diameter : Integer);end;// Класс формы используемой этим модулемTForm1 = class(TForm)procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm} // Вложение определений формы// Создание объекта fruit - версия без параметровconstructor TFruit.Create;begin// Сначала выполняется родительский конструктор (TObject)inherited; // Вызов родительского метода Create// Теперь устанавливаем имя fruit, по умолчаниюself.name := 'Fruit';end;// Создание объекта fruit - версия с параметрамиconstructor TFruit.Create(name: string);begin// Не cможет выполниться родительский конструктор - параметры отличаются// И сохраняем имя fruitself.name := name;end;// Создание объекта appleconstructor TApple.Create(name: string; diameter : Integer);begin// Сначала выполняется родительский конструктор (TFruit)inherited Create(name); // Вызов родительского метода// Теперь сохраняем переданный apple диаметрself.diameter := diameter;end;// Основная линия кодаprocedure TForm1.FormCreate(Sender: TObject);varfruit : TFruit;banana : TFruit;apple : TApple;begin// Создание 3-х различных объектов fruitfruit := TFruit.Create;banana := TFruit.Create('Banana');apple := TApple.Create('Pink Lady', 12);// Смотрим какие из наших объектов являются fruitopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.com//ififif//ifififend;end.Смотрим какие изfruit Is TFruitbanana Is TFruitapple Is TFruitнаших объектов являются fruitthen ShowMessage(fruit.name +' - fruit');then ShowMessage(banana.name +' - fruit');then ShowMessage(apple.name +' - fruit');Смотрим какие объектыfruit Is TApple thenbanana Is TApple thenapple Is TApple thenявляются appleShowMessage(fruit.nameShowMessage(banana.nameShowMessage(apple.name+' - apple');+' - apple');+' - apple');Fruit - fruitBanana - fruitPink Lady - fruitPink Lady - appleПримеры на C++, Ада и Java с использованием шаблонов[править]Стек:GENERICTYPE T IS PRIVATE; SIZE : INTEGER;PACKAGE Stacks ISTYPE Stack IS LIMITED PRIVATE;PROCEDURE Push(S: IN OUT Stack; X : IN T);PROCEDURE Pop(S: IN OUT Stack; X : OUT T);FUNCTION IsEmpty(S : IN Stack) RETURN BOOLEAN;FUNCTION IsFull(S : IN Stack) RETURN BOOLEAN;PRIVATETYPE Stack is RECORDBody : ARRAY (1..SIZE) OF T;Top : INTEGER := 1;END RECORD;END Stacks;template <typename T, int size> class Stack{public:Stack() {top = 0;}void Push(T x);T Pop(T& x);bool IsEmpty();bool IsFull();private:Stack (const Stack& s);T body[N];int top;};Очередь:generictype T is private;Size : integer;package G_Queue istype Queue is limited private;procedure Enqueue(Q: inout Queue; X:T);procedure Dequeue(Q: inout Queue; X:T);procedure Init(Q: out Queue);procedure Destroy(Q: inout Queue);function IsFull(Q: Queue);function IsEmpty(Q: Queue);–- другие процедуры ...privateopen in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.comprivatetype Queue is recordLeft, Right: integer;body : array(1..Size) of T;end record;end G_Queue;Дек:generictype T is private;package G_Deque istype Deque is limited private;procedure PushRight(Deq: inout Deque; X:T);procedure PushLeft(Deq: inout Deque; X:T);procedure PopRight(Deq: inout Deque; X: out T);procedure PopLeft(Deq: inout Deque; X: out T);procedure Init(Deq: out Deque);procedure Destroy(Deq: inout Deque);function IsFull(Deq: Deque);function IsEmpty(Deq: Deque);–- другие процедуры ...privatetype PLink is access;type Link is record inf : T; next, prev : PLink; end record;type PLink is access Link;type Deque is record Left, Right: PLink; end record;end G_Deque;interface IDeque<T>{void PushLeft(T x);void PushRight(T x);T PopLeft();T PopRight();bool IsFull();bool IsEmpty();// другие функции}Функция перемножения матриц:template <class T> Matrix<T>& MatMult (Matrix<T>& A, Matrix<T>& B);Matrix<float> b,c;// конкретизация функцииMatrix<float> a = MatMult(b,c);generictype T is private;with function “+”(x,y:T) return T (<>);with function “*”(x,y:T) return T (<>);type Matrix is private;function G_MatMult(A,B: Matrix) return Matrix;Примеры кода на С#[править]Пример обработки исключений в C#.class NegativeValueException : Exception{public NegativeValueException(string message) : base(message)open in browser PRO versionAre you a developer? Try out the HTML to PDF APIpdfcrowd.compublic NegativeValueException(string message) : base(message){}}// ...string path = @"c:\users\public\test.txt";var file = new System.IO.StreamReader(path);try{var buffer = file.ReadLine();var time = Int32.Parse(buffer);if ( time < 0){throw new NegativeValueException("Time must be a positive value.");}MyClassInstance.Foo(time);}catch (System.IO.IOException e){Console.WriteLine("Error reading from {0}.

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