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

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

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

СерП
новенький
Сообщения: 13
Зарегистрирован: 04.12.2010 00:20:10

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

Сообщение СерП »

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 не понял.
а правило всегда одно: проще - лучше!

По-моему, правило должно звучать как-то иначе, вроде: делай как можно проще, но не проще, чем нужно. И проблема, как обычно, определить, что нужно в каждом случае.
Аватара пользователя
minoshi
постоялец
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

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

Сообщение minoshi »

to СерП

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

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

Кстати, прошло уже два дня, а простого человеческого (или банального) "спасибо" Вы так и не получили, что косвенно подтверждает теорию Вадима.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение скалогрыз »

2 СерП.

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

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

зато срача развели! :mrgreen:
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Vadim »

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

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

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

Это он так шутит. :D
А вот на счёт нынешних дипломов - святая правда, никуда, кроме как на растопку, они не годятся, потому как образования не подтверждают.;)
Putnick
новенький
Сообщения: 62
Зарегистрирован: 18.03.2009 12:02:56

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

Сообщение Putnick »

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.
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

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

Сообщение daesher »

Плохо вы знаете современных студентов. Некоторые спохватываются к концу следующего семестра, да и то не особо.
Аватара пользователя
vada
энтузиаст
Сообщения: 691
Зарегистрирован: 14.02.2006 12:43:17

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

Сообщение vada »

Да легко:


А циклы то остались :)
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение скалогрыз »

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

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

2 vada, не заставляй путника на goto писать :mrgreen:
kipar
новенький
Сообщения: 78
Зарегистрирован: 04.03.2010 11:15:54

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

Сообщение kipar »

Можно было сначала ввести К, потом вводить числа "массива" с помощью readln, и сразу среди них искать.

Код: Выделить всё

...writeln('Введите элемент A[5]:');
readln(A);
if A = K then I := 5;...

ни циклов, ни массивов. Но преподаватель не оценит.
СерП
новенький
Сообщения: 13
Зарегистрирован: 04.12.2010 00:20:10

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

Сообщение СерП »

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

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

Гм. А у меня в задании курсовой требовалось использовать как раз внешний модуль. И мало того, самому его написать. Действительно, мельчает образование. :wink:
Putnick
новенький
Сообщения: 62
Зарегистрирован: 18.03.2009 12:02:56

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

Сообщение Putnick »

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

Спасибо, проглядел :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.
Аватара пользователя
informat
новенький
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name
Контактная информация:

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

Сообщение informat »

Тогда ещё и без лишних манипуляций с памятью. Все храним в стеке рекурсии.

Код: Выделить всё

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
Человек, который не в состоянии сам написать поиск элемента в массиве, не способен понять, что такое обратный ход рекурсии. Не то что объяснить это преподавателю.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение debi12345 »

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

???
Вообще-то наоборот (ессно, имеем ввиду реализацию спсика в виде класса). Массив как правило располагается в соседних ячейках памяти и адресуется через общий базовый адрес-регистр - поэтому прекрасно кэшируется процессором (а кэши у современных процов = 2М и более на ядро) - только через это для негигантских массивов получаем ускорение в сотни и тысячи раз.
Однако динамический массив может быть относительно (все же быстрее списка) медленным - в момент ресайзинга.
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

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

Сообщение daesher »

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

Именно такое и надо давать любителям халявы. Работа преподавателю и студенту обеспечена. И даже есть шанс студенту сдать зачёт с N-го раза, если он разберётся в особенностях "собственной" программы :D
Аватара пользователя
informat
новенький
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name
Контактная информация:

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

Сообщение informat »

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

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

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

Извращайтесь (оттачивайте технику программирования) на здоровье! :D
Ответить