Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
forbon21
6 лет назад

Фортран 95 для тех, кто ни разу не программист. Часть 1

Простая программа

Для чего я все это задумал написать? Давно просила научить программировать себя моя жена. Вообще, сама по себе просьба: "Научи меня программированию", ставит того, кто в курсе в полнейший ступор. После выхода из этого ступора, сразу начинаются вопросы: "А для чего тебе программировать? Какие задачи собираешься решать?" Вопросы эти, как правило, остаются без ответа. Ну и правильно, нечего глупые вопросы задавать. Дело нужно делать, а не умничать.

Давайте займемся делом, т.е. попробуем разобраться, что такое программирование и с чем его едят. А для этого возьмем и попробуем нарисовать и запустить что-то простое на каком-нибудь простом алгоритмическом языке. Так как выбор языка для примера целиком и полностью оставлен на мою недобрую волю. В порыве необуздонного разгула моего волюнтаризьма я выбираю - Fortran 95. (Голос из зала: Фортран - отстой!) Да знаю. Раз публика требует, то попробую как-то объяснить свой выбор.

Вообще, языков программирования на сегодняшний день существует огромное количество. На слуху С, С++, Java (Голос из зала: Жаба - отстой!), Pascal, Lua, PHP, Perl и еще сотни других, перечисление
которых займет много места. Все-таки, почему я выбрал fortran 95? По моему мнению это довольно простой язык, во-вторых я его неплохо знаю, а в третьих освоишь один язык, остальные пойдут гораздо легче. Да и вообще, язык программирования в обучении программирования вещь совершенно не принципиальная.

Как установить себе на компьютер компилятор это оставим для самостоятельной работы. В linux это вообще никакого труда не составляет, а под Windows придется немного побегать с бубном. Все это решаемо. В конце концов есть онлайн компилятор, для изучения сойдет. (Голос из зала: Ссылку давай!) На: Compile and Execute FORTRAN-95 Online. Вполне сойдет.

Итак, давайте нарисуем первую программу:

program NiBumbum
 implicit none
end program NiBumbum

Программа называется "Нибумбум". Она правильная, ее можно скомпилировать, собрать и запустить. Все в ней хорошо, кроме одного- она ничего полезного не делает. на самом деле она делает кучу вещей, занимает процессор, резервирует память для данных, формирует код завершения, жжет электричество. Все это скрыто внутри и пользователю совершенно не видно. Тем не менее, в этой программе можно увидеть один очень важный аспект программирования - это наличие обязательных служебных слов. Существует ошибочное мнение, что компьютер - штука умная, но это не так. Компьютер штука на редкость тупая, пока точно не скажешь что нужно делать, фик что сделает. А уж если хочешь что-то попрограммировать, то тут нужно общаться с еще более тупой штуковиной - компилятором, т.е. с программой, которая будет переводить ваш исходный код в исполняемый. Так вот, компилятор - очень вредная и привередливая программа, если что-то не так, допустим не там стоит запятая, то работать не будет, причем не всегда скажет почему. Более того, требует выполнения всяких формальностей. В нашем случае это те самые три строчки в программе "НиБумбум". Хоть ты тресни, а напиши их, и не дай тебе боги Кобола пропустить хоть одну буквочку.

Кстати, раз уж зашла речь о формальностях, то программирование это процесс, где формальностям придается огромное значение. Нет, не так - огромнейшее значение! Причем у каждого языка программирования свой, характерный набор формальностей. Их нужно внимательно изучить и не делать ошибок. Вообще, в каждом букваре по языку программирования приведен список зарезервированных слов и если судьба заставит серьезно заниматься программированием, то эти слова нужно выучить, ну или распечатать на бумаге и повесить где-нибудь на видном месте.

Более сложная программа

Для более сложной программы, нужно выбрать простую задачку. Зачем? Вообще программирование и существует для того, чтобы решать задачи.Возьмем незамысловатую задачку, как то: подсчитаем сумму чисел от 1 до 10. (Голос из зала:У тебя, придурок, что? Калькулятора нет?) Задача простая, и да, можно обойтись калькулятором, можно пойти и более сложным путем, как-то записаться на курсы Excel и посчитать сумму в таблице. А мы это попробуем запрограммировать, на нашем любимом fortran 95.

program Sum101
 implicit none
 real:: a
 a=1+2+3+4+5+6+7+8+9+10
end program Sum101

Чудная программа. В ней все правильно. Она компилируется, ошибок нет. Более того, она что-то там считает. Но. Но, мы ничего не знаем о том, что там она насчитала. Не знаем и все. Как быть? Добавить вывод. В Фортране это оператор write или print. Последним пользоваться не рекомендую по разным причинам. Пользуйтесь write.

program Sum102
 implicit none
 real:: a
 a=1+2+3+4+5+6+7+8+9+10
 write(*,*) "a=", a
end program Sum102

Запускаем и получаем:

a=   55.0000000    
------------------
(program exited with code: 0)
Press return to continue    

Итак. Что же это у нас получилось и самый важный вопрос, как это все работает? Программка маленькая, а вопросов куча.давайте разбираться. Тут у нас добавилась новая строка:

real:: a

Что это за зверь такой? Строчка непонятная, нафиг она нужна? Что это за буквочка? Нафик она? Вопросов море. Будем разбираться. Буквочка a тут появилась неспроста, это переменная. Для тех, кто ни разу не программист это звучит как-то мутно. А то, что в учебниках и букварях, там довольно мутные объяснения. Попробуем попроще, для самых тупых (Голос из зала: Типа как ты?) Ну, да, типо как я. Вообще, понятие переменная - штука в программировании фундаментальная, если ее не понять, то дальше это дело можно смело бросать. Попытка первая: переменная это кусок памяти имеющее адрес, содержащий какие-то данные, которые могут измениться в процессе выполнения программы. Мутно как-то, согласен. Теперь попроще. Нам нужно указать компилятору место, где будет храниться сумма, которую мы вычислили. Мы говорим, что это место будет называться буквой a. Окей, говорит компилятор, согласен, но, что за тип переменной будет скрываться под буквочкой a? Тупой, тупее нейти вообще нельзя! Отвечаем, тип - real, то бишь, число с точкой, действительное, как в школе учили. Блин, а какие еще типы бывают? Всякие. нам для начала хватит двух типов - real, действительное число, которое может быть и отрицательным и integer - целое, без всяких там знаков после точки (запятой). Да, кстати, в программировании запятую в числе использовать не надо, причем совсем. Если мы пишем где-то в документах, то число пи запишем как 3,14, но если мы составляем программу, то нужно писать как буржуи исключительно с точкой 3.14. Если вставить запятую, то это будет ошибкой, даже если комипилятор это сожрет. Кстати, такие ошибки труднее всего выявляются. Какие еще типы бывают? В Фортране 95 это комплексные, строковые, логические и производные типы (определяемые), но это уже тонкости, которые нужно изучать на более высоком уровне. Накопим экспириенса, апнем левел и разберемся с типами. Кстати, изучение алгоритмических языков всегда начинается с изучения типов переменных, которыми этот язык оперирует.

Будем считать, что разобрались. Сразу возникает вопрос, а нафига взяли real, а не добрый integer? Вопрос законный, так как сумма целочисленных чисел есть целочисленное число. Скажем так, на всякий случай, пусть будет действительным числом, потому как может нам в будущем потребуется сумма с другими значениями, допустим денежку подсчитать, с копейками. Сразу оговорюсь, финансового типа переменных в Фортране нет.

Итак, с переменной разобрались, теперь посмотрим, как же мы вычислили сумму-то? Сделали это просто, не задумываясь, что называется в лоб. Просто приплюсовали все к переменной и всех делов. Главное цифирки не пропустить. На самом деле такой вариант решения задачи очень плох по многим причинам, и ничего в защиту сказать нечего. Но, с этим мы разберемся чуть позже.

Так, что же за штука такая write? Это очень важная вещь. Это тот самый оператор, который позволяет нам узнать, что же мы в итоге там насчитали.

Придеться опять заняться словоблудием. Собственно, процесс программирования это составление инструкция для компилятора, который, в свою очередь, переведет это в инструкции для процессора, т.е. мы последовательно, строчка за строчкой указываем что нужно делать и в каком порядке, с соблюдением абсолютно всех формальностей. Потом, запускаем собранную программу и смотрим результат. Для работы более-менее сложно и полезной программы, нужны исходные данные, алгоритм их обработки и система вывода результатов. Три блока: Ввод, расчет, вывод. Грубо, конечно, но все это примерно так и есть. То, что мы видим на современных компьютерах, всякие окна, кнопочки, окошки, писки и прочее это те самые блоки ввода и вывода результатов работы программы. Возьмем для примера браузер. Он воспринимает наши команды по открытию какой-то страницы, потом идет по адресу этой страницы, считывает всякую белиберду оттуда и показывает нам. Ввод, обработка, вывод. Все это нужно было запрограммировать, т.е. написать инструкции по каждому действию. Понятно, что это адцкий труд, и нужно как-то сделать так, чтобы облегчить работу программиста. Для этого существует куча способов, о которых, тем, кто не программист ни разу, говорить рановато.

На сегодня, нам пока вполне по силам разобраться в самых начальных вещах. Главное, что мы знаем, это переменные, и простейший вывод результатов.

В следующий раз, усложним нашу программку про сумму, и посмотрим что у нас получилось.

44
0.022 GOLOS
На Golos с January 2017
Комментарии (6)
Сортировать по:
Сначала старые