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

на главную - закладки

Жанры

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

Тот же алгоритм будет использоваться для поиска наибольшего общего делителя в главе 7. В следующей программе с оператором while решается задача обращения порядка цифр целого числа, которое вводится с терминала. Например, если пользователь вводит число 1234, программа должна вывести результат 4321.

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

Чтобы

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

Чтобы извлечь правую цифру целого числа, можно взять остаток от деления этого числа на 10. Например, 1234 % 10 дает значение 4. Это правая цифра числа 1234 и первая цифра обращенного числа. Следующую цифру можно получить так же, если сначала выполнить целочисленное деление этого числа на 10. Деление 1234 / 10 дает в результате 123, а операция 123 % 10 дает 3, что является следующей цифрой обращенного числа.

Вы можете продолжать эту процедуру, пока не будет извлечена последняя цифра. Если результат последнего деления на 10 равен 0, значит, все цифры извлечены.

Программа 5.8 запрашивает у пользователя ввод числа и затем выводит цифры этого числа, начиная с крайней правой и заканчивая крайней левой. // Программа обращения цифр числа #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int number, right_digit; NSLog (@"Enter your number."); scant ("%i", &number); while ( number != 0 ) { right_digit = number % 10; NSLog (@"%Г, right_digit); number /= 10; } [pool drain]; return 0; }

Вывод программы 5.8 Enter your number. (Введите свое число) 13579 9 7 5 3 1 5.3. Оператор do

В двух конструкциях циклов, которые рассматривались выше, перед выполнением цикла выполняется проверка условий. Тело цикла не будет выполнено ни разу, если не удовлетворяются эти условия. При разработке программ иногда требуется, чтобы проверка условий выполнялась в конце цикла, а не в начале. В языке Objective-C для такой ситуации имеется отдельная конструкция, которая называется оператором do. Этот оператор имеет следующий синтаксис. do программный оператор while ( выражение);

Оператор do выполняется следующим образом. Первым выполняется программный оператор. Затем оценивается выражение в круглых скобках. Если результатом оценки выражения является значение TRUE, то цикл продолжается и снова выполняется программный оператор. Выполнение программного оператора повторяется до тех пор, пока результатом оценки выражения является значение TRUE.

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

В операторе do, в отличие от оператора while, условия цикла помещаются в конец цикла, а не в начало.

В программе 5.8 оператор while использовался для вывода цифр числа в обратном порядке. Вернемся к этой программе и определим, что произойдет, если пользователь введет число 0 вместо 13579. Цикл оператора while не будет выполнен ни разу, и ничего не будет выведено на экран. Если использовать оператор do вместо оператора while, цикл программы будет выполнен хотя бы один раз, что гарантирует вывод хотя бы одной цифры. Использование оператора do показано в программе 5.9. // Программа обращения цифр числа #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int number, right_digit; NSLog(@"Enter your number."); scanf("%i", &number); do { right_digit = number % 10; NSLog (@"%\", right_digit); number /= 10; } while ( number != 0 ); [pool drain]; return 0; }

Вывод программы 5.9 Enter your number. (Введите свое число) 135 5 3 1

Вывод программы 5.9 (Повторный запуск) Enter your number. О о

При вводе 0 программа выводит цифру 0. 5.4. Оператор break

Иногда при выполнении цикла требуется выйти из цикла, как только возникает определенное условие, например, если определено состояние ошибки или преждевременно достигнут конец данных. Для этой цели можно использовать оператор break. При выполнении оператора break программа сразу выходит из цикла любого типа (for, while или do). Все остальные операторы цикла пропускаются, и выполнение цикла прекращается. Выполнение продолжается с первого оператора, следующего после цикла.

Если оператор break выполняется из набора вложенных циклов, то прекращается выполнение только вложенного цикла, в котором выполнен этот оператор break.

Оператор break — это просто ключевое слово break, после которого следует символ «точка с запятой»: break; 5.5. Оператор continue

Оператор continue не прекращает выполнение цикла. Если выполнен оператор continue, то пропускаются все следующие операторы до конца цикла, в противном случае выполнение цикла продолжается обычным образом.

Оператор continue чаще всего используется для обхода группы операторов внутри цикла в зависимости от некоторого условия. Его формат: continue;

Не используйте операторы break или continue, пока не освоитесь с написанием программных циклов и выхода из них. Эти операторы нужно применять с осторожностью, поскольку они затрудняют чтение и отслеживание работы программ. Упражнения

Напишите программу создания и вывода таблицы значений пип2 для целых значений п от 1 до 10. Обязательно выведите заголовки колонок.

Поделиться:
Популярные книги

Ермак. Противостояние. Книга одиннадцатая

Валериев Игорь
11. Ермак
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Ермак. Противостояние. Книга одиннадцатая

Глэрд VIII: Базис 2

Владимиров Денис
8. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Глэрд VIII: Базис 2

Император Пограничья 8

Астахов Евгений Евгеньевич
8. Император Пограничья
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 8

Звездная Кровь. Изгой VII

Елисеев Алексей Станиславович
7. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
технофэнтези
рпг
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Изгой VII

Афганский рубеж 3

Дорин Михаил
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 3

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Газлайтер. Том 27

Володин Григорий Григорьевич
27. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 27

Старый, но крепкий 2

Крынов Макс
2. Культивация без насилия
Фантастика:
рпг
уся
эпическая фантастика
5.00
рейтинг книги
Старый, но крепкий 2

Император Пограничья 10

Астахов Евгений Евгеньевич
10. Император Пограничья
Фантастика:
городское фэнтези
аниме
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 10

Эволюционер из трущоб. Том 8

Панарин Антон
8. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 8

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1