2013-02-09 2 views
1

Это общий вопрос, и мне еще предстоит найти хорошее решение.Как программы, такие как PhotoShop, Word и т. Д. Работают вечно и реагируют на мышь?

Во-первых, какой-то предлог. Я новичок в программировании, и все, что я сделал (в основном в любом случае), являются последовательными программами в C.

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

Чтобы быть меньше, как они остаются открытыми для одного? Все написанные мной программы сверху вниз, код запускается, а затем программа завершается. Также, как всегда пользователь скажет, что нажмите «Сохранить», а файл будет записывать или щелкнуть шрифт и изменить шрифт. Очевидно, что эти операции могут выполняться в любом порядке, бесконечно много раз.

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

+0

Не все коды выполняются последовательно. Программы GUI обычно управляются событиями и многопоточными, что означает, что один или несколько потоков приостанавливаются, ожидая возникновения события, а затем асинхронно реагируют на событие, как правило, путем вызова обратного вызова. –

+2

Это действительно интересный вопрос, но я думаю, что он слишком широк для переполнения стека. Возможно, вам захочется взглянуть на термин * управляемое событиями программирование *, чтобы узнать, как программа остается открытой и реагирует на пользовательские события, так как это основной термин, который вам пока не хватает. И не волнуйтесь - методы, которые вы изучаете сейчас, почти наверняка очень полезны. Когда у вас есть эти идеи, добавление событий является логичным следующим шагом. – templatetypedef

+0

Итак, по сути, программы, подобные тем, которые я упомянул, являются формами, аналогичными тем, которые создаются визуальным stuido? – SystemFun

ответ

4

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

while (true) { 
    wait for an event to occur. 
    react to that event. 
} 

Эти «события», как правило, такие вещи, как щелчки мыши, клавиатуры события, окна resizings и т.д. Как правило, событийно-управляемых программы устанавливают окна и прикрепляют к ним кусочки кода, так что, когда происходит событие, данный фрагмент кода может работать. Каждый фрагмент кода, который прилагается, имеет тенденцию выглядеть точно так же, как вы видели - он выполняется сверху вниз в нормальном режиме. Тот факт, что разные события могут происходить в разных заказах, означает, что они запускаются, когда пользователь запрашивает их.

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

Надеюсь, это поможет!

+0

Где истина подразумевает «открытую»? – SystemFun

+0

@ Влад-Да. Или одно из событий может быть «нажата кнопка закрытия», и в этом случае программа может завершить работу, вызывая 'exit()' или какую-то другую функцию. – templatetypedef

+0

ОК спасибо, что определенно помогает несколько. – SystemFun