Автор Тема: Программирование на паскале [решено]  (Прочитано 8066 раз)

Оффлайн Ortis

  • Завсегдатай
  • *
  • Сообщений: 65
Есть плагин для gdb, но с Паскалем он работать не будет. Мне не удалось приделать его и к Фортрану, хотя там он должен был бы работать. Думаю, пока наладить отладку в Geany в Паскале нереально. Если вам нужны серьёзные программы у вас один выход --- используйте Lazarus.

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
Есть плагин для gdb, но с Паскалем он работать не будет. Мне не удалось приделать его и к Фортрану, хотя там он должен был бы работать. Думаю, пока наладить отладку в Geany в Паскале нереально. Если вам нужны серьёзные программы у вас один выход --- используйте Lazarus.
Lazarus для подготовки к ЕГЭ слишком избыточен. Алгоритмы в консоли - наша главная задача, а в лазарусе такая консольная заготовка, что дети её ломают постоянно. Вот и получается, что пока лучшее решение - Вайн с АБЦ.

Оффлайн HAW

  • Завсегдатай
  • *
  • Сообщений: 1 247
    • Email
ну а почему не Python?

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
ну а почему не Python?
В ЕГЭ  рекомендуются Си, Паскаль, Бейсик и некий алгоритмический язык. Все тесты, олимпиады, РКМ, КИМ-ы на этих языках, проверяющие в подавляющем числе владеют этими языками. Поэтому, научив детей Питону или Руби он рэйл, рискуете быть непонятыми с вердиктом : "Тут нет решения."

Оффлайн HAW

  • Завсегдатай
  • *
  • Сообщений: 1 247
    • Email
Цитировать
Посмотрев примерные задания по ЕГЭ  (http://www1.ege.edu.ru/images/stories/
ege2010/demo_2010/inform_demo_2010.pdf), предлагаемые выпускникам школ в этом году
..............
Программы  же представлены на трёх языках, при чем в процедурной форме – Паскале, Бейсике, Си и алгоритмическом, свободные реализации которых есть в любом «школьном» дистрибутиве Linux. Плюс к этому, выбор языка для решения заданий по написанию программ неограничен вообще (можно, например, писать их на Erlang или на Perl, и они должны быть приняты к проверке и оценены наравне с остальными).
LXF №130 стр. 111

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
Цитировать
Посмотрев примерные задания по ЕГЭ  (http://www1.ege.edu.ru/images/stories/
ege2010/demo_2010/inform_demo_2010.pdf), предлагаемые выпускникам школ в этом году
..............
Программы  же представлены на трёх языках, при чем в процедурной форме – Паскале, Бейсике, Си и алгоритмическом, свободные реализации которых есть в любом «школьном» дистрибутиве Linux. Плюс к этому, выбор языка для решения заданий по написанию программ неограничен вообще (можно, например, писать их на Erlang или на Perl, и они должны быть приняты к проверке и оценены наравне с остальными).
LXF №130 стр. 111

Съесть то он съесть, так кто ж ему дасть? В смысле, сдать можно и на Аде, но кто ж его сможет проверить. Или, конечно, предполагается, что проверяющая комиссия ЕГЭ знает всё. А вот на олимпиаде, где тесты должны проходить программа, кто эти экзотические компиляторы/интерпретаторы заготовит?
Эхе-хе! Не любят Паскаль в Линуксе... На все просьбы обратить внимание на проблемы в одной IDE предлагают перейти на другую IDE. Ещё раз подчеркну, что с Паскалем для школы в Линуксе всё очень печально. http://www.linformatika.ru/content/zauskaem_abcpascal_v_wine_terminalnyi_server_altterminal_40. Что ж, перейду в следующем году на C+Kdevelop, там отладчик работает, GUI, простое консольное приложение легко запустить... А что тогда для домашнего использования взять? (Только двое школьников на Линуксе).

Оффлайн HAW

  • Завсегдатай
  • *
  • Сообщений: 1 247
    • Email
с Паскалем для школы в Линуксе всё очень печально.
может это связанно с широтой применения?
В питоне
turtl
pygame
макросы к: blender, OOo, GIMP, XChat....
web
что-то ещё.
ну PyQT и доступ к БД не упоминаем...

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Что ж, перейду в следующем году на C+Kdevelop, там отладчик работает, GUI, простое консольное приложение легко запустить...

Рекомендую все-таки переходить на Питон. C++ для массовой школы - это все-таки тяжело и вряд ли нужно. А на Питоне писать еще проще, чем на Паскале.

Проблемы с ЕГЭ и олимпиадами - решаемы. В ЕГЭ можно писать решение на любом языке, но лучше заранее проинформировать региональную экзаменационную комиссию о том, что у вас школьники будут писать решение на Питоне, чтобы они побеспокоились о подборе экспертов.

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

И если уж переходить на C++, то лучше на Code::Blocks, нежели KDevelop.

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
C++ для массовой школы - это все-таки тяжело и вряд ли нужно.

Просто Си, без классов и без ООП, для подготовки к ЕГЭ.

Оффлайн HAW

  • Завсегдатай
  • *
  • Сообщений: 1 247
    • Email
а интерес?

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
C++ для массовой школы - это все-таки тяжело и вряд ли нужно.

Просто Си, без классов и без ООП, для подготовки к ЕГЭ.

Почему когда говорят "С++", то обязательно думают про классы и ООП?

А вы не подумали, что C++ лучше C для обучения хотя бы тем, что писать cin >> n куда удобней, чем scanf("%d",&n), а также A=new int[N] куда проще, чем A=malloc(N*sizeof(int))?

На самом деле даже C очень тяжело для массовой школы. Например, вот две вещи, которые методически очень плохи в C/C++, просто первое, что приходит в голову с чем я в последнее время мучаюсь:

1. Отсутствие контроля выхода за границы массива.
2. Отсутствие требования обязательной инициализации переменных.

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

Когда вы учите на C/C++, то очень много усилий уходит на изучение именно особенностей языка программирования, так что даже с точки зрения "подготовки к ЕГЭ" C/C++ - не лучший выбор. Зачем на ЕГЭ писать на языке, на котором писать сложно?

Вот одна из задач C4 ЕГЭ прошлого года:

Цитировать
Заключительный этап олимпиады по астрономии проводился для учеников 9-11-х классов, участвующих в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 50 баллов. Для определения победителей и призеров сначала отбираются 45% участников, показавших лучшие результаты.

По положению, в случае, когда у последнего участника, входящего в 45%, оказывается количество баллов такое же, как и у следующих за ним в итоговой таблице, решение по данному участнику и всем участникам, имеющим с ним равное количество баллов, определяется следующим образом: все участники признаются призерами, если набранные ими баллы больше половины максимально возможных;

все участники не признаются призерами, если набранные  ими баллы не превышают половины максимально возможных.

Напишите эффективную  по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая по результатам олимпиады будет определять, какой минимальный балл нужно было набрать, чтобы стать победителем или призером олимпиады.

На вход программе  сначала подается число участников олимпиады N. В каждой из следующих N строк находится результат одного из участников олимпиады в следующем формате:

<Фамилия> <Имя> <класс> <баллы>

где <Фамилия> –  строка, состоящая не более, чем из 20 символов,  
<Имя> – строка, состоящая не более, чем из 15 символов, <класс> – число от 9 до 11, <баллы> – целое число от 0 до 50 набранных участником баллов. <Фамилия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> разделены одним пробелом. Пример входной строки:

Иванов Петр 10 17

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

Вот авторское решение на Паскале:
var
  cnt: array[0..50] of integer;
  c: char;
  i, k, N, b, S, minb: integer;
begin
  for i:=0 to 50 do
      cnt[i]:=0;
  readln(N);
  for i:=1 to N do
  begin
    repeat
      read(c);
    until c=' ';
    repeat
      read(c);
    until c=' ';
    readln(k,b);
    cnt[b]:=cnt[b]+1;
  end;
  S:=0;
  b:=50;
  while (S + cnt[b])*100<=N*45 do
   begin
    S:=S+cnt[b];
    if cnt[b]>0 then minb:=b;
    b:=b-1
   end;
  if (S+1)*100<=N*45 then
  begin
    if b>25 then minb:=b
  end;
  writeln(minb);
end.

Вот решение на Питоне:
N=int(input())
A=[0]*51
for i in range(N):
        L=input().split()
        A[int(L[-1])] += 1
i = 51
sum = 0
V = N * 45 // 100
while sum < V :
        sum += A[i]
        i -= 1
i += 1
if sum != V and i <= 25:
        i += 1
        while A[i] == 0 : i += 1
print(i)

Сравните хотя бы объем кода и его читаемость - а это очень важные критерии именно с точки зрения ЕГЭ.
« Последнее редактирование: 06.05.2010 02:21:39 от dk »

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
Да, аргументы "За" Питон сильны
sum += A[i] Школьники крайне трудно воспринимают конструкцию Паскаля sum:=sum+A[i] (попытка понять это как уравнение?)
Но, тем не менее,  зная ситуацию в местной комиссии, переходить на Питон пока погожу. Да, посмотрел на Питон в KDevelop и Geany и не нашёл отладчика. Я плохо искал? (Только не спрашивайте:"А зачем отладчик?" - надо!)

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Школьники крайне трудно воспринимают конструкцию Паскаля sum:=sum+A

inc(sum, A) чем в Паскале не годится?

Но у меня подобных проблем не возникало никогда. Мне кажется, что если у вас - это действительно проблема, то нужно вот эти проблемы решать, а не думать, что с C++ у вас всё будет проще. Будет ещё сложнее, так как подводных камней там куда больше.

Цитировать
Да, посмотрел на Питон в KDevelop и Geany и не нашёл отладчика.

KDevelop и Geany - это не "родные" среды для Питона.
Посмотрите на страницу http://server.179.ru/wiki/wakka.php?wakka=DenisKirienko/PythonIDE - я там описал все известные мне среды разработки для Питона. Имеет смысл использовать две - родную IDLE, но у нее очень скромные возможности, и Wing IDE 101 - она, к сожалению, закрытая, но бесплатная и кросс-платформенная.

Оффлайн derugu

  • Завсегдатай
  • *
  • Сообщений: 274
  • Филинов Андрей
...то нужно вот эти проблемы решать, а не думать, что с C++ у вас всё будет проще.
Я не простоты ищу, а отладчик нормальный. У детей то он в Паскале есть (Win+АБЦ), а вот в школе приходится АБЦ+Wine или VBox+АБЦ для демонстрации работы в режиме отладки. Вот почему хочу на Си перейти. Кстати, три года назад учил один класс на Си, в виде эксперимента - всё нормально было. Но тут другая напасть - в Линуксе с Си всё хорошо, а что для Винды детям предложить? Кроме TurboC,  CBuilder и Visual C раньше на винде ничего не использовал.

Оффлайн dk

  • alt linux team
  • ***
  • Сообщений: 989
    • Email
Но тут другая напасть - в Линуксе с Си всё хорошо, а что для Винды детям предложить? Кроме TurboC,  CBuilder и Visual C раньше на винде ничего не использовал.

Code::Blocks или Visual Studio Express Edition.

Лучше - Code::Blocks, он кроссплатформенный, работает под Linux и Windows. Но отладчик и в нем кривоватый.