Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.066 c
14-1103664334
KilkennyCat
2004-12-22 00:25
2005.01.16
Петербург. Встреча. Последняя в 2004.


4-1101385735
stechnology
2004-11-25 15:28
2005.01.16
WriteConsoleInput ... (не работает в Windows 98) ...


3-1102789459
Dell3r
2004-12-11 21:24
2005.01.16
Сетевая многопользовательская программа


3-1103041948
Mars
2004-12-14 19:32
2005.01.16
Как получить значение поля предыдущей записи в базе,


1-1103950307
Progh
2004-12-25 07:51
2005.01.16
Работа с ListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский