Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Как функции работают друг с другом Objective-C

0

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

Вспомните,  как  мы  сравнивали  функцию  с  карточкой  рецепта.  Начиная

выполнять рецепт «Печеная курица», я могу обнаружить, что вторая инструкция требует «Приготовить панировку»; о том, как это сделать, объясняется на другой

карточке. Программист в таком случае скажет: «Функция "Печеная курица" вызывает функцию "Панировка"».

Точно так же и функция main может вызывать другие функции. Например, функция main из проекта ClassCertificates вызвала функцию congratulateStudent, которая в свою очередь вызвала printf.

Во время приготовления панировки вы перестаете выполнять рецепт с карточки

«Печеная курица», а когда панировка будет готова – снова возвращаетесь к карточке

«Печеная курица» и продолжаете ее выполнение. Так же и функция main прекращает выполняться и «приостанавливается» до тех пор, пока не будет выполнена вызванная ей функция.

Чтобы увидеть, как это происходит, мы воспользуемся функцией sleep, которая не делает ничего, а только ожидает некоторое время. Включите в функцию main вызов sleep.

Рис 5.2. Карточки с рецептами

int main (int argc, const char * argv[])

{

congratulateStudent("Mark", "Cocoa", 5);

sleep(2);

congratulateStudent("Bo", "Objective-­‐C", 2);

sleep(2);

congratulateStudent("Mike", "PHP and PostgreSQL", 5);

sleep(2);

congratulateStudent("Ted", "iOS", 5);

return 0;

}

Постройте и запустите программу. (На предупреждение об отсутствии объявления пока не обращайте внимания.) Вы увидите, что перед каждым сообщением следует 2-секундная пауза. Это происходит из-за того, что функция main перестает выполняться до того момента, как вызванная функция slеер завершит свою работу.

Обратите внимание: при вызове функции указывается имя и круглые скобки для аргументов. Соответственно когда функция упоминается в тексте, за ее именем тоже обычно следует пара круглых скобок. С этого момента, говоря о функции main, мы будем использовать запись mаin().

Ваш компьютер уже содержит много встроенных функций. Вообще-то это не совсем точно – вот вам самая настоящая правда: до того, как на вашем компьютере была установлена система Мас OS Х, он был не чем иным, как дорогостоящим нагревателем. В частности, вместе с Мас OS Х были установлены файлы содержащие набор заранее откомпилированных функций. Эти наборы функций называются стандартными библиотеками; функции sleep() и printf () входят в эти стандартные  библиотеки.

Вначале файла main.с находится директива включения файла stdio.h. В нем

содержится объявление функции printf(), по которому компилятор может проверить правильность использования функции. Функция sleep() объявлена в файле stdlib.h. Включите и этот файл, что бы компилятор перестал жаловаться на отсутствие объявления sleep()

#include <stdio.h>

#include <stdlib.h>

void congratulateStudent(char *student, char *course, int numDays)

{

Стандартные библиотеки приносят двойную пользу

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

•  Стандартные библиотеки помогают выдержать общий стиль оформления и поведения многих программ.

Программисты проводят много времени за изучением стандартных библиотек операционных систем, в которых они работают. Каждая компания, создавшая операционную систему, также создает документацию для прилагаемых к ней стандартных библиотек. О том, как просматривать документацию для Mac OS и iOS, рассказано в главе 15,

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии