Спасите кто-нибудь от циклов и массивов

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: Спасите кто-нибудь от циклов и массивов

Сообщение СерП » 20.05.2011 00:13:09

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

Даже если не брать экзотические :wink: варианты того, что можно изучить на всякий случай (ловля черноморских катранов на заднюю конечность карликового кенгуру или приёмы самозащиты от инопланетян-мозгоедов), есть сотни, если не тысячи реалистических. Изучить их все не представляется возможным. Равно как и угадать, что пригодится для каждого человека, даже если гадают методисты учебных заведений. Было бы хорошо, если бы меня в своё время научили основам логистики, поскольку довелось поработать в этой сфере. Но этому не учили даже на всякий случай. А программированию на всякий случай учили, хотя за всё время работы мне пришлось только пару макросов для Excel написать. И это отдалённо связано с усвоенным в институте, поскольку учили нас языку - вот здесь такая-то финтифлюшечка, вот здесь такая-то пимпочка, - а не программированию. Если я знаю что-то сверх этого, то потому, что выучил сам, и уж конечно не на всякий случай, а потому, что интересно/нужно.

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


скалогрыз,
1) скорее всего программирование ведётся на Borland Pascal, в лучшем случае на Delphi. Нужно сразу избавлятся от коде от конструкций: {$MODE Objfpc}{$H+}{$R+}
2) опять же. даже если и делфи, то в Borland совместимом режиме =) - никаких русских букв (ах не DOS!). Тип double или single не преподаются. real - решает!
3) конструкции типа try..finally. Многие дипломы защищают не зная об их существовании - в топку! =)
4) uses - в топку!

1), 2) Вы правы. Вспомнил об этом уже когда отписался. Отвыкаю я от Windows. Про double и single не знал.
3), 4) Конструкцию в топку или дипломы? :D О uses не понял.
а правило всегда одно: проще - лучше!

По-моему, правило должно звучать как-то иначе, вроде: делай как можно проще, но не проще, чем нужно. И проблема, как обычно, определить, что нужно в каждом случае.
СерП
новенький
 
Сообщения: 13
Зарегистрирован: 04.12.2010 01:20:10

Re: Спасите кто-нибудь от циклов и массивов

Сообщение minoshi » 20.05.2011 01:23:24

to СерП

Все-таки поддержу Вадима (aka Vadim). Человек ищущий помощи выложил бы здесь свой код (я пробывал(а) так, но не получилось) или хотя бы свои мысли.

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

Кстати, прошло уже два дня, а простого человеческого (или банального) "спасибо" Вы так и не получили, что косвенно подтверждает теорию Вадима.
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: Спасите кто-нибудь от циклов и массивов

Сообщение скалогрыз » 20.05.2011 03:51:30

2 СерП.

про 3) и 4). Мало того, что студенты не понимают всю прелесть модулей. Наличие в коде у блондинки "uses" сразу намекает, на то что это не она писала! тем более try..finally. зачем человека подставлять?!

minoshi писал(а):Кстати, прошло уже два дня, а простого человеческого (или банального) "спасибо" Вы так и не получили

зато срача развели! :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Спасите кто-нибудь от циклов и массивов

Сообщение Vadim » 20.05.2011 04:55:49

скалогрыз писал(а):зато срача развели!

Это потому, что люди тут все интеллегентные и высокоморальные. :D

СерП писал(а):Конструкцию в топку или дипломы? :D О uses не понял.

Это он так шутит. :D
А вот на счёт нынешних дипломов - святая правда, никуда, кроме как на растопку, они не годятся, потому как образования не подтверждают.;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Спасите кто-нибудь от циклов и массивов

Сообщение Putnick » 20.05.2011 10:23:49

vada писал(а):
И, заметьте, ни единого цикла. Мы спасены!


А теперь вторую задачу без массивов :)

Да легко:
Код: Выделить всё
var
A:^integer;
CN:^integer;
i:integer;
K:Integer;
Present:boolean;
begin
  GetMem(A, 10*sizeof(integer));
  CN:=A;
  for i:=0 to 9 do begin
    CN:=A+i;
    CN^:=random(100)
  end;
  WriteLn('Введите К в диапазоне от 0 до 99');
  ReadLn(K);
  CN:=A;
  Present:=false;
  for i:=0 to 9 do begin
    CN:=A+i;
    if CN^=K then begin
      Present:=True;
      Break
    end;
  end;
  if Present=True then WriteLn(K,' присутствует')
  else WriteLn(K,' отсутствует')
end.
Putnick
новенький
 
Сообщения: 62
Зарегистрирован: 18.03.2009 13:02:56

Re: Спасите кто-нибудь от циклов и массивов

Сообщение daesher » 20.05.2011 10:41:08

Плохо вы знаете современных студентов. Некоторые спохватываются к концу следующего семестра, да и то не особо.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Спасите кто-нибудь от циклов и массивов

Сообщение vada » 20.05.2011 16:19:17

Да легко:


А циклы то остались :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Спасите кто-нибудь от циклов и массивов

Сообщение скалогрыз » 20.05.2011 16:38:50

Putnick писал(а):Да легко:

утечка памяти! освобождать-то кто будет список?

2 vada, не заставляй путника на goto писать :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Спасите кто-нибудь от циклов и массивов

Сообщение kipar » 20.05.2011 17:31:52

Можно было сначала ввести К, потом вводить числа "массива" с помощью readln, и сразу среди них искать.
Код: Выделить всё
...writeln('Введите элемент A[5]:');
readln(A);
if A = K then I := 5;...

ни циклов, ни массивов. Но преподаватель не оценит.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Спасите кто-нибудь от циклов и массивов

Сообщение СерП » 20.05.2011 18:25:51

Может быть, я очень строго подхожу к этому вопросу, но не вижу для себя возможности определённо судить о человеке по косвенным данным. А не только несказанное "спасибо", но и невыложенный код считаю косвенными.
И потом, ещё раз предлагаю взглянуть на ситуацию с другой стороны. Я как правило в таких случаях не помогаю. Меня тут "подозревают" в рыцарстве, но первое, что я для себя отметил в просьбе, это отсутствие грамматических ошибок. Что подкупило на фоне многочисленных случаев с пятью-шестью ошибками в двух предложениях, хотя и не было единственной причиной того, что я написал за человека его работу. При этом кое-что вспомнил, узнал кое-что новое, и очень интересно поспорил, явно сформулировав - для себя - те мысли, которые, если бы не этот случай, ещё неизвестно сколько находились бы в неоформленном состоянии. (И сформулировал даже больше, чем здесь высказал). Уже за это я благодарен себе, что отступил от правила. И благодарен всем участникам обсуждения. А то уже отвык от того, что с людьми можно нормально поспорить.
(И погода улучшилась... А жизнь-то налаживается :mrgreen: ).

Мало того, что студенты не понимают всю прелесть модулей.

Гм. А у меня в задании курсовой требовалось использовать как раз внешний модуль. И мало того, самому его написать. Действительно, мельчает образование. :wink:
СерП
новенький
 
Сообщения: 13
Зарегистрирован: 04.12.2010 01:20:10

Re: Спасите кто-нибудь от циклов и массивов

Сообщение Putnick » 20.05.2011 22:22:53

скалогрыз писал(а):утечка памяти! освобождать-то кто будет список?

Спасибо, проглядел :oops: .
скалогрыз писал(а):2 vada, не заставляй путника на goto писать :mrgreen:

А зачем нам goto? Мы циклы развернем! :wink:
Или через рекурсию... :x
Код: Выделить всё
Const
  MN=9;
var
A:^integer;
K:Integer;
procedure R_Input(VN:integer);
var
  CN:^integer;
begin
  CN:=A+VN;
  CN^:=random(100);
  if VN<MN then R_Input(VN+1);
end;
function R_IsPresent(VN:integer):Boolean;
var
  CN:^integer;
begin
  Result:=False;
  CN:=A+VN;
  if CN^=K then Result:=True
  else if VN<MN then Result:=R_IsPresent(VN+1)
end;
begin
  GetMem(A, (MN+1)*sizeof(integer));
  R_Input(0);
  WriteLn('Введите К в диапазоне от 0 до 99');
  ReadLn(K);
  if R_IsPresent(0)=True then WriteLn(K,' присутствует')
  else WriteLn(K,' отсутствует');
  FreeMem(A)
end.
Putnick
новенький
 
Сообщения: 62
Зарегистрирован: 18.03.2009 13:02:56

Re: Спасите кто-нибудь от циклов и массивов

Сообщение informat » 22.05.2011 06:37:03

Тогда ещё и без лишних манипуляций с памятью. Все храним в стеке рекурсии.
Код: Выделить всё
Const
  MN=9;
  MaxN=100;

var
  K : integer;

function Read_and_Find(VN:integer; var K:integer):boolean;
var
  CN:integer;
begin
  CN:=random(MaxN+1);
  if VN>0 then Read_and_Find := Read_and_Find(VN-1, K) or (k=CN)
  else begin
    Write('Число 0 до ',MaxN,':');  ReadLn(K);
    Read_and_Find:= K=CN;
  end
end;

begin
  if Read_and_Find(MN, K) then WriteLn(K,' - есть.')
  else WriteLn(k,' - нет.');
end.


Только такое не сдать на зачёт. :D
Человек, который не в состоянии сам написать поиск элемента в массиве, не способен понять, что такое обратный ход рекурсии. Не то что объяснить это преподавателю.
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Re: Спасите кто-нибудь от циклов и массивов

Сообщение debi12345 » 23.05.2011 09:40:12

Массивы удобнее, списки быстрее.

???
Вообще-то наоборот (ессно, имеем ввиду реализацию спсика в виде класса). Массив как правило располагается в соседних ячейках памяти и адресуется через общий базовый адрес-регистр - поэтому прекрасно кэшируется процессором (а кэши у современных процов = 2М и более на ядро) - только через это для негигантских массивов получаем ускорение в сотни и тысячи раз.
Однако динамический массив может быть относительно (все же быстрее списка) медленным - в момент ресайзинга.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Спасите кто-нибудь от циклов и массивов

Сообщение daesher » 23.05.2011 09:58:47

informat писал(а):Только такое не сдать на зачёт. :D

Именно такое и надо давать любителям халявы. Работа преподавателю и студенту обеспечена. И даже есть шанс студенту сдать зачёт с N-го раза, если он разберётся в особенностях "собственной" программы :D
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Спасите кто-нибудь от циклов и массивов

Сообщение informat » 24.05.2011 14:24:38

Ещё пара задач для любителей "чесать правой ногой левое ухо". :wink:

:?: Задача 1
Написать программу, которая запрашивает два числа (пусть целых) и выводит максимальное из них.
Но! Из управляющих конструкций можно использовать только while.

:?: Задача 2
Написать программу, которая запрашивает три числа (пусть целых) и выводит минимальное из них.
Но! Из управляющих конструкций можно использовать только while.

Извращайтесь (оттачивайте технику программирования) на здоровье! :D
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Пред.След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru