Это программка на первом в мире языке программирования высокого уровня FORTRAN, созданном в середине 1950-х годов в корпорации IBM. Фактически, создание этого языка предопределило рождение новой профессии: "программист". До тех пор в роли "программистов" выступали инженеры-создатели конкретных вычислительных машин, составлявшие программы в специфических автокодах. Разумеется, о "переносимости" таких программ не могло быть и речи.
Любопытно, что FORTAN не мертв и поныне, более того: развивается и активно используется, в основном в научных и инженерных расчетах, на нем написано множество широко используемых вычислительных библиотек.
А -- да -- программка всего лишь печатает первый десяток четных чисел.
Комментарии
шото типа печати чётных чисел от 2 до 20. похоже на фортран, но какой-то он странный.
название программы улыбнуло ;-)
это чтобы запутать
Да, фортран (формула транслятор) - первый язык программирования, с которым познакомился в десятом классе тогда, когда машины были ещё большими. Первая программка которую писал был популярный тогда расчет биоритмов.
И да, фортран жив до сих пор. На тех же GPU он, говорят, позволяет более эффективно управлять памятью, чем С++.
На фортране куча библиотек для питона написана.
Что программа делает, не понял. Что вот это делает - WRITE(6,*) I - не врубаюсь.
WRITE(6,*) I - бесформатный вывод числа I в устройство (файл) с дескриптором 6, которым, по умолчанию, является "standard output" - консоль.
https://coderoad.ru/28620899/%D0%A0%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0-...
Ужснах. То есть, там написано вывести в консоль целые числа начиная с 2 через 2 и до 20. А сто зачем - DO 100? И вот это сто:
100 CONTINUE
?
100 это метка конца тела цикла,
типа goto 100, что в переводе означает пошел на ...
Охтыж! goto - это зло КМК. Моск ломают такие конструкции, когда программа длинная.
С другой стороны когда на с пишешь кучу вложенных циклов, то надо следить какой закрывающей скобке соответствует какая открывающая. Поэтому на С пишу в подобном стиле:
for(int I=2; I<=20; I+=2) //100
{
fprintf(1,"%d\n",I);
} //100
Ну, вот это я более-менее понял. Я бы и код ТС, может быть, хотя сомнительно, понял, просто забыл, что бывают метки строк. Просто учу питон, чтобы обсчитать одну конкретную модельку касательно моей деятельности, кою регрессия в эксель по человечески расколупать не может. И ещё графичками балуюсь, очень нравится. Не программист вообще, в общем.
Для регрессии и графичков -- учите R (https://cran.r-project.org/). Вообще для стат.обработки АР лучше питона, т.к. он для этого создавался.
R по сравнению с питоном - шняга. Толкового комьюнити нет, описалово зачатошное. От чего падает р-студио под линухом, почитать тупо негде, а он сам ничего не говорит, просто молча падает, и ЧСХ не сохраняет, что было написано. Спасибо хоть синтаксис не мозголомный. Я вообще хотел маленькую нейронку, чтобы аппроксимировать неизвестную мне функцию, и как это реализовать в R?
В нормальном редакторе есть подсветка блоков, фолдинг блоков и комбинация клавиш, которая "мотает" блок от начала к концу и назад.
Ну а если писать код в тетрадке, то немного не так, поскольку люди, разрабатывающие стандарты 9899 и 14882, рекомендуют располагать открывающую скобку всякого операторного блока в конце строки с оператором.
for(;;) { // 100
...
} // 100
Да, тип счетчика цикла for опасно делать типом int. Для этого в stddef.h предусмотрен специальный тип size_t.
Всё так. Просто со времен "структурного программирования" я привык закрывающую скобочку писать строго под открывающей.
Что касается size_t, то да, это отличный тип для счетчика числа операций (переполнить числом операций 64 бита в одном цикле удается нечасто).
Но так как С позволяет практически всю программу запихнуть в заголовок цикла c пустым телом
for(a=a1,b=b1,...; ... ; ...) {}
то отрицательные величины переменной цикла иногда могут быть полезны. Типа:
for(int i=0; i>=-10; i--)
{
f(i);
}
6 во write это номер консоли, на которую идёт вывод переменной *. В данном примере переменная это «I»
второй аргумент во write - ссылка на формат.
Например,
write (*,100) n, (i, a(i), i=1,5)
100 format (1x,i5,100(/,1x,i3,2x,f9.5,:))
* - бесформатный вывод переменной.
Котострофа! Код для терминаторов.
Ну это ответ на 5-ку:) я же по памяти вспоминал физико-математическую юность 90-х и отвечал, исходя из условий задачи white(6,*) I
Также мне казалось, что переопределить формат надо было до начала цикла. Но, 30 лет прошло, могу ошибаться
На сколько я помню, 100 Continue не обязательна, достаточно было меточку 100 на операторе вывода поставить. FORTRAN.
Да вроде нет. Две ссылки на 100 (одна, как в примере на цикл, вторая на формат) не прокатывали - переход был безусловный.
получишь warning при компиляции. не смертельно, но неаккуратненько.
Да, не. Ежели строку "100 Continue" просто убрать и сделать "100 Write (...)", прокатило бы, для этого случая. Continue это "пустой" оператор. Если бы внутри цикла было условное ветвление, ну, например не печатать цифру "8" (IF I=8 GO TO 100), тогда цикл надо было закрыть пустышкой 100 СONTINUE, обойдя печать. Как то так. Спасибо, вспомнил молодость.
Ну, что сказать ... Я на Фортране IV программировал, потом на Фортране 77, может чего и забыл. Не думал, что Фортран ещё жив.
То что фортран, сразу было понятно.
Остальное лирика)
а мы платы на фортране разводили. Эхх было времечко!
Жуть.. А мы на гетинаксе.
процесс выглядел примерно так. сначала на перфокартах набивались первичные данные на основе принципиалки
потом эта пачка перфокарт скармливалась программе предварительной обработки, которая генерила пачку перфокарт с исходными данными для программы трассировки.
потом пачка перфокарт скармливалась программе трассирвки которая генерила пачку перфокарт с командами для графопостроителя. И наконец эта пачка перфокарт скармливалась программе которая записывала все эти команды на магнитную ленту. и да разводка была двухсторонняя.
дальше легко и просто лента вставлялась в магнитофон графопостроителя и графопостроитель рисовал чертеж разведенной платы с металлизированными отверстиями и контактными площадками
в написании трассировки на фортране мы с коллегами немножко поучаствовали
Перфокарты и я застал. Но у нас всё было проще - или на макетной гетинаксовой плате паялся рабочий прототип, который потом перерисовывался на полноценную печатку, или на бумажке в квадратик рисовалась печатка, которая опять же проверялась на прототипе. Это было быстрее и практичнее. Потом, конечно, появились всякие буржуйские программы для PC, в которых было работать удобнее, но это уже совсем другая история.
Скармливалось табулятору. Он выдавал полученную сумму по колонкам. Сравниванием с суммой на печатной ленте. Правим неправильно набитое. Еще раз пропускаем, проверяем и сдаем. Верификация изготовленных деталей и цена операции для ИЛ-76. Таким образом обрабатывалась информация по затратам на каждую операцию по изготовлению деталей.
Вы точно девушка?
Пошёл варить борщ..
/Перфокарты и перфоленты застал, работал с ними/
>перфоленты застал,
Помню, секретариат как-то поставил входящий штамп на торец рулона перфоленты. Считал рулон. Он размотался, смотался - штампа как не бывало.
Хе-хе, у нас если был обрыв п/л, то надо было склеивать и печать ставить, емнип.
А работать ней - исключительно вдвоём, никак не меньше.
Хотя, чего греха татить, операторы и по одному работали, народа не хватало на смену.
я леди пенсионного возраста! По датам в моих постах могли бы догадаться, молодой человек!
как говорят - Фи, поручик!
Я только в гендерном смысле )
До поручика не дорос, разве что, подпоручик)
Это у Вас уже продвинутая трассировка. А мы сначала рисовали блок-схему алгоритма (на обратной стороне "распечатки", метра два-три). Выделяли максимально связанный элемент на принципиалке. И понеслась.
Волновой алгоритм Ли. И целый "дипломат" перфокарт.
А я уж было подумал, что это программа, написанная Скайшипом для обеспечения победы Байдена ...
Будучи студентом куражился Фортраном, как хотел.
в космос летал, моделировал работу микропроцессора Intel 8080 и пр.
а я студентом программы на фортране набивал на перфокартах
(синтаксис как раз под них был заточен, 80 колонок, признак продолжения...)
При необходимости перфокарты вручную редактировали - лишние дырки вырубками заклеивали, недостающие - лезвием вырезали.
Меня в детсве водили на дополнительное образование ещё при СССР, там стояла списанная с какого-то предприятия машина системы ЕС-1022, кажиццо, и привязанный к ней дисплейный класс с ГДР-овскими черно-зелёными видеотонами, от коих начинала трещать башка через полчаса пяления в них даже у малолетнего долбо******. Ввод-вывод осуществлялся с перфолент или печатной машины с кареткой, как у обычной пишущей машинки, коя прикольно тарабанила в ответ на команды программиста. Нам тогда показывали бейсик...
В ФМШ-18 нам доверили ломать ещё более старую технику - где память была на ферритовых колечках,
откуда пошло выражение "шить память".
А в институте стояла чумная машина системы СМ с 4 МБ, по моему, оперативной памяти, которая заводилась только если снять кожух и чем-нибудь подтолкнуть кулер охлаждения. Мы на ней считали предел прочности и величину раскрытия трещин в изгибаемой балке. Было жутко интересно. Но в курсовиках мы всё-равно считали всё это на бумаге.
См-4... стояла в моей школе. Фмш-542 при мифи.
Эх было время.
Ошибаетесь, оперативка на СМ-4 была не более 64-128Кбайт, ежели 32КБ то это ферритовые сердешники. Внешний съёмный диск был всего на 1,7МБ. Вот на СМ-1420 опервтивка была побольше, до полумегабайта, так и диски к ней шли на 20МБайт. Тогда ж ни порнухи, ни фотошопа. Сплошные цифирьки. А уж график красивый на АЦПУ вывести, вааще искусство.
За давностью лет могу конечно не помнить..
Но был шкаф центрального процессора и пару шкафов памяти. На графопостроителе помню выводили изображения любимых девок.
Скорее всего так - на СМ-1, памяти было 16Кб (килобайт, Карл!) и диск огромный, на 0,25Мб, ещё магнитная лента (шкаф с лентопротяжным механизмом)
Было дело, но в основном этим занимались те, кто ленился перебить карты на перфораторе. Ещё были самопальные "читалки", которые позволяли прочитать любую набитую перфокарту. Недавно рылся в архивах, до сих пор лежит.
Не ленился. Вручную правили тогда, когда перед зачетом нужно было срочно успеть прогнать программу (в один ящик кидаешь перетянутую резинками колоду перфокарт с щечками из оргстекла, а в другом через некоторое время находишь её с подложенным под резинку листингом АЦПУ),
а комната с перфораторами закрыта до обеда.
Страницы