Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_pod_PSP_na_C__RUS.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.73 Mб
Скачать

Урок 2: Создание первой собственной программы, глава 2

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

Итак, у меня есть для вас две новости: хорошая и плохая. Начнем с плохой: следующая часть программы будет довольно сложной. А теперь хорошая новость: вам не придется понимать ее. И вот почему (мы оставим объяснение данной синтаксической структуры на потом): В основном этот кусок кода содержит функции, вызываемые в нашей программе. Функции позволяют вашей PSP не зависать, а также не выходить из программы, когда это не требуется. Вставьте это в свою программу (файл main.c):

/* Функция выхода */ int exit_callback(int arg1, int arg2, void *common) {           sceKernelExitGame();           return 0;}

/* Подпроцесс обратного выхода */ int CallbackThread(SceSize args, void *argp) {           int cbid;

          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);           sceKernelRegisterExitCallback(cbid);

          sceKernelSleepThreadCB();

          return 0;}

/* Настраивает подпроцесс и присваивает ему id */ int SetupCallbacks(void) {           int thid = 0;

          thid = sceKernelCreateThread("update_thread", CallbackThread, 0×11, 0xFA0, 0, 0);           if(thid >= 0) {                     sceKernelStartThread(thid, 0, 0);           }

          return thid;}

Сейчас мы должны задать «основную» функцию. Каждой программе на C и C++ требуется основная функция. Поскольку именно оттуда запускается основной код. Функции С (и некоторые C++) — в парадигме «procedural». Это значит, что движение происходит по линейному пути. Например, если у вас есть такой код:

//Не используйте в своей программе. //Это пример.

int myFunction() {           //Print Out 'A'           return 0;} int main() {           //Print Out 'B'           myFunction();           //Print Out 'C'           return 0;}

Комментарии (если не помните, что представляют собой комментарии, смотрите выше) к данному отрезку программы расскажут обо всех нюансах. Если в коде программы напечатали бы «B», тогда ввели бы и «C», потому что компилятор запускается в основной функции. Нужно напечатать «B» в том случае, если это определяется «myFunction», которая задана выше. Она «понимает», что данный символ необходимо ввести и затем возвращается в то место, где заканчивался процесс, и печатает «C». Все ваши программы (пока Вы не достигнете совершенного C++) будут придерживаться этой линейной структуры. Поэтому «основная» функция очень важна для нашей программы. Чтобы определить функцию, вы используете следующую схему: «[return type] [function name]() { ». «The return type» — это процесс отправления функции к концу программы. Для «main» необходим тип «int»(что обозначает целое число). Имя функции — ваше имя, «main» будет, очевидно, названо «основным». Теперь зададим свою функцию, поместив следующую строку в ваш код:

[i]int main() {[/i]

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