Чтение онлайн

ЖАНРЫ

Программирование на Objective-C 2.0
Шрифт:

Если ввести программу 2.2 с последующей компиляцией и выполнением, то получится следующий вывод (мы опустили текст, который обычно выводится процедурой NSLog перед результатами программы): Programming is fun! Programming in Objective-C is even more fun!

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

Рассмотрим специальный набор из двух символов. Обратный слэш в соче-тании с буквой п используются как признак новой строки. Этот символ указывает системе, что нужно перейти на новую строку. Все символы, которые выводятся после символа новой строки, появятся в следующей строке вывода. Символ новой строки аналогичен клавише возврата

каретки на пишущей машинке. Изучите листинг программы 2.3 и попытайтесь предсказать результаты, прежде чем посмотреть вывод этой программы. #import <Foundation/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Testing...\n..1\n...2\n....3H); [pool drain]; return 0; }

Вывод программы 2.3 Testing... ..1 ...2 ....3 2.3. Вывод значений переменных

С помощью NSLog можно выводить не только простые фразы, но и значения переменных или результаты вычислений. В программе 2.4 для вывода результатов сложения двух чисел, 50 и 25, используется процедура NSLog. #import <Foundation/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int sum; int sum; sum = 50 + 25; NSLog (@"The sum of 50 and 25 is %i", sum); [pool drain]; return 0; }

Вывод программы 2.4 The sum of 50 and 25 is 75 (Сумма 50 и 25 равна 75)

Первый оператор программы внутри main после autorelease pool определяет переменную sum типа integer. Вы должны определить все переменные программы перед использованием. Определение переменной указывает компилятору Objective-C, как переменная должна использоваться программой. Эта инфор-мация требуется компилятору, чтобы он сформировал соответствующие инст-рукции для сохранения и считывания значений в этой переменной. Переменную, которая определена с типом int, можно использовать для хранения только целых значений, то есть значений без цифр после десятичной точки. Примеры целых значений: 3, 5, -20 и 0. Числа с цифрами после десятичной точки, например, 2.14, 2.455 и 27.0, называются числами с плавающей запятой (floating-point% или вещественными числами.

В целой переменной sum сохраняется результат сложения двух целых чисел, 50 и 25. Мы преднамеренно оставили пустую строку после определения этой переменной, чтобы визуально отделить объявление переменной от операторов программы. Иногда добавление одной пустой строки в программе может сделать программу более удобной для чтения.

Соответствующий оператор программы выглядит так же, как в большинстве языков программирования: sum = 50 + 25;

Число 50 добавляется (что указано знаком «плюс») к числу 25, и результат сохраняется (что указано оператором присваивания, то есть знаком «равно») в переменной sum.

Вызов процедуры NSLog в программе 2.4 теперь содержит два аргумента, заключенных в круглые скобки. Эти аргументы разделены запятой. Первый аргу-мент при обращении к процедуре NSLog — это всегда символьная строка, которая должна быть выведена на экран. Но вместе с символьной строкой часто требуется выводить значения определенных переменных. В данном случае нужно вывести значение переменной sum после вывода следующей строки символов: The sum of 50 and 25 is

Символ процента внутри первого аргумента — это специальный символ, рас-познаваемый функцией NSLog. Символ, который следует непосредственно за символом процента, указывает тип отображаемого значения. В приведенной программе процедура NSLog интерпретирует букву i как указание на вывод це-лого значения.

Если процедура NSLog обнаруживает символы %i внутри строки символов, она автоматически выводит значение следующего переданного ей аргумента. Поскольку следующим аргументом для NSLog является

переменная sum, ее значение автоматически выводится после текста «The sum of 50 and 25 is».

Теперь попытайтесь предсказать, что выведет программа 2.5. #import <Foundation/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int value 1, value2, sum; valuel = 50; value2 = 25; sum = valuel + value2; NSLog (@"The sum of %i and %i is %i", valuel, value2, sum); [pool drain]; return 0; }

Вывод программы 2.5 The sum of 50 and 25 is 75

Второй оператор программы внутри main определяет три переменные с именами valuel, value2 и sum, и все они имеют тип int. Этот оператор эквивалентен трем операторам: int valuel; int value2; int sum;

После определения этих переменных программа присваивает значение 50 переменной valuel и значение 25 переменной value2. Затем вычисляется сумма этих переменных, и результат присваивается переменной sum.

Вызов процедуры NSLog теперь содержит четыре аргумента. Здесь тоже первый аргумент, который обычно называют строкой формата (format string), указывает системе, как выводить остальные аргументы. Значение value 1 должно быть выведено непосредственно после фразы «The sum of». Аналогичным образом, значения value2 и sum должны быть выведены в местах, указанных следующими двумя экземплярами символов %i в строке формата. Упражнения

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

Напишите программу, которая выводит следующий текст: In Objective-C, lowercase letters are significant, main is where program execution begins. Open and closed braces enclose program statements in a routine. All program statements must be terminated by a semicolon. (B Objective-C строчные буквы отличаются от прописных.

Выполнение программы происходит в main.

Операторы программы находятся между открывающей и закрывающей фигурными скобками.

Все операторы программы должны заканчиваться символом «точка с запя-той».

Какие результаты выведет следующая программа? #import <Foundation/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init; int i; i= 1; NSLog ((^"Testing..."); NSLog (@"....%Г, i); NSLog ((§>"...%i", i + 1); NSLog (@"..%Г\ i + 2); [pool drain]; return 0; }

Напишите программу, которая вычитает значение 15 из 87 и выводит результат вместе с сообщением.

Укажите синтаксические ошибки в программе, затем введите и выполните исправленную программу, чтобы убедиться, что выявлены все ошибки. #import <Foundation/Foundation.h> int main (int argc, const char *argv[]); { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; INT sum; /* COMPUTE RESULT // sum = 25 + 37- 19 / DISPLAY RESULTS / NSLog (@'The answer is %i', sum); [pool drain]; return 0; }

Какие результаты выведет следующая программа? #import <Foundation/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int answer, result; answer = 100; result = answer - 10; NSLog (@"The result is %i\n", result + 5); [pool drain]; return 0; }

Глава 3. Классы, объекты и методы

В этой главе вы узнаете о ключевых концепциях в объектно-ориентированном программировании, начнете работать с классами в Objective-C и познакомитесь с основной терминологией. Мы опишем только базовые терминов, чтобы не перегружать вас излишней информацией. Подробное и точное определение терминов см. в «Словаре» (приложение А). 3.1. Понятие объекта

Поделиться с друзьями: