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

Примеры языков программирования (1161130), страница 2

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

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

public Cylinder(double radius, double length) {super(radius);this.length = length;}

public double getArea() { return 2*super.getArea()+2*Math.PI*radius*length;}

}

//================================================================================================

Пример работающей программы

package Program;

import java.lang.System;
import java.lang.String;

class X
{
public void g() { System.out.print("1 "); }
public void f() { g();}
}

class Y extends X
{
public void g() { System.out.print("2 "); }
public void f() { g(); }
}

class Z extends Y
{
public void g() { System.out.print("3 "); }
public void f() { g(); }
}

public class Program
{
static X x = new X();
static Y y = new Y();
static Z z = new Z();
public static void main(String[] args)
{
Out(); x = y;
Out(); y = z;
Out();
}
static void Out()
{
x.f(); x.g();
y.f(); y.g();
System.out.print("\n");
}
}

Выдаёт

1 1 2 2
2 2 2 2
2 2 3 3
//================================================================================================

C++

//================================================================================================

[ capture ] ( params ) mutable exception attribute -> ret { body }

mutable - позволяет body изменять параметры, захваченные копированием, и вызывать их неконстантные функции-члены

exception - обеспечивает спецификацию исключения или опцию noexcept для оператора () типа замыкания

attribute - обеспечивает спецификацию атрибута для оператора () типа замыкания

capture - определяет, какие символы, видимые в области, где функция объявлена, будут видны внутри тела функции. Список символов может быть передан следующим образом:

  • [a,&b] где a захвачена по значению и b захвачена по ссылке.

  • [this] захватывает указатель this по значению.

  • [&] захват всех символов по ссылке

  • [=] захват всех символов по значению

  • [] ничего не захватывает

//================================================================================================

Вычисление факториала на стадии компиляции

#include <iostream>

template<int n>
class Factorial {
public:
static const int f = Factorial<n - 1>::f * n;
};

template<>
class Factorial<0> {
public:
static const int f = 1;
};

int main() {
std::cout << Factorial<5>::f << std::endl; // 120
}

//================================================================================================

Python

Типы данных бывают -

строки, числа (целые, не целые)

list - список [1,2,3, [4,2,"каждый элемент - это свой тип"]]

dict - словарь {"1" : 23, 34 : ["dd", 23]} - ключём в словаре может случить исключительно hash-able тип, т.е. тип который не изменяем, например - строка или кортеж, ещё бывают frozen_set, …

Вообще про изменяемось это целая песня

tuple - неизменяемый список, или "кортеж" (1,2,3, (3,2))

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

Слова True и False должны писаться с большой буквы

//================================================================================================

my_func = lambda x, y, z: x+y+x

//================================================================================================

my_list = [1,2,3,4]

my_new_list = [c какого элемента включительно : по какой элемент не включительно : шаг (может быть и отрицателен)]

my_new_list = my_list[3:1:-1] # == [4,3]

my_new_list[0] # это элемент 4

В словарях обращение идёт my_dict[Тут пишем ключ]

//================================================================================================

try

raise Exception ("Hello World")

except Exception as e:

print ("hifi") # Такой принт в python 3.0 - в нём все строки unicode

except :

print "This will catch everything" # Такой принт в python 2.7 - этот с русским не дружит совсем

else:

print "Это выполнится, если ни один except не случился, т.е. не было исключений"

finally:

print "Это выполнится вообще всегда"

//================================================================================================

Пример класса

import itertools # Импортирование модуля itertools, чтобы к чему-то достучаться нужно писать "itertools."

from math import sqrt # импортирвоние символа sqrt из модуля math

from math import * # Это вывалит все имена из модуля math прямо в эту же область видимости (что даст возможность вызвать cos без math.cos)
class Dot (object): # Класс с наследованием (Отдельно заметим, что класс унаследованный из object является классом "нового типа", разницу спросят очень вряд ли)
def __init__ (self, *l, **II): # Конструктор, (звёздочки не обязательны), конструкторы базовых типов нужно вызывать вручную
self.l = list(l)

def __str__(self): # пример переопределения оператора str(), который возвращает строку
return ",".join([str(i) for i in self.l])

def __add__ (self, a2) # пример переопределения оператора "+"

...


def distance(self, d):
if len(self.l) != len(d.l):
raise ValueError()
else:
return sqrt (sum(map((lambda x1, x2: (x2 - x1)**2), self.l, d.l)))

def middle(self, d):
if len(self.l) != len(d.l):
raise ValueError()
else:
return Dot(*map((lambda x1, x2: ((x1+x2)*1.0)/2), self.l, d.l))
//================================================================================================

def __find_max():
for parameters in [0,1,2,3]: # Второе должно быть чем-то итерабельным, т.е. у него должен быть реализован метод __iter__
try:
yield MY_LAMBDA(*parameters)
except:
pass

//================================================================================================

my_list = [i*i for i in range(23)] # Генератор списка - т.е мы по списку range(23) (это специальная функция, которая генерит список [0, 1, 2, 3, …, 22]) генерируем новый список - из квадратов этих чисел.

Аналогично можно и для словаря

range даст нам список, но если нам список не нужен, а нужен только итератор, то нужно пользовать xrange - ибо он негенерирует список и потому не есть памяти

for i in xrange(len(l)):
if i % 2 == 0:
if любое условие, без круглых скобок! : # пользуются and or not и ()

# Ещё можно использовать all([список, где для успеха должны быть все True]) и any ([список где хоть один должен быть True])
print "NO"
break
else:
print "YES" - это будет напечатано, если for закончится и при этом не случится break

//================================================================================================

JavaScript

//================================================================================================

Функцию можно объявить следующим образом, что является лямбдой

var my_func = function (int x) {

return x*x

};

либо

var my_func = x => return x*x;

var my_func = () => alert(1);

//================================================================================================

Так же существуют генераторы (сопрограммы)

function*a(){
var b = 0; while(true) { yield b++}
}
a = a();
console.log(a.next().value); // 0
console.log(a.next().value); // 1
console.log(a.next().value); // 2

//================================================================================================

Ada

3 смысла with:

- импортирование модуля (with package; после чего можно иметь доступ к полям по package.field) (эквивалентно #include)

- Охрана типа (ограничения в шаблонах)

- with - в случае наследования, в конце добавляет дополнительные поля

use - включение всего содержимого модуля (точнее всего интерфейса), это как в python "from package import *" (или же это эквивалент using namespace), либо выделение памяти на куче

aliased - тоже умеет размещать данные в пуле

access - указатель, который указывает только на кучу

access all - это указатель, который доступен и для записи и для чтения (может указывать не только на кучу, но и static и стек)

access constant - это указатель, который доступен только для чтения

task - поддерживает многопоточность (можно объявлять как задачи, так и типы задач)

accept - по синтаксису - как поцедура, это сервис, который работа (task) может предоставить кому-то ещё

Если в работе в ходе её выполнения в коде встречается accept - то работа зависает и ждёт, пока кто-нибудь вызовет.

select - (select <accept> or <accept> or … end select) - работа будет ждать не каждого accept по очереди, а лишь хотя бы одного из описанных в select

Разница в in, out и in out в 83 и 95 в том, что out - только для записи в 83, а в 95 (вероятно, не факт что ответ правльный) - мы можем записать в out переменную значение, которое потом можно прочесть оттуда же.

private используется когда описываются "приватные типы" в пакете, "Private child packages" (когда есть слово private перед package - то этот пакет может пользовать только equally private client units), "Private Part in Package Specification" (приватная часть пакета (это целый блок программы package … private … end package))

Package Shelf … - это пакет

Package Shelf.Bool... - это дочерний пакет (он видит всё, что в shelf)

limited - означает, что у новоявленного типа нет стандартных операций до тех пор, пока программист сам их не опишет. (моделировать в java невозможно)

Штрих в ада используется для указания "тип'значение" (например для перечислимого типа, если в разных перечислимых типах используется одна литера (в других языках где литера выпадает в общую область видимости подобное запрещено))

aliased указывает, что к переменной применима адресная операция

//================================================================================================

function F return Some_Type is

... -- declations (1)

begin

... -- statements (2)

exception -- handlers start here (3)

when Name_1 | Name_2 => ... -- The named exceptions are handled with these statements

when others => ... -- any other exceptions (also anonymous ones) are handled here

// others - ключевое слово, перехватывающее всё на свете

end F;

кинуть исключение - raise Name_1;

//================================================================================================

with persons; use persons;
package managers is

// Наследуемся от person и с дополнительными полями
type manager is new person with
record
master_key_code :string(1..10);
end record;

// Дальше пример метода класса manager
procedure allocate_master_key(
someone:in out manager;
code :in string);
procedure pay_rise(someone:in out person);
end managers;

//================================================================================================

use Smth_Package.Entity;
type Entity_Access is access Entity;
A1, A2 : Entity_Access;
begin
A1 := new Entity;
A1 := new Entity; -- Образовался мусор
A2 := A1;
Free_Entity (A1); -- A1 теперь null
-- A2 теперь - висячая ссылка
end

//================================================================================================

generic
type 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;

//================================================================================================

generic
type T is private;
Size : integer;
package G_Queueis
type Queueis 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);
–- другие процедуры ...
private
type Queueis record
Left, Right: integer;
body : array(1..Size) of T;
end record;
end G_Queue;

//================================================================================================

"Указание типа"

type RGBCOLOR is (... Red ...);

type TrafficColor is (Red, Green, Blue);

P(RGBColor'Red) - указание использовать тип RGBColor.

//================================================================================================

Двусторонняя связь

procedure Outer is
–- заглушка
procedure Inner is separate;
. . .
end Outer;

separate(Outer)
procedure Inner is
. . .
end Inner

//================================================================================================

function SCAL(X, Y : TARR) return T;

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

Тип файла
Документ
Размер
46,98 Kb
Тип материала
Высшее учебное заведение

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

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