|
|
Знаете ли Вы, что ... | |
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Программирование Обсуждаются вопросы мира программирования. Слово программирование отпугивает некоторых... Не бойтесь, заходите учитесь, помогайте, обучайте... |
Ответить |
|
Опции темы | Опции просмотра |
11.11.2010 20:56 | #1 | ||
ex-wild_John
Супермодератор |
Наболело, открываю подобную тему. Больше крик души, нежели серьёзное обсуждение.
В современных ВУЗах программированию учат как науке, а не как искусству. И это очень плохо. На выходе получаются "машины", которые могут составить любую программу, не задумываясь о красоте или элегантности кода. Сейчас обучаю группу по С++ - все студенты различных ВУЗов, все знакомы с языком. Проблема в том, что люди абсолютно не учат алгоритмов. Мало того, студентов не учат думать над решением - любая программа начинается не с нажатия клавиш на клавиатуре, а рождается в голове. Этого, к сожалению в ВУЗах нет. Простая задача: Вывести на экран все чётные числа от 1 до 1000, которые являются квадратами. Народ довольно бодро начал набивать код: Код:
... for (i=0;i<=1000;i++) { if (i%2==0 && ... Код:
for (i=2;i<=14;i++) cout<<4*i*i<<"\n"; Компьютер просит ввести число, пользователь вводит. Компьютер проверяет, если оно одновременно делится на 3 и на 2, выводит какую-либо строку на экран. Снова начинается тихий ужас: Код:
int a; bool d,e; cin>>a; d=a%2; e=a%3; if (d!=true && e!=true) { ... Исходя из написанного - нужно что-то делать с учебными программами в ВУЗах, чтобы обучали не только языкам программирования, но и логике и красоте составления программ. PS. Ну и для затравки задача (просьба реализовать на любом языке): Пользователь вводит число. Если оно оканчивается на 2 или на 7, компьютер выводит строку "Вам повезло"
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
||
|
Ответить |
"+" от:
|
11.11.2010 21:34 | #4 |
Герман пустил народ по ложному следу своими примерами.
А на самом деле переводим число в строку (string)... Последний элемент в этой строке будет под номером = (длина строки минус 1). Дальше, думаю, понятно). P.S: Герман, попроси студентов назвать имя функции (любой язык), что превращает число в противоположное. По необъяснимой причине большинство пытается эту функцию найти. Меньшинство же просто умножает число на "минус 1" (и поступает верно) Последний раз редактировалось Georgick; 11.11.2010 в 21:39. |
|
|
Ответить |
12.11.2010 00:09 | #7 | |
Google
software engineer
AKA:Y combinator
Сообщений: 418
+ 114
374/183
– 6
9/8
|
Цитата:
Почему захардкодили, почему не while ( ... <= 1000)? Притом захардкодили неправильно, пропустив 900=30^2. |
|
|
Ответить |
"+" от:
|
Реклама и уведомления | |
12.11.2010 11:01 | #8 | |
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505
1,372/657
– 164
33/27
|
Цитата:
И, к слову, о наболевшем - конечному пользователю, абсолютно пофик на красоту кода и оптимальность алгоритмов. Ему главное - чтоб покрасявше, и "а я вот тут в 1С такую прикольную штуку видел, а можно у нас её тоже сделать, это-ж не сложно, правда?" можно, еще, попросить поменять местами значения двух числовых переменных, не используя 3-ю, но это уже совсем жестоко. UPD. А можно, еще, не пускать за компьютер, пока на листочне блок-схему не нарисуют.
__________________
Are you my mommy? |
|
|
Ответить |
12.11.2010 14:58 | #9 | |
ex-wild_John
Супермодератор |
Цитата:
Насчёт 900 (30^2) и 4 (2^2) - мой баг, писал вечером, уставший. Правильнее будет. Код:
for (i=1;i<=15;i++) cout<<4*i*i<<"\n";
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
|
|
Ответить |
|