Телескопы покупают здесь


A A A A Автор Тема: Изучаю Паскаль. Присоединяйтесь.  (Прочитано 12736 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Решил осуществить свою давнишнюю мечту: научиться программировать на Паскале. Несколько раз пытался и, даже, кое-что было написано, но это было для любителького компьютера, всё уже давно забыто и кануло в Лету. :(
По мере изучения буду решать различные задачи, листинги программ буду, при необходимости, выкладывать сюда.
Пока план такой: научиться программировать на Паскале в полном объёме. Научиться пользоваться различными полезными библиотеками. Далее, освоить визуальную среду программирования, скорее всего, Lazarus.
При подготовке к действу было скачено много материалов, отрыто приличное колличество полезных ресурсов. Ввиду возраста самого языка вызвало удивление множество учебных пособий по Паскалю. Даже выяснилось, что проводятся Олимпиады для школьников по нему. :)
Я не знаю, что получится из этой затеи и получится ли, вообще.
Время покажет.
Тем, кто считает, что это глупая затея и пустая трата времени, просьба не писать здесь. Я буду просить модераторов удалять сразу весь офтоп.
Конструктивная критика и полезные советы приветсвуются. :)

Для освоения основ языка остановился на учебнике для школьников: Песни о Паскале. На сайте книги и в тексте автор даёт ссылки на задачи для самостоятельного решения.
В книге автор использует IDE Free Pascal. У меня всё установлено. По непонятным пока причинам, правильно составленные программы в этой среде выдаёт ошибку и, естественно, не хочет выполняться. Я пока не могу разобраться почему так получается. Поэтому решил использовать другую, уже современную IDE-- Geany. Она является очень хорошим, современным редактором, поддерживает язык Паскаль, имеет очень приятный интерфейс, даёт возможность копировать, вставлять и использует всякие полезные плагины. :)
Но, самое удивительное, все программы которые не хотят идти в IDE FP, в ней великолепно компилируются и работают. ::)
Ну, как-то так.
Если у кого есть желание изучить Паскаль, присоединяйтесь! :)
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн GraY25

  • *****
  • Сообщений: 5 918
  • Благодарностей: 1011
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #1 : 16 Дек 2022 [14:00:44] »
А почему именно Паскаль?
Это какой-то исторический интерес?
• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #2 : 16 Дек 2022 [14:08:36] »
Так решил. 8)
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн gasha

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #3 : 17 Дек 2022 [00:18:35] »
Cartes du Ciel написан в Lazaruse на Pascale. Есть исходные коды.
На иноземном форуме cloudynights обитает автор.
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #4 : 17 Дек 2022 [00:50:09] »
Спасибо. Я видел её в перечне проектов. :)
Про Стар Калк я знал давно, что он на Паскале написан, но автор умер, некому продолжить дело. :(
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Parfen

  • *****
  • Сообщений: 4 241
  • Благодарностей: 42
    • Сообщения от Parfen
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #5 : 17 Дек 2022 [12:18:01] »
Давно уже баловался еще на турбо паскале в ДОСе. Дело дошло даже до графики - движение планет СС  :)
Прекрасный язык. До этого было баловство на бэйсике и учеба на фортране.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #6 : 17 Дек 2022 [12:58:22] »
Тогда напишу свою историю.
В ВУЗе изучал Фортран. В путяге обучался на токаря станков с ЧПУ. В реальности, нас к этим станкам и близко не подпускали (они стояли за бронестеклом, как наглядное пособие) и реальное обучение программированию было на советских программируемых калькуляторах, типа МК 21, или что -то в этом роде. Сам себе купил подобный калькулятор МК-61, искал японский с Бэйсиком, но не нашёл тогда и писал проги на этом. :(
Дальше спаял себе Синклер-128 (вариант Пентагон-128 с дисководом 5,25", выходом на принтер, музыкальным процессором) и писал проги на Бэйсике. В общем, софт под этот комп был довольно сырой. Затем приятель подбил на сбор компа Орион-про. Купил монохромный монитор. На этом компе пытались уже софт доводить до ума. На нём впервые я попробовал писать на Паскале, т.к. там дали нужные ПО. Было написано несколько простеньких программ и дальше дело не пошло. ???
Так что сейчас решил подойти к делу более основательно. :)
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #7 : 17 Дек 2022 [15:36:44] »
Я уже раньше пробовал в работе IDE Free Pascal и выяснились неприятные моменты:
-- редактор не поддерживает кириллицу;
-- не понятно как вводить апостроф, получаемый знак повернут зеркально по вертикальной оси. И при компиляции имею ошибку. :(
Сейчас совершил второй подход к этому редактору, думал, что чего-то недонастроил, но картина повторилась. >:(
Самое странное, у автора книги в редакторе можно писать русскими буквами, апострофы выглядят нормально. Может причина кроется, что у него Free Pascal работает под управлением Винды, а у меня Линукс? :-[
Как бы там ни было придётся пользоваться только Gaeny, там всё работает нормально. :)
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн DarkEar

  • ***
  • Сообщений: 157
  • Благодарностей: 26
  • Мне нравится этот форум!
    • Сообщения от DarkEar
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #8 : 17 Дек 2022 [16:04:45] »
Чем Lazarus отличается от современных версий Delphi?
Строю монтировку Наши монтировки!

Оффлайн ArtDen

  • *****
  • Сообщений: 772
  • Благодарностей: 51
    • Сообщения от ArtDen
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #9 : 17 Дек 2022 [17:41:09] »
Кстати, программа CCDciel для астросъёмки написана на паскале https://www.ap-i.net/ccdciel/en/start
Правда, у нас эту прогу почему-то не особо жалуют ))

Оффлайн Toth

  • *****
  • Сообщений: 2 616
  • Благодарностей: 179
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #10 : 17 Дек 2022 [18:04:36] »
Чем Lazarus отличается от современных версий Delphi?
Прежде всего тем, что Lazarus и для Linux  и для Windows.
А так, мелочами. По крайней мере, то что я использовал.
Например
x:=StrToFloatDef(Edit1.Text,0);
Если в Edit1 будет пробел перед или после числа, Delphi проигнорирует пробелы, а Lazarus не воспримет число, и выдаст 0 ( default ).
PS В Дельфы все же удобнее работать.
Кстати, сравнивал быстродействие прог по одним и тем же исходникам - иногда у Delphi и  Lazarus одинаково, иногда различаются в неск . раз. Может быть в настройках компилятора/линковщика дело. Я там не копался.
И у Lazarus .exe файл получается раз в 10..20 больше, чем у Delphi. Но если подшаманить, то почти такой же будет.
« Последнее редактирование: 17 Дек 2022 [18:10:41] от Toth »

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #11 : 17 Дек 2022 [21:19:45] »
На страницах Pascal ABCNet написано, что Free Pascal не умеет загружать все доступные ядра компьютера, и только компилятор Pascal ABCNet способен это делать. Там приводятся примеры. Но даже если это элементарный подлог, проверить можно только если в совершенстве знаешь возможности компилятора. :(
Искал и не смог найти, способен ли Free Pascal нагружать все ядра процессора. :(
Авторы Pascal ABCNet написали тестовый код на своём компиляторе и на разных других, и почти всегда побеждала их система. :-[
http://pascalabc.net/stati-po-pascalabc-net/28-meryaem-proizvoditelnost
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 616
  • Благодарностей: 179
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #12 : 17 Дек 2022 [22:19:40] »
написали тестовый код на своём компиляторе и на разных других,
Попробовал. Для Си++ надо немного исправить - добавить #include <cstdlib> ( там функция rand())
Паскаль ABC у меня нет, я к нему как-то .. какой-то он не-Паскаль..
Вот, что получилось.
Можете попробовать протестировать с рекурсией, например числа Фибоначчи :
Это для fpc (например Geany)
program perfRecur;

uses  SysUtils,DateUtils;

function fi(n:Integer):Double;
begin
 if n=0 then fi:=0
  else if n=1 then fi:=1
   else  fi:=fi(n-1)+fi(n-2);
end;

var i,n,m:Integer;
   z:Double;
  t0:TDateTime;
begin
 for n:=30 to 46 do
  begin
   t0:=Now;
   z:=fi(n);
   WriteLn((Now-t0)*86400);
  end;
 ReadLn;
end.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #13 : 17 Дек 2022 [23:00:50] »
Прога не компилируется, выдаёт ошибку:
perfRecur.pas(31,1) Fatal: illegal character "'\Uffffffff" ($C2)
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
Сборка завершилась с ошибкой.
Подчёркивает вот эту строку:
if n=0 then fi:=0
Не пойму чего ему не нравится.
Про Pascal ABCNet читал гневные коменты одного программиста. Он нашёл там в компиляторе грубую ошибку, написал вагон писем авторам, а ответа так и не получил и баг даже не хотят исправлять. Единственное, что я понял, что он что-то профессиональное там программирует и упирается в какой-то косяк Pascal ABCNet. А ввиду того, что авторы позиционируют своё детище всего лишь, как учебное пособие и не хоят ничего править. :-[
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 616
  • Благодарностей: 179
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #14 : 17 Дек 2022 [23:22:26] »
Не пойму чего ему не нравится.
Да, я сейчас скопировал из своего поста, сунул в Geany - тоже ругается. Это невидимый символ с кодом C2 почему-то прицепился, причем в 3-х местах.
Непонятно, почему такое в тегах [коде] .. [/коде]  .
Кстати, такое бывает при копировании исходников из инета, там тоже например пробелы "неправильные" - не с кодом 20, а с кодом A0 иногда. Я даже спец. прогу сделал для очистки.

Вот, тогда в текстовом файле, проверял. Плюс еще ту прогу с матрицами, но для Linux переделанную, проверял на Bodhi Linux. Там без uses Windows ..  и без GetTickCoun

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #15 : 18 Дек 2022 [00:05:54] »
Да сейчас работают без ошибок. :)
Прога Fibo что должна выдать в конце. Не могу понять где она заканчивается.
Матрицу считает 16,5 секунд. :-[
Засекал телефонным секундомером.
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 616
  • Благодарностей: 179
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #16 : 18 Дек 2022 [00:26:44] »
Прога Fibo что должна выдать в конце.
t0:=Now;  // в t0 запоминается  текущее время в днях от 30.12.1899
  z:=fi(n);
  WriteLn((Now-t0)*86400); // выводит на экран время на выполнение fi(n) в секундах
 end;
 ReadLn;  // прога ждет нажатия любой клавиши. Иначе сразу окошко закроется. Хотя, если запускать из Geany - не закроется.
Там в цикле будут выдаваться длительности расчета чисел Фибоначчи от Ф30 до Ф40. См рис - там от 36 до 40, правда в Виндовс, но в Линукс так же будет.

Можно без цикла for, просто для одного n.

Матрицу считает 16,5 секунд. :-[
Засекал телефонным секундомером.
А зачем, она же выдаст время в сек - WriteLn((Now-t)*86400);
« Последнее редактирование: 18 Дек 2022 [00:37:32] от Toth »

Оффлайн Витторио

  • *****
  • Сообщений: 845
  • Благодарностей: 159
    • Сообщения от Витторио
    • Мир глубокого космоса
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #17 : 18 Дек 2022 [00:58:50] »
Много лет программировал на Паскале (в Лазарусе) - было такое хобби. Много софта написал для работы, кое-какие программы даже удавалось на сторону продавать.
Потом понял, что надо эволюционировать, выбирал между Java и Python, начал с первого, в итоге остановился на последнем, т.к. в Java очень долгий срок вхождения, в Python гораздо быстрее можно получить готовый продукт да и для программирования в одиночку он больше приспособлен. По возможностям оба языка - на порядки круче Паскаля, у меня получалось реализовать любые свои желания.

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 442
  • Благодарностей: 163
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #18 : 18 Дек 2022 [01:00:25] »
Вот что у меня получилось.
Теперь понять бы что бы это значило.
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 616
  • Благодарностей: 179
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #19 : 18 Дек 2022 [01:16:36] »
Теперь понять бы что бы это значило.
Это значит, что если у вас for n:=30 to 46 do .. то 30-е число Фибоначчи считалось 0.025 сек , 31-e 0.039 сек, ... ит.д., 46-е 53.9 сек.
Там числа в эспоненциальной форме , типа 5.39*10^1
Это вроде много для компа, вручную быстрее, но там рекурсия, причем двойная. То есть подпрограмма-функция fi вызывает сама себя.
Чтобы посчитать 46-е число, надо посчитать 45-е и 44-е, а чтобы посчитать 45-е - надо ... и т.д.
У меня чуть побыстрее, правда давно считал, а результаты от раза к разу немного меняются.