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


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

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

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #100 : 16 Янв 2023 [20:48:53] »
А есть ли возможность узнать TLE МКС не актуальные данные, а на определенную дату (несколько месяцев назад), может где-то хранится история изменений TLE?
Вообще по любым TLE ( кроме военных западных ) - сюда https://www.space-track.org/auth/login
Но там надо зарегистрироваться. Я зарегился лет 5 назад, как amateur astronomer без проблем.
Я API-вызовы делаю для этих вещей. Например ( только без скобок )
(https://www.space-track.org/basicspacedata/query/class/tle/NORAD_CAT_ID/25544/orderby/EPOCH%20desc/EPOCH/>2022-12-01/format/tle)
- от 1.12.2022 до сегодня
(https://www.space-track.org/basicspacedata/query/class/tle/EPOCH/2022-12-01--2022-12-10/NORAD_CAT_ID/25544/orderby/TLE_LINE1%20ASC/format/tle) - от 1.12.2022 до 10.12.2022

Вроде можно было еще на Целестрак - https://celestrak.org/NORAD/elements/
Там без регистрации. Я как-то делал запрос на прошлые даты, приходил нормально. Но уже не помню как.

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

  • *****
  • Сообщений: 5 587
  • Благодарностей: 170
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #101 : 19 Янв 2023 [23:30:41] »
Решил задачу (см. картинку). :)
Получилась прога:
program Z_16_D;

var n : byte; { начальное направление движения: 1, 2, 3, 4 }
k : byte; { управляющая команда 1-- поворот направо, 2-- поворот налево, 3-- поворот кругом }

S : string;

BEGIN
Write('Ведите направление движение танка от 1 до 4 '); Read(n); { задали начальное направление }
repeat

Write('Задайте команду от 1 до 3 '); Read(k);
if k=0 then break; { выход из цикла }
case k of
1 : begin { определяем направление при команде --1-- направо и сожраняем в n новое значение направления }
case n of
1 : begin S:='восток'; n:=2; end;
2 : begin S:='юг'; n:=3; end;
3 : begin S:='запад'; n:=4; end;
4 : begin S:='север'; n:=1; end;
end;
end;
2 : begin { определяем направление при команде --2-- налево и сохраняем в n новое значение направления }
case n of
1 : begin S:='запад'; n:=4; end;
2 : begin S:='север'; n:=1; end;
3 : begin S:='восток'; n:=2; end;
4 : begin S:='юг'; n:=3; end;
end;
end;
3 : begin { определяем направление при команде --3-- кругом и сохраняем в n новое значение направления }
case n of
1 : begin S:='юг'; n:=3; end;
2 : begin S:='запад'; n:=4; end;
3 : begin S:='север'; n:=1; end;
4 : begin S:='восток'; n:=2; end;
end;
end;
else S:='кудыкину гору!' { выводит сообщение при ошибочных данных }
end;
Writeln('танк едет на ', S); { выводит результат-- направление танка }
Readln; { останов }
until false; { бесконечный цикл }



END.

Оно, конечно, работает, но у меня возникли сомнения. Книга написана для школьников, программа получилась не тривиальная. Или я неправильно состаляю программу-- она должна быть проще, либо школьники должны быть шибко вумными. :-[
Можно ли её переписать как-то намного проще, чем у меня?
При этом автор, якобы, программирует во FP при этом вводит русский текст кириллицей, а у меня FP на дух не переносит кириллицу. :(
Я сам пишу прогу  в Geany, поэтому кириллица проходит нормально. Но как автор умудрился во FP её запихнуть? :-\
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #102 : 20 Янв 2023 [00:31:06] »
Так чуть покороче, и легче воспринимать
program Panzer;

procedure change_direct(com:Byte; var direct:Byte);  // типовые действия оформить как подпрограмму процедуру или функцию
begin
 case com of
  1:if direct=4 then direct:=1 else Inc(direct);
  2:if direct=1 then direct:=4 else Dec(direct);
  3:if direct<3 then direct:=direct+2 else direct:=direct-2;
 end;
end;

var dire, cmnd : byte; // лучше присваивать говорящие идентификаторы
const NAME_DIR:array [1..4] of string=('North','East','South','West');

begin
 Write('initial direction:1 -North, 2 - East, 3 - South, 4 -West ');
 ReadLn(dire);
 repeat
  Write('command: 1--turn right, 2-- turn left, 3-- turn around, 0 - quit  ');
  ReadLn(cmnd);
  change_direct(cmnd,dire);
  if cmnd < 5
   then Writeln('the tank is driving ', NAME_DIR[dire])
   else Writeln('to hell ! ');
 until cmnd = 0;
end.

Оффлайн rdc

  • **
  • Сообщений: 58
  • Благодарностей: 18
  • Мне нравится этот форум!
    • Сообщения от rdc
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #103 : 20 Янв 2023 [01:29:58] »
не знаю паскаль, но на питоне можно сделать вот так:
x=int(input('Ведите направление движение танка от 1 до 4  '))-1
a=[1,3,2]
b=['север','восток','юг','запад']
while True:
    print('танк едет на '+b[x])
    c=int(input('0 - СТОП, 1 - направо, 2 - налево, 3 - кругом  '))
    if c==0:
        break
    x=(x+a[c-1])%4

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

  • *****
  • Сообщений: 5 587
  • Благодарностей: 170
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #104 : 20 Янв 2023 [06:51:07] »
Так чуть покороче, и легче воспринимать
Никакие массивы и процедуры я ещё не проходил. :-[
Это 16 глава книги Песни о Паскале. То бишь надо решить задачу изученными средствами. Изучил только условный переход, множественный выбор, логические выражения и случайные числа. :(
При этом, в книге нет ответов. Может у него где-то отдельно на сайте, но я пока не нашёл.  :-[
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #105 : 20 Янв 2023 [09:10:19] »
Никакие массивы и процедуры я ещё не проходил.
Ну, можно убрать процедуру, и вместо её вызова
change_direct(cmnd,dire);вставить
case cmnd of
  1:if dire=4 then dire:=1 else Inc(dire);
  2:if dire=1 then dire:=4 else Dec(dire);
  3:if dire<3 then dire:=dire+2 else dire:=dire-2;
 end;
Эту часть тоже можно сократить, как сделали в Питоне, через вычисление остатка (в Паскале mod), но там нужен будет массив [1,3,2]

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

  • *****
  • Сообщений: 5 587
  • Благодарностей: 170
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #106 : 20 Янв 2023 [12:25:30] »
Я так понимаю, что задача была на составление множественного выбора. Просто он не объясняет по тексту в главе, как решаются такие задачи, что надо вводить вложенные операторы CASE и вместо одного оператора пихать два в операторных скобках. Я, как бы, раньше учил программирование и то не сразу въехал, как надо изголиться, а те кто изучает с чистого листа, так, вообще, без подсказки не разберутся.
dire -- это какая-то команда, или переменная? :-[
Для использоания MOD, там была предыдущая задача и при этом он дал подсказку, как осуществить решение, здесь он подсказки не дал.
Так, в принципе, решение у меня правильное, либо огород нагорожен? :(
То бишь, я сделал перебор команд и в каждой команде перебор направлений с запоминанием нового направления. Это правильно?
Я сначала хотел найти сумму направление + команда, но оказалось, что эта сумма не образует никакой закономерности. :(
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #107 : 20 Янв 2023 [12:34:02] »
dire -- это какая-то команда, или переменная?..
Переменная, она же объявлена var dire ..
..Так, в принципе, решение у меня правильное, либо огород нагорожен?
Вроде работает как надо, значит правильно.

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

  • *****
  • Сообщений: 5 587
  • Благодарностей: 170
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #108 : 20 Янв 2023 [12:58:05] »
Спасибо! Буду следующую задачу, с шахматами, решать. 8)
Так чуть покороче, и легче воспринимать
Проверил вашу прогу, обнаружил, что если даёшь команду = 4, то программа выдаёт ответ и не говорит, что это ошибка, т.к. команды 4-- нету. :(
« Последнее редактирование: 20 Янв 2023 [13:06:38] от Аурипигмент »
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Онлайн CyberManiac

  • *****
  • Сообщений: 8 487
  • Благодарностей: 477
  • Я ♥ オリオン!
    • Сообщения от CyberManiac
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #109 : 20 Янв 2023 [13:03:28] »
[Задумчиво] Четыре направления... Три команды... Массив предварительно посчитанных констант 4*3 и получение результата делается в одну строчку.

const arr: array [1..3, 1..4] of Integer =
((2, 3, 4, 1),
 (4, 1, 2, 3),
 (3, 4, 1, 2)
);

direct := arr[cmd, direct];

Да, йа нигилистичный падонаг.
Трэш, угар и астрономия!
沖縄最高

Оффлайн Проходящий Кот

  • *****
  • Сообщений: 19 348
  • Благодарностей: 426
    • Сообщения от Проходящий Кот
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #110 : 20 Янв 2023 [13:03:33] »
Я так понимаю, что задача была на составление множественного выбора. Просто он не объясняет по тексту в главе, как решаются такие задачи, что надо вводить вложенные операторы CASE и вместо одного оператора пихать два в операторных скобках. Я, как бы, раньше учил программирование и то не сразу въехал, как надо изголиться, а те кто изучает с чистого листа, так, вообще, без подсказки не разберутся.
dire -- это какая-то команда, или переменная? :-[
Для использоания MOD, там была предыдущая задача и при этом он дал подсказку, как осуществить решение, здесь он подсказки не дал.
Так, в принципе, решение у меня правильное, либо огород нагорожен? :(
То бишь, я сделал перебор команд и в каждой команде перебор направлений с запоминанием нового направления. Это правильно?
Я сначала хотел найти сумму направление + команда, но оказалось, что эта сумма не образует никакой закономерности. :(
Есть начальное решение задачи и дальше его оптимизация, рефакторинг.
Но это актуально при более менее больших программах.

Оффлайн ma][im

  • *****
  • Сообщений: 4 984
  • Благодарностей: 1445
  • Награды Неоднократный победитель конкурса астрофото
    • Сообщения от ma][im
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #111 : 20 Янв 2023 [13:18:42] »
Проверил вашу прогу, обнаружил, что если даёшь команду = 4, то программа выдаёт ответ и не говорит, что это ошибка, т.к. команды 4-- нету.
Я бы вам рекомендовал посмотреть сайты с олимпиадными задачами по программированию и автоматизированной системой тестирования, например этот:
https://acm.timus.ru/problem.aspx?space=1&num=1016
Там сразу будет интереснее решать задачи, чем просто самому их ковырять, тем более проводятся соревнования онлайн по быстрому программированию. Хотя там задачки бывают которые можно и неделю решать, а не за несколько минут :) Еще рекомендуется к прочтению не только книги по языку, но и по алгоритмам - Д. Кнут "Искусство программирования" например, решения некоторых классических задач есть на сайте algolist.
Давно отошел от олимпиад, но было очень интересно и весело в институте, был даже на четвертьфинале мира в Саратове, там конечно машины по решению олимп. задач.
« Последнее редактирование: 20 Янв 2023 [13:25:32] от ma][im »
мы не ангелы парень.
(кликните для показа/скрытия)

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #112 : 20 Янв 2023 [13:25:05] »
обнаружил, что если даёшь команду = 4
а, да.. очепятка у меня. Надо if cmnd < 4 вместо <5

Оффлайн rdc

  • **
  • Сообщений: 58
  • Благодарностей: 18
  • Мне нравится этот форум!
    • Сообщения от rdc
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #113 : 20 Янв 2023 [16:18:08] »
сайты с олимпиадными задачами по программированию и автоматизированной системой тестирования
Вот ещё https://codeforces.com/

Онлайн CyberManiac

  • *****
  • Сообщений: 8 487
  • Благодарностей: 477
  • Я ♥ オリオン!
    • Сообщения от CyberManiac
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #114 : 20 Янв 2023 [16:31:01] »
Я бы вам рекомендовал посмотреть сайты с олимпиадными задачами по программированию
С олимпиадных задач начинать точно не стоит. Да и вообще тратить на них время, если вы не школьник, собирающий бонусные баллы для поступления. Потому что практического смысла они обычно не имеют и предназначены для вывихивания моска.

В контексте тематики форма было бы актуальнее разобрать исходники из книги Мееса (в тех изданиях, где ещё на Паскале) до полного понимания. А потом переписать их в духе ООП - уже для понимания объектно-ориентированной парадигмы.
Трэш, угар и астрономия!
沖縄最高

Оффлайн ma][im

  • *****
  • Сообщений: 4 984
  • Благодарностей: 1445
  • Награды Неоднократный победитель конкурса астрофото
    • Сообщения от ma][im
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #115 : 20 Янв 2023 [17:23:25] »
Да и вообще тратить на них время, если вы не школьник, собирающий бонусные баллы для поступления. Потому что практического смысла они обычно не имеют и предназначены для вывихивания моска.
Да, такое мнение тоже имеет место быть, программисты же разные бывают - кто-то формочки рисует в бильдере/дельфи, там ессно не нужно знание алгоритмов и моск может быть как у первокурсницы чистый и наивный ;)
мы не ангелы парень.
(кликните для показа/скрытия)

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #116 : 20 Янв 2023 [17:30:59] »
кто-то формочки рисует в бильдере/дельфи, там ессно не нужно знание алгоритмов и моск может быть как у первокурсницы чистый и наивный
А потом переписать их в духе ООП - уже для понимания объектно-ориентированной парадигмы.
Я хоть и рисую формочки в Делфы и Лазарусе, но до си пор не постиг высокого духа ООП. Пробовал создавать свои классы, потом бросил, мне хватает record  и array. А вот алгоритмы иногда приходится довольно замысловатые создавать.

Оффлайн ma][im

  • *****
  • Сообщений: 4 984
  • Благодарностей: 1445
  • Награды Неоднократный победитель конкурса астрофото
    • Сообщения от ma][im
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #117 : 20 Янв 2023 [17:35:33] »
А вот алгоритмы иногда приходится довольно замысловатые создавать.
И это отлично! мозг быстро костенеет если его не тренировать, я бы наверное уже не выиграл даже в своем инсте топспидкодера..  ::)
Все эти формочки, будь они не ладны ;D
мы не ангелы парень.
(кликните для показа/скрытия)

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

  • *****
  • Сообщений: 5 587
  • Благодарностей: 170
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #118 : 20 Янв 2023 [20:49:41] »
Урааа! Нашёл книжку с ответами на сайте автора. :)
Начал сравнивать и увидел, что много чего не совпадает. Самое странное, что по тексту автор говорит, что прервать цикл лучше вначале ком-ой break, а в ответах не прерывает и получается, что цикл один раз весь выполняется и перед выходом из него пишет глупость (мусор), типа, вам 0 лет. :-\
При этом, в ответах применяет приёмы, которые в уроке не рассматривал. :(
Получается, что после того, как самостоятельно поломаешь голову, составляя программу,, надо, всё равно, смотреть ответы и исправлять косяки. :-[
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 662
  • Благодарностей: 181
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #119 : 20 Янв 2023 [21:13:01] »
break, а в ответах не прерывает
Если есть вложенные циклы for или  while или repeat , то break во внутреннем цикле прерывает только свой цикл. Внешний цикл продолжается, и этот break может снова повториться.