Форум программистов, компьютерный форум, киберфорум
Другие языки программирования
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
1

Атрибут value в языке Алгол 60

31.01.2022, 16:27. Показов 1490. Ответов 18

Author24 — интернет-сервис помощи студентам
Тема: Что означает установка атрибута value при описании процедуры на языке Алгол 60

Вот пример:
Код
real procedure Prcd (w,t,h); value t,h;
real h; integer w,t;
begin
t:= 34;
end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2022, 16:27
Ответы с готовыми решениями:

Алгол
Ищу информацию о встроенный процедурах транслятора ТА-1М языка алгол. Если у кого-либо на полках...

Не могу понять ошибку (Алгол)
'ALGOL':BISEC; 'BEGIN' 'REAL'U.VTP.P,Q,INT; 'REAL'XIF; 'REAL'SL,LS;...

Существует ли работающий компилятор языка Алгол?
Тема: Существует ли работающий хоть один компилятор языка Алгол (Algol)? Я достал нечто как...

Как в классе создать атрибут типа массив (двумерный) и потом в других классах использовать этот атрибут?
Подскажите плз. как в классе создать атрибут типа массив (двумерный) и потом в других классах...

18
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,343
Записей в блоге: 1
31.01.2022, 16:53 2
Ixmil, однократное вычисление данного аргумента, если я правильно понял объяснение из Introduction to ALGOL 60 for those who have used other programming languages (стр. 23 PDF).
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
31.01.2022, 17:05  [ТС] 3
Насколько я понял в Algol кроме процедур функций нет. А на макросы не похоже так как далее язык от Паскаля не очень отличается и вероятно процедуры предназначаются для подмены собой и функций то же. И в принципе интересует не означает ли атрибут value уточнения для переменных предназначенных для ввода данных в процедуру или же это уточнение для переменных назначаемых как те которые будут выдавать данные результата из процедуры хотя форма текста для этого бросковатая.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,343
Записей в блоге: 1
31.01.2022, 17:21 4
Ixmil, я не знаю Алгол, но насколько я понял речь идет о параметрах процедуры, то есть то что вы описали как "означает ли атрибут value уточнения для переменных предназначенных для ввода данных в процедуру".
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
31.01.2022, 17:40 5
Ixmil,
All formal parameters quoted in the value part of the procedure declaration heading are assigned the values (cf. section 2.8. Values and types) of the corresponding actual parameters, these assignments being considered as being performed explicitly before entering the procedure body. The effect is as though an additional block embracing the procedure body were created in which these assignments were made to variables local to this fictitious block with types as given in the corresponding specifications (cf. section 5.4.5).
As a consequence, variables called by value are to be considered as nonlocal to the body of the procedure, but local to the fictitious block (cf. section 5.4.3).
Перевод нужен?
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
31.01.2022, 17:49  [ТС] 6
У меня перевода нет. Значит volue может быть ограничение функциональности переменной когда она не глобальная и с ней не работает её рекурсивное преобразование когда переменную можно всё время увеличивать например на 1 и добиваться тем самым всякий раз разных чисел?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
31.01.2022, 17:57 7
Еще одна цитата, из Algol Programming RM:
The value part specifies which formal parameters are to be call-by-value. When a formal parameter is call-by-value, the formal parameter is assigned the value of the corresponding actual parameter when the procedure is invoked. Thereafter, the formal parameter is handled as a variable that is local to the procedure body. That is, any change made to the value of a call-by-value formal parameter has no effect outside the procedure body.
Перевод:
Часть value указывает, какие формальные параметры должны вызываться по значению. Когда формальный параметр вызывается по значению, формальному параметру присваивается значение соответствующего фактического параметра при вызове процедуры. После этого формальный параметр обрабатывается как переменная, локальная для тела процедуры. То есть любое изменение, внесенное в значение формального параметра, вызываемого по значению, не действует за пределами тела процедуры.

Так понятнее? То есть, в приведенном выше примере, измененное значение t не будет передано в вызывающий код. Аналогично НЕ-var параметрам в Паскале, хоть заизменяйся, на выходе из подпрограммы об этом неизвестно.
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
31.01.2022, 22:18  [ТС] 8
Как я понял с этими характеристиками

Характеристики:
Переменная типа volue не распространяется за пределы процедуры где она одноразового типа и не может рекурсивно типово менять свои значения отталкиваясь всякий раз от значения собственного предыдущего.

Вызывая процедуру с уточняемыми параметрами (вводом данных через переменные в процедуру) ввод в переменные означенные атрибутом volue выполняется не будет. Поскольку их значения меняется не будут.

Спасибо.

Так и не удалось проверить версию.

Добавлено через 1 час 50 минут
Компилятор кривой оказался и по одной команде после условного оператора или команды вывода текста на экран заглатывал. Но переменные объявленные при перечислении их в процедуре никуда не распространялись далее как и ожидалось.
0
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
06.02.2022, 19:11 9
Ixmil, параметры без value (w в Вашем примере) передаются в Algol-60 "по имени", т.е. процедура Prcd() должна выполняться так, как будто каждое упоминание w в тексте тела процедуры везде заменено на выражение, переданное как фактический первый параметр.

value-параметры аналогичны обычным параметрам в Си.
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
08.02.2022, 17:51  [ТС] 10
То что мне удалось набрать в компиляторе этого языка без парчи работало только соответственно известному мне синтаксису Паскаля. И практически Паскаль бы это всё и выполнил если бы на нём и писать.

Аналогии других языков обычно ссылаются на две разновидности которые потом выдают за что то эксклюзивное. Это Паскаль а в другом примере это Си. Зато учат то чему. Переводить высокий уровень на ассемблер.... Ихния ли это история.

Спасибо за ваш ответ.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
09.02.2022, 12:33 11
Это означает, что соотв. параметр передается по значению
1
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
10.02.2022, 09:49  [ТС] 12
Это означает, что соотв. параметр передается по значению
Извините. Нельзя ли по подробнее.

Я решил глянуть этот язык что многие языки в сущьности повторяли синтаксис Паскаля. А потом я глянул что получалось не Паскаля а Аглола как какого-то образца которого они почему-то старались держаться. (Если не сказать что не способны были создать своё) Язык Оберон например - очередной клон Паскаля (Алгола).

А у этого похоже на первый взгляд что функций нет (только процедуры), и прикрепляющихся модулей как в Паскале похоже тоже нет. С файлами похоже не работает принципиально.
0
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
10.02.2022, 12:48 13
Цитата Сообщение от Ixmil Посмотреть сообщение
С файлами похоже не работает принципиально.
Это оставлено на усмотрение реализаций за пределами стандарта.
Алгол не только для ЭВМ.

Добавлено через 12 минут
Цитата Сообщение от Ixmil Посмотреть сообщение
на первый взгляд что функций нет (только процедуры)
Есть встроенные функции.
Нет отдельного ключевого слова для функций пользователя:
Pascal
1
integer procedure factorial(n)
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
10.02.2022, 18:22  [ТС] 14
integer procedure factorial(n)
Понятно проверил. Смысл несения функции есть а слово одно что для объявления процедур что для функций.
Раньше не работало с объявлением типа переменной перед словом procedure. Но пока что не выяснил как доводить до обозначения переменной несущей результат «функции». В Паскале это общая то ли функция то ли переменная result.

А процедура вида: integer procedure factorial(n)
Пашет вот так:

begin integer t

t:= factorial(t);

end finish
»Символ стрелки в право»

Добавлено через 29 минут
Но почему-то когда отвечающий (врядли (ие)) хитрый - то он прав и не пойман и «сделал всё как надо» сделав 7 или 6 раскруток по мурыжению как и в любой другой своей теме с «ответом» и выгодами от вопросов (обсолютно с 13-но никакими). А я вожусь как со своими детьми. Замещать собой плохая примета она похожа на обмен ибо был неплохой самообман и чаще всего стрижка под возраст соответствующий. Вам зачем места то детские? Вы на болтунов не похожи ибо были для этого темы созданы. Я уже нашол ответ темы сам и там близко написанного не было. У меня для такого там отдельные есть темы со стихами например.
Вы решили кого то проучить? Нечего выбирая учить после 18 тем более. После 18 - это чужое.
0
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
10.02.2022, 19:21 15
Pascal
1
2
real procedure abs(E); value E; real E;
abs := if E 0.0 then E else −E;
Добавлено через 13 минут
Цитата Сообщение от Ixmil Посмотреть сообщение
У меня перевода нет.
Есть на русском, например:
Д. В. Бэкус, Ф. Л. Бауэр, Д. Грин, С. Кэтц, Д. Мак-Карти, П. Наур, Э. Д. Перлис, X. Рутисхаузер, К. Замельзон, Б. Вокуа, Д. Уэгстейн, А. Ван-Вэнгаарден, М. Вуджер,
"Сообщение об алгоритмическом языке АЛГОЛ-60",
Журнал вычислительной математики и математической физики, 1961, 1:2, 308–342
http://mi.mathnet.ru/zvmmf8039
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
11.02.2022, 18:22  [ТС] 16
Ну хоть на этом спосибо. А то я задавал, задавал вопросы про физмат, про двигатели - и никто ничего водители не знал а далее ещё и осуждали. А кто осуждал - тот был общим молодцом (не носи его ноги).
Я уже стал задавать по профильные вопросы по программированию - и результат всё тот же.

real procedure abs(E); value E; real E;
abs := if E 0.0 then E else −E;
Впервые раз подобное вижу.
В Алгол-е ещё было когда описываемая процедура внутри себя имела описание другой процедуры по одинаковым правилам.
0
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
11.02.2022, 19:15 17
Цитата Сообщение от politoto Посмотреть сообщение
abs := if E 0.0 then E else −E;
if E ≥ 0.0, конечно же.
0
19 / 186 / 0
Регистрация: 17.06.2013
Сообщений: 2,163
30.04.2022, 20:51  [ТС] 18
Аглол отличный язык. Потому что его алгоритмы - содержат только алгоритмы построения логики. Этот язык обрабатывает только файлы, или выдаёт результаты вычисления на экран, он не работает с графикой, не работает со звуком. Поэтому в его алгоритмах - нет мусорного. Проблемы АйТи и толмуты все о ПК и айти были написаны только от замашки работы с графикой.
Без примеси проблем графики графики эти толмуты уменьшаются до вполне приемлемых, читабельных и усваиваемых.
Не разбирая языка Аглол но беря его алгоритмы - не обманёшся в выборе актуальности. Алгол 60 более поздний и на 50-й не похож значительно. 50-й лучше.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
01.05.2022, 07:08 19
Цитата Сообщение от Ixmil Посмотреть сообщение
Этот язык обрабатывает только файлы, или выдаёт результаты вычисления на экран, он не работает с графикой, не работает со звуком.
- ох...

Алгол-60 - сильно устаревший язык. Когда-то он был неплох. Но сейчас... Хотя свое влияние он оказал. Алгол повлиял на многие языки.

Цитата Сообщение от Ixmil Посмотреть сообщение
Извините. Нельзя ли по подробнее.
- передача по значению означает, что процедура/функция не получает доступ к области памяти, которая содержит значение параметра (копия создается в стеке). Передача по ссылке (раньше говорили "по наименованию") обеспечивает такой доступ. Другими словами, функция не может изменить значение переменной-параметра в вызывающей функции, если он передается по значению (и может - если по наименованию/ссылке).

Вот иллюстрация этого принципа для языка VBA (MS Excel):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function f1(n As Integer) As Integer  ' Передача по ссылке 
    f1 = n ^ 2
    n = 777
End Function
 
 
Sub Test_1()
Dim a As Integer
 
    a = 6
    Debug.Print "a до вызова="; a
    Debug.Print f1(a)
    Debug.Print "a после вызова="; a
 
End Sub
Вывод:

a до вызова= 6
36
a после вызова= 777

А теперь то же самое при передаче по значению:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function f1(ByVal n As Integer) As Integer  ' По значению
    f1 = n ^ 2
    n = 777
End Function
 
 
Sub Test_1()
Dim a As Integer
 
    a = 6
    Debug.Print "a до вызова="; a
    Debug.Print f1(a)
    Debug.Print "a после вызова="; a
 
End Sub
Вывод:


a до вызова= 6
36
a после вызова= 6

Все ясно?
0
01.05.2022, 07:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2022, 07:08
Помогаю со студенческими работами здесь

Получить атрибут href тега, если атрибут rel="canonical"
1) preg_match('#<link\s*rel\s*=\s*canonical\s*href\s*=\s*(.*?)\s*/?>#si',$uri, $canonmatch) 2)...

Атрибут id и атрибут класса
Здравствуйте.Установил плагин Contact Form 7 ,с помощью него можно создавать простейшие формы для...

Для всех файлов, кроме текстовых, установить атрибут "Только для чтения", а для текстовых — атрибут "Архивный"
Здравствуйте, Очень прошу помочь написать мне программу. Задание:В заданной папке для всех файлов,...

Команды безусловного и условного переходов в языке Ассемблер. Реализация конструкции if-else на языке c++
Команды безусловного и условного переходов в языке Ассемблер. Реализация конструкции if-else на...

как этот код на языке с++ будет выглядить на языке php?
#include <iostream> using namespace std; const int LEN = 80; class instrument{ private: ...

В соответствии с заданием, вычисления y1 и y2 запрограммируйте на языке ассемблера, вычисление y – на языке
В соответствии с заданием, вычисления y1 и y2 запрограммируйте на языке ассемблера, вычисление y –...

Конвертер для перевода программ на языке PHP в текст программы на языке Assembler
Всем привет. Как можно реализовать такую задачу? Разработать конвертор в языке Assembler для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru