KRIEGSSPIELE!

GUDLEIFR СОЛДАТИКИ FORTH gudleifr.h1.ru
 
ФорумФорум  КалендарьКалендарь  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ВходВход  

Поделиться | 
 

 Задачки 1 и 2

Перейти вниз 
АвторСообщение
Gudleifr
Admin
avatar

Сообщения : 707
Дата регистрации : 2017-03-29

СообщениеТема: Задачки 1 и 2   Вс Июн 11, 2017 11:01 am

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

ПЛАН СОБЕСЕДОВАНИЯ

Анкета
1. Оценка по математике.
2. Оценка по иностранному языку.
3. Оценка по русскому языку.
4. Основная (планируемая) специальность (для которой требуется знание ПК).
5. На сколько вырастет Ваш доход после освоения Вами ПК?
6. Любимая книга по компьютерам (математике).

* День 1 *

1. Вводная лекция (2 часа):
а) требования, предъявляемые рынком к операторам ЭВМ;
б) цели и задачи курса;
в) организация учебного процесса и требования дисциплины;
г) используемая литература;
д) ответы на вопросы абитуриентов.

2. Контрольная по математике (2 часа):
а) решение квадратного уравнения;
б) доказательство теоремы Пифагора;
с) (доп.) обоснование формулы решения квадратного уравнения.

3. Сочинение на тему "Как я вижу свою будущую работу на ЭВМ" (2 часа)

* День 2 *

4. Пробная лекция "Органы управления Windows" (2 часа)

5. Проверка конспектов и выполнение практического задания - поиск заданной темы в справочной системе MS Word (2 часа).

ПРИМЕЧАНИЕ: при выполнении этого и следующего пункта все свободные абитуриенты находятся в соседней аудитории под наблюдением ассистента.

6. Собеседование (5-15 минут на человека).

7. Общее собрание с оглашением статистики результатов (30 мин).

ПРИМЕЧАНИЕ: Если кто-нибудь из абитуриентов уже имел опыт программирования, то, вместо сочинения, ему будет предъявлена распечатка небольшой программы (см. ниже) и предложено проанализировать ее работу, не вводя в компьютер.

Распечатка тестовой программы (BASIC).

10 OPTION BASE 1: DIM D$(1025): D$(1)="ЭТО КОТ": I=1: ON ERROR GOTO 80
20 PRINT D$(I);: INPUT O$: O$=LEFT$(O$,1)
30 IF I<512 THEN IF D$(I*2)<>"" GOTO 70
40 IF O$="Д" OR O$="д" THEN PRINT "УРРА-А!": I=1: GOTO 20
50 D$(I*2+1)=D$(I): INPUT "А КТО ЭТО";O$: D$(I*2)="ЭТО "+O$
60 INPUT "ЧЕМ ОТЛИЧАЕТСЯ";D$(I): I=1: GOTO 20
70 IF O$="Д" OR O$="д" THEN I=I*2: GOTO 20: ELSE I=I*2+1: GOTO 20
80 PRINT "НЕ ХВАТАЕТ МОЗГОВ!": END

***

Последнюю задачку иногда ради хохмы предлагаю "современным программистам". Каков результат?
1. Большинство просто демонстративно отказываются иметь дело с "древним неправильным нечитаемым языком". Издевательски предлагают что-то прочесть/перевести на современных [экзотических] языках. После того, как им объяснят суть алгоритма, начинают находить "ошибки" и "недостатки образования оппонента".
2. Некоторое количество программистов честно переводят алгоритм на современный [любимый] язык "один в один". При этом, понятно, вся "бейсиковость" обычно остается. Если в привычной им парадигме присутствуют "структуры" и "объекты", можно наблюдать их применение (списковое представление дерева ответов, разные типы для вопросов и ответов, попытки инкапсулировать ввод/вывод...), всегда в ущерб понятности и правильности.
3. Очень немногие подхватывают идею и начинают ее "улучшать". Как тот аспирант, которому я втюхал эту программу (понятно, с надлежащей структурной обфускацией) в далекие студенческие годы за лабораторную по экспертным системам. Тогда большого труда стоило объяснить, что все просто "просто", но "очень просто".
4. Когда, после большого вызова "на слабо" я привожу ссылку на литературу и подтверждающий код, меня всегда банят.

Сам ржач находится по адресам
http://www.gamedev.ru/flame/forum/?id=226776
http://www.gamedev.ru/flame/forum/?id=226833


Последний раз редактировалось: Gudleifr (Вс Сен 03, 2017 11:38 am), всего редактировалось 2 раз(а)
Вернуться к началу Перейти вниз
Посмотреть профиль
Gudleifr
Admin
avatar

Сообщения : 707
Дата регистрации : 2017-03-29

СообщениеТема: Re: Задачки 1 и 2   Вс Июн 11, 2017 11:24 am

Задания на исправление ошибок:

1. Допустим, я скачиваю из Сети журналы, постранично. Т.е. имеется огромная папка забитая файлами со схожими именами. Пришлось написать программку, ищущую дыры в нумерации. Все просто: dir или ls выдают имена файлов подряд, программе остается только подмечать дыры. Конкретные имена файлов почти не важны (см (б)).
а) Записать в нормальной форме примерное общее выражение "дыра между именами".
б) Какое свойство имен окажет наибольшее влияние на вид выражения (а)?

2. Когда-то для наглядности программы записывались в виде блок-схем. До последнего времени находятся изобретатели всяких универсальных методов построения всяких UML, XML-шаблонов, конструкторов и других средств наглядно показать "о чем идет речь". Каждому опытному программисту очевидно - для каждой по-настоящему новой задачи требуется свой особый язык блок-схем. Пусть, это будет лишь рисунок на салфетке или пачке "Беломора".
На какие части, требующие графического отображения "чтобы не забыть", вы делите свои программы?
Вернуться к началу Перейти вниз
Посмотреть профиль
Gudleifr
Admin
avatar

Сообщения : 707
Дата регистрации : 2017-03-29

СообщениеТема: Re: Задачки 1 и 2   Вс Сен 03, 2017 11:53 am

Чтобы не быть голословным: простейшие (что понятно из приведенного BASIC-кода) программы, реализованные "современными программистами".

1. Программа, "ЭТО КОТ?", приведенная выше:
Жуть-1:
 
Жуть-2:
 

2. Программа, поиска непустых подмножеств, имеющих нулевую сумму, множества из 5 чисел:

10 DATA 2, -7, 4, -1, 1
20 I=5:DIM A(I): P=1:GOSUB 70:N=K2-1
30 FOR J=1 TO N
40 P=2:S=0:GOSUB 70:IF S THEN 60
50 P=3:GOSUB 70:PRINT
60 NEXT J:END
70 K2=1:FOR K=1 TO I:ON P GOTO 90,100,120
80 K2=K2*2:NEXT K:RETURN
90 READ A(K):GOTO 80
100 IF K2 AND J THEN S=S+A(K)
110 GOTO 80
120 IF K2 AND J THEN PRINT K;
130 GOTO 80

Жуть:
 

3. Рисование дерева:

10 RANDOMIZE TIMER
20 DATA 0, 0, .125, .167, .25, .5, 1
30 DIM D(10): FOR I=1 TO 7: READ D(I): NEXT I
40 DEF FNJC=INT(RND*2+3.5)
50 DEF FNJP=RND*.2+.5
60 DEF FNJA=RND*.7
70 DIM X(10),Y(10),DX(10),DY(10)
80 DIM I(10),C(10)
90 W=320:H=200:P=1:X(P)=W/2:Y(P)=H:DX(P)=0:DY(P)=-H/2
100 SCREEN 1,1:CLS
110 C(1)=0:I(1)=0:GOTO 180
120 A=FNJA:IF I(P) AND 1 THEN A=-A
130 DX(P)=(DX(P-1)*COS(A)-DY(P-1)*SIN(A))*2.2/C(P)
140 DY(P)=(DX(P-1)*SIN(A)+DY(P-1)*COS(A))*2.2/C(P)
150 K=(1/C(P))*(FNJP+I(P))
160 X(P)=X(P-1)+DX(P-1)*K
170 Y(P)=Y(P-1)+DY(P-1)*K
180 LINE (X(P),Y(P))-(X(P)+DX(P),Y(P)+DY(P))
190 IF RND>D(P) THEN P=P+1:C(P)=FNJC:I(P)=0:GOTO 120
200 I(P)=I(P)+1:IF I(P)<C(P) THEN 120
210 P=P-1: IF P>1 GOTO 200
220 IF INKEY$="" THEN 220
230 SCREEN 2:CLS
240 SCREEN 0:CLS

Жуть:
 

P.S. Т.е. мы здесь видим программирование путем подстановки приблизительно подходящие места приблизительно подходящих парадигм. Благодаря этому, вместо использования выразительности современных языков по назначению, получается обфускация - сокрытие ошибок за "общепринятым мусором".
Вернуться к началу Перейти вниз
Посмотреть профиль
Спонсируемый контент




СообщениеТема: Re: Задачки 1 и 2   

Вернуться к началу Перейти вниз
 
Задачки 1 и 2
Вернуться к началу 
Страница 1 из 1
 Похожие темы
-
» Задачка для дошколят
» Решаем задачки по вождению ;)
» Логические задачки для всей семьи

Права доступа к этому форуму:Вы не можете отвечать на сообщения
KRIEGSSPIELE! :: Пользовательские разделы :: Gudleifr-
Перейти: