Recommended Posts

ОФФ. :D

Даны числа от 1 до 10. Надо напечатать 0, если число четное, и 1 ? в противном случае.

Как решают эту задачу:

Учитель информатики в школе:

if х=2 or x=4 or х=6 or x=8 or x=10 then write(0) else write(1)

Преподаватель в институте:

if not odd(x) then write(0) else write(1)

Студент:

write(x mod 2)

Профессиональный программер:

а:аггау[1..10]:=(1,0,1,0,1,0,1,0,1,0); write(a[x])

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
То есть разница несущественна... вообще.

 

Ну хз... а попробуй не 1000 а 10.000 или 100.000, чтобы снизить долю времени на запуск и окончание.

 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

При 10000.

Циклы с (&):

real    0m2.227s
user    0m1.940s
sys     0m0.283s

Деления c (% для определения четности):

real    0m2.609s
user    0m2.367s
sys     0m0.227s

Но в делении, с & для определения четности дает:

real    0m2.383s
user    0m2.147s
sys     0m0.230s

:)

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

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
По хорошему, все эти тесты к ничему, мне лень смотреть и разбираться с дизасм, как все это будет выглядеть после компиляции.

 

Выигрыш всё же есть небольшой. Но, конечно, быстрее всего будет работать пример выше :)

Профессиональный программер:
а:аггау[1..10]:=(1,0,1,0,1,0,1,0,1,0); write(a[x])

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Да выигрыш есть, но совсем не большой. Я прекрасно осознаю, что операция деления не есть лучший вариант. :)

Кстати, с -O3 будут real 0m1.831s для делений и, о чудо, real 0m2.133s для цикла. :P

а:аггау[1..10]:=(1,0,1,0,1,0,1,0,1,0); write(a[x])

Ну с этим-то никто не спорит. :)

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

ото нефиг вам делать. :)

 

$ time ./chess 1000 >/dev/null

real 0m0.074s

user 0m0.060s

sys 0m0.000s

 

 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

По теме:

А оно точно надо? :) Если задача стоит общаться с инженерами, то, как и в программировании есть уровень абстракции, на котором и следует общаться. Т.е. изучить понятия, в которых спрашивают клиенты и передать их в понятном виде инженерам. Т.е. минимум требуется понимание терминологии, чтобы передать точно запрос, максимум перевод из терминологии клиента в терминологию иженеров. При этом без дигностики - это задача инженеров. А уж инженеры пускай и разбираются, чего там не так в коде. Но если хочется перебраться к примеру в инженеры (зп увеличить или душа лежит), то тогда конечно оно того стоит.

Если есть конкретная ориентировка на работу, изучать лучше стоит именно те вещи, которые там и используются. Общие понятия вы освоите в любом случае, но время потратите меньше и пользы получите больше. Абстрактный пример: вы знаете PHP отлично, а вам нужно работать с Bitrix. Расковырять ядро и написать ручками нужное вы сможете быстро, а вот понять как оно там делается согласно их системе (и может вообще без программирования и за 5 мин.) - надо изучить систему все равно.

 

Так что если работа на С++ учите именно его и остальные инструменты, что используются в работе.

Насчет репититора: помощь при самостоятельном изучении это хорошо, но лучше всего, если кто-то из коллег согласится вас поучить в привязке к реальным задачам. Репититор скорее научит базовому, тому что можно узнать и из книжек.

Еще хороший метод: Вам что-то нужно в повседневной деятельности, что можно бы оптимизировать и это можно сделать с помощью программы. Возьмите и напишите это. Будет полезно как с точки зрения изучения, так и для реальной жизни.

 

По примерам приведенным: Задача примеров как правило помочь изучить принципы и обычно оговаривается, "не выводим "*-*-*-*-*-*-*-*-*" на четных строках и

-*-*-*-*-*-*-*-*- на нечетных" Нообычно примеры усложняются, а методика упрощается и код пишется типа Button1_OnClick{Product->Manufacturer="Bosch"; Product->Model="BR12333"; Product->Price=123; slqCommand="INSERT INTO ...} Т.е. пример сознательно не усложняют, но в реальности он иллюстрирует только работу того или иного объекта и с реальностью плохо свзан. А человек прочитав, воспринимает что так и надо делать "при добавлении продукта в базу данных"

А оптимизация это вообще отдельный вопрос и как правило идет в разрез с ООП, читаемостью и т.д.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Odpovědět na toto téma...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Kdo si právě prohlíží tuto stránku

    Žádný registrovaný uživatel si neprohlíží tuto stránku