Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Курс молодого бойца (читать - программиста)   Найти похожие ветки 

 
OneFragLeft ©   (2004-12-25 02:07) [0]

Напишите, пожалуйста, все типичные задачи,
которые должен уметь выполнять начинающий
программист, осваивающий Delphi. Т.е. вроде:
уметь запуздырить иконку в трей  и т.д.

p.s.: Стандартные алгоритмические задачки не предлагать,
а задачи, связанные с программированием в Delphi и Win32.


 
default ©   (2004-12-25 02:10) [1]

вот эту реши попробуй
"Есть массив, упорядоченный по возрастанию, например, 0123456789
 Надо его переупорядочить "горкой в центре": 0246897531
 Цифры приведены для примера, на самом деле массив может быть любой заданной
 длины N,
 и числа там тоже любые, только что упорядоченные.
 Основная проблема - сделать это за время O(N) с затратами памяти меньшими, чем
 O(N).
 Решение лучше всего оформить в виде процедуры ReOrder(a:array of Integer); "
с пятничных задачек осталась


 
Profi ©   (2004-12-25 02:15) [2]

default ©   (25.12.04 2:10) [1]
Встречный вопрос: в массиве четное или нет число элементов?


 
Игорь Шевченко ©   (2004-12-25 02:16) [3]


> уметь запуздырить иконку в трей  


Этого он уметь не должен. И лоток CDROMа тоже не должен уметь выдвигать. А самое главное, он не должен уметь прятать процесс под XP.

Таких не берут в программисты.


 
default ©   (2004-12-25 02:17) [4]

Profi ©   (25.12.04 02:15) [2]
N-любое(целое неотрицательное)
она так и не была решена кстати


 
Profi ©   (2004-12-25 02:21) [5]

default ©   (25.12.04 2:17) [4]
Просто если N - четное, то симметричная горка не получится.


 
Просто Джо ©   (2004-12-25 02:22) [6]

Игорь Шевченко ©   (25.12.04 02:16) [3]

Вот-те на - огорошили человека!
:)


 
default ©   (2004-12-25 02:23) [7]

Profi ©   (25.12.04 02:21) [5]
пример-то дан для чётного N=10


 
Johnmen ©   (2004-12-25 02:25) [8]

>OneFragLeft ©  (25.12.04 02:07)
>p.s.: Стандартные алгоритмические задачки не предлагать,
>а задачи, связанные с программированием в Delphi и Win32.

Не быть тебе программистом...


 
Profi ©   (2004-12-25 02:25) [9]

default ©   (25.12.04 2:23) [7]
Ок! Слева четные, справа нет. Либо то что больше (четное оно или нет) в центре. Понял.


 
OneFragLeft ©   (2004-12-25 02:34) [10]

Johnmen ©   (25.12.04 2:25) [8]
Да вроде и не собираюсь:)


 
Johnmen ©   (2004-12-25 02:37) [11]

>OneFragLeft ©  (25.12.04 02:34) [10]
>Да вроде и не собираюсь:)

А зачем вопрос? Для общего развития?


 
OneFragLeft ©   (2004-12-25 02:47) [12]

Да просто можно было собрать все ответы на типичные задачи.
Сделать FAQ и показывать его всем новичкам:), чтобы не приставали с
заезжеными на сто рядов вопросами. По-моему будет толк.
Да и самому интересно узнать что я ещё не делал.


 
Johnmen ©   (2004-12-25 02:56) [13]

>OneFragLeft ©  (25.12.04 02:47) [12]
>Да и самому интересно узнать что я ещё не делал.

Такое впечатление, что ты ещё ничего не делал...:)
Ибо страстное желание поучить и поделать факи для других возникает именно у новичков...


 
olookin ©   (2004-12-25 03:06) [14]

А вам не надоело выяснять свойства программиста? Ведь вообще пока неясно, что есть как таковой программист...


 
VMcL ©   (2004-12-25 09:57) [15]

>>olookin ©  (25.12.04 03:06) [14]

Почему неясно? Мне, например, ясно. Программист, врач, учитель etc. - это профессии.


 
Ega23 ©   (2004-12-25 10:01) [16]

Реши задачу нахождения путей Гамильтона в графе.


 
Blackman ©   (2004-12-25 11:07) [17]

>Ega23 ©   (25.12.04 10:01) [16]
Пугаешь ? :) Кто такой граф Гамильтон ?


 
Sanek_Metaller ©   (2004-12-25 12:03) [18]

>А самое главное, он не должен уметь прятать процесс под XP.
А можно уметь прятать taskmgr от пользователя?:D


 
Kerk ©   (2004-12-25 12:07) [19]


> Игорь Шевченко ©   (25.12.04 02:16) [3]
>
> > уметь запуздырить иконку в трей  
>
>
> Этого он уметь не должен. И лоток CDROMа тоже не должен
> уметь выдвигать. А самое главное, он не должен уметь прятать
> процесс под XP.
>
> Таких не берут в программисты.

Нет, Игорь. Он должен это уметь.. И иконку в трей запуздырить и лоток выдвинуть.. задачи разные бывают.


 
GrayFace ©   (2004-12-25 12:27) [20]

Blackman ©   (25.12.04 11:07) [17]
Пугаешь ? :) Кто такой граф Гамильтон ?

LOL


 
Чеширский_Кот ©   (2004-12-25 12:33) [21]

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


 
GrayFace ©   (2004-12-25 12:41) [22]

Главное, что должен узнать новечок - это местонахождение справок и английский язык.
Неплохая идея. Я - за такие разделы:
По Delphi:
 основные сочетания клавишь (Ctrl+Space, Ctrl+Shift+Up/Down, Ctrl+J)
 указатели
 числа с плавающей точкой
 Bitmap.Scanline
 особенности работы с объектами(virtual и др, что есть ссылка на функцию объекта)
 свойство WindowProc у наследников TControl
По WinAPI:
 принципы вкратце
 перебор всех окон
 сообщения и оконные процедуры
 запуздыривание в трэй
 SystemParametersInfo, GetSystemMetrics и др. полезности
 перебор всех процессов
 узнавание %CPU
 работа с регионами
 горячие клавиши и хуки
 перехват
 прятанье под NT


 
Mystic ©   (2004-12-25 13:12) [23]

Типичные задачи:
 1) работа со справкой и поиском;
 2) решение алгоритмических задач;
 3) решение архитектурных задач.


 
OneFragLeft ©   (2004-12-25 15:49) [24]

А если под бойцом понимать КНОПКОКИДАТЕЛЯ?
То как?


 
Rule ©   (2004-12-25 16:23) [25]

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


 
OneFragLeft ©   (2004-12-25 16:42) [26]

Согласен.

Может вопрос не так поставил.
Надо было вот так:

Какие программы должен написать начинающий, чтобы освоить основные приёмы работы в Дельфи.
А когда он будет их делать, то у него возникнет куча проблем, которые ему придётся решать,
в том числе и лоток открыть, и иконку поместить в трэй и др.

P.S.:
Расскажите, пожалуйста, как сделать на Дельфи программу (только на WinAPI(вообще ни разу не писал)),
чтобы при запуске появлялась форма с надписью типа "Hello, World" и кнопка "Ок" для закрытия.
PPS: Надо же с чего-то начинать:)

Johnmen ©   (25.12.04 2:56) [13]
Не сочтите за скромность, но я считаю, что ещё ничего я ещё не написал.
Пишу только для себя, по необходимости. Думаю многие с этого начинают.
Причём я не имею образования программиста и даже не учусь на него, а занимаюсь
ради удовольствия и для общего развития.

Спасибо за внимание.


 
Aldor_   (2004-12-25 17:07) [27]


> Ega23 ©   (25.12.04 10:01) [16]
> Реши задачу нахождения путей Гамильтона в графе.


Угу, да еще за время, меньшее чем O(n!), тогда этот новичок еще и премию получит, может даже Нобелевскую, ибо докажет, что вс NP-полные задачи имеют решение за полиномиальное время :)

 P.S. Прошу прощение за растопыривание пальцев :)


 
uny ©   (2004-12-25 17:10) [28]

>Пишу только для себя
думаю оно и есть - приносит положительное - значит потом деньгами на подобное может и уговорят)


 
Artic   (2004-12-25 17:17) [29]

Так много рассказали, я ничего не понял. Про премию интересно а с чего начать не говорите.


 
OneFragLeft ©   (2004-12-25 17:24) [30]

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


 
default ©   (2004-12-25 17:27) [31]

OneFragLeft ©   (25.12.04 17:24) [30]
ну зачем так
каждому своё
Artic   (25.12.04 17:17) [29]
с получения премии)
попробуй реши задачу [1]


 
Rule ©   (2004-12-25 18:21) [32]

ага, а каждый гражданин должен знать законы, кодексы и все поправки, имея при этом огромную дома библиотеку, и каждый должен знать бухгалтерию, чтобы  знать как ему начисляется зарплата и экономику должен знать и строение автомобиля досконально и мог его отремонтировать а ещё если он на самолете летает, то уметь водить самолет, если на поезде, то поезд и так далее

помоему юзеру не надо программировать ... потомучто он просто юзур ... каждому свое

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

а вот ещё надо определиться с направлением развития (можно там по базам данных выступать, можно по железу и низкому уровню ... ну мало ли чего интересного бывает)


 
OneFragLeft ©   (2004-12-25 21:22) [33]

to Rule:
А я и не говорю, что юзер должен знать досканально,
но что-нибудь примитивненькое уметь делать должен.
Нет, я не говорю о полных ламерах, которые толко и
умеют что в косынку поиграть, файлик скопировать.
Но если жизнь человека тесно связана с компьютером, то
он должен уметь общаться с ним, в том числе и "научить"
его (написать программу). Уметь писать программы -
это часть компьютерной грамотности.


 
SSX-Sys_Team   (2004-12-25 22:54) [34]

Задачка простая:
Имеется матрица n x n - 1)транспонировать ее; 2)все элементы, сумма цифр которых четная заменить на "1";

Задача посложнее:
то же самое, только с 3D matrix ;)


 
Плохиш ©   (2004-12-26 00:13) [35]


> OneFragLeft ©   (25.12.04 21:22) [33]

Ничего, ничего, повзрослешь, успокоишься


 
default ©   (2004-12-26 00:45) [36]

OneFragLeft ©   (25.12.04 21:22) [33]
кстати довольно характерная черта людей - когда они что-то неплохо знают считать это за сомо собой разумеешееся и требовать того же от других
всё же лучше исходить из объективности


 
OneFragLeft ©   (2004-12-26 00:49) [37]

default ©   (26.12.04 0:45) [36]

Польщён, конечно, но это не про меня.

"Я знаю, что ничего не знаю." (слова не мои)


 
Хакер ©   (2004-12-26 00:52) [38]

default ©   (26.12.04 0:45) [36]
ага, я например неплохо знаю тему срытия %)))
н0 не могу по разным причинам говорить на эту тему тут:(((


 
Хакер ©   (2004-12-26 00:52) [39]

OneFragLeft ©   (26.12.04 0:49) [37]

> "Я знаю, что ничего не знаю." (слова не мои)

золотые слова


 
Игорь Шевченко ©   (2004-12-26 00:55) [40]

Kerk ©   (25.12.04 12:07) [19]


> Нет, Игорь. Он должен это уметь.. И иконку в трей запуздырить
> и лоток выдвинуть.. задачи разные бывают.


Роман, а смысл долга уметь это делать ? Задач, которые требуют таких вот умений, очень ограниченное количество и они уже давным-давно решены, судя по обилию иконок в трее и "выдвигателей лотков CD-ROM" на разного рода download-сайтах. Я, к стыду своему, не знаю, кому может в здравом уме и твердой памяти придти в голову пользоваться программой, выдвигающей этот злополучный лоток, когда его можно выдвинуть кнопкой на самом устройстве. CD-ROM"ов без кнопок я за свою не очень короткую жизнь еще не видел, вряд ли чего-то пропустил.

С уважением,


 
default ©   (2004-12-26 00:56) [41]

OneFragLeft ©   (26.12.04 00:49) [37]
туда же
может правда формулировка чуть другая в оригинале
"чем больше знаешь тем больше понимаешь что ничего не знаешь"


 
Хакер ©   (2004-12-26 00:57) [42]

Игорь Шевченко ©   (26.12.04 0:55) [40]
ага, я ещё НЕ разу никогда не юзал спец-прогу для видвигания лотка :)))


 
OneFragLeft ©   (2004-12-26 01:03) [43]

Вот тут возник ещё один вопрос:
А каких программ ещё нет? Кому что нужно?
Хочу начать делать то, что никто ещё не делал.
Чтобы возникали передо мной задачи, готовые
ответы на которые, нельзя найти.
Подкиньте идей. А то вроде есть программы для всего,
но программисты что-то ещё делают:)


 
default ©   (2004-12-26 01:06) [44]

OneFragLeft ©   (26.12.04 01:03) [43]
попробуй для начала сделать [1]
несомненно неплохая алгоритмическая задача


 
OneFragLeft ©   (2004-12-26 01:08) [45]

если честно, то я не понял что значит:
Основная проблема - сделать это за время O(N) с затратами памяти меньшими, чем O(N).

Поясните, пожалуйста.


 
default ©   (2004-12-26 01:13) [46]

OneFragLeft ©   (26.12.04 01:08) [45]
линейный рост времени работы алгоритма как функции её числа
то есть к примеру на два элемента тратиться 4 секунды, на три элемента будет тратиться 6 секунд, на четыре 8 и тд
а используемая дополнительная память должна не зависеть от числа элементов либо расти по порядку медленне чем N
например, LogN*N


 
OneFragLeft ©   (2004-12-26 01:16) [47]

Т.е. я могу создать ещё один такой-же массив?


 
default ©   (2004-12-26 01:18) [48]

OneFragLeft ©   (26.12.04 01:16) [47]
тогда рост памяти будет линейно зависеть от числа элементов что не допускает условие
"с затратами памяти меньшими, чем
O(N)."


 
OneFragLeft ©   (2004-12-26 01:20) [49]

ага, ясно.
Т.е. могу использовать только одну-две переменные?


 
default ©   (2004-12-26 01:24) [50]

OneFragLeft ©   (26.12.04 01:20) [49]
да, какое-то ограниченное количество памяти либо память в зависимости от числа элементов массива должна расти медленне чем растёт линейная функция


 
OneFragLeft ©   (2004-12-26 02:43) [51]

Вот так должно быть?


procedure ReOrder;
var B,i,j,n:integer;
   S:Array[0..9] of Integer;
begin
i:=1;//счётчик
n:=10;//кол-во элементов в массиве (просто не знаю как это программно посчитать)
//ну а дальше ясно
While i<round(n/2) do
begin
B:=S[i];
For j:=i to n-i do
begin
 S[j]:=S[j+1];
end;
S[n-i]:=B;
i:=i+1;
end;


Знаний маловато, поэтому не смог сделать чтобы в процедуру посылался массив.
Проверил на работоспособность с чётным и нечётным количеством элементов.
Вроде работает...


 
default ©   (2004-12-26 02:58) [52]

OneFragLeft ©   (26.12.04 02:43) [51]
тут заведомо нелинейное время
лучше тогда не трогай её
на счёт решения - я сам его не знаю пока)


 
OneFragLeft ©   (2004-12-26 03:14) [53]

А как узнать, существует ли оно вообще.
Может и нет решения.


 
MBo ©   (2004-12-26 07:07) [54]

>OneFragLeft ©   (26.12.04 03:14) [53]
Решение существует.
Ограничения на размер памяти и время связаны вот с чем -
1. несложно создать второй такой же массив и скопировать нужные элементы на нужные места - т.е. это путь с большими затратами памяти.
2. Возможно многократно сложным образом переставлять элементы в исходном массиве, пока не придем к нужному порядку - это требует существенно более, чем n^2 операций - т.е. путь с большими затратами памяти.

Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок). Задача любопытна, в частности, тем, что, поразмыслив, находишь решение для конкретного N, но оно может не работать для других размеров массива.


 
Igorek ©   (2004-12-26 09:49) [55]

OneFragLeft ©   (25.12.04 2:07)

>все типичные задачи,
>которые должен уметь выполнять начинающий
> программист, осваивающий Delphi

- читать хорошие книги о Delphi
- пользоваться F1, MSDN, DelphiWorld, Google, VCL sources
- пробовать все на практике
- хорошенько поискать ответ на вопрос прежде чем постить на форумы

Все это должен уметь не только начинающий, но начинающему этого пока достаточно.

Игорь Шевченко ©   (25.12.04 2:16) [3]
Ну ты меня успокоил. :-)

MBo ©   (26.12.04 7:07) [54]
Я вот не понял как формируется новый массив:
- последнее, предпоследнее слева от него, предпредпоследнее справа ...
или
- первое слева, второе справа, третье слева за первым, четвертое - справа за вторым
?


 
MBo ©   (2004-12-26 10:04) [56]

>как формируется новый массив:
четные элементы (считая с нуля)  - в первой половине, нечетные - во второй в обратном порядке, т.е. второй твой способ.


 
default ©   (2004-12-26 13:12) [57]

MBo ©   (26.12.04 10:04) [56]
можно подсказочку:
затраты времени O(1) или всё-таки зависят от числа элементов?


 
Igorek ©   (2004-12-26 15:13) [58]


> сделать это за время O(N)


 
default ©   (2004-12-26 16:26) [59]

Igorek ©   (26.12.04 15:13) [58]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)


 
GrayFace ©   (2004-12-28 11:59) [60]

default ©   (26.12.04 0:45) [36]
кстати довольно характерная черта людей - когда они что-то неплохо знают считать это за сомо собой разумеешееся и требовать того же от других
всё же лучше исходить из объективности

Вообще-то он прав, просто выразился вначале неверно. А вот это верно: Уметь писать программы - это часть компьютерной грамотности.

MBo ©   (26.12.04 7:07) [54]
Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок).

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

Igorek ©   (26.12.04 9:49) [55]
- хорошенько поискать ответ на вопрос прежде чем постить на форумы

А я с этим не согласен. ИМХО, достаточно искать в F1 и MSDN, а уж Google и т.п. - это после форумов. Если уж искать, то искать на форумах. А если вопрос не стандартный, то и пытаться искать не стоит.

default ©   (26.12.04 16:26) [59]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)

Видимо, решения с O(logN) и т.п. просто не получится выдумать.



Страницы: 1 2 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.201 c
14-1104007228
Rostislav Rotaru
2004-12-25 23:40
2005.01.16
Помогите с настройкой модема Zyxel для доступа извне.


14-1103869505
Rouse_
2004-12-24 09:25
2005.01.16
C Днем Рождения 24 Декабря


14-1103830814
Andy BitOff
2004-12-23 22:40
2005.01.16
Потребление электроэнергии


3-1102582417
einsam
2004-12-09 11:53
2005.01.16
база данных в файлах *.dbw


14-1104393826
Layner
2004-12-30 11:03
2005.01.16
Прошу прощения, что не в тему, но кто нибудь имеет опыт