Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

while (scanf("%ld", &num) == 1)

Цикл for является более естественным выбором, когда реализуется подсчет для какого-нибудь индекса:

for (count = 1; count <= 100; count++)

230 Глава 6

Вложенные циклы

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

Листинг 6.17. Программа rows1.с

Выполнение этой программы дает следующий вывод ABCDEFGHIJ ABCDEFGHIJ - фото 173

Выполнение этой программы дает следующий вывод:

ABCDEFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

ABCDEFGHIJ

Анализ программы

Цикл for, который начинается в строке 10, называется внешним, а цикл, начинающийся в строке 12 — внутренним. Внешний цикл стартует при значении 0 переменной row и завершается, когда ее значение достигает 6. Таким образом, происходит шесть итераций внешнего цикла, и переменная row последовательно получает значения от О до 5. Первый оператор в каждой итерации является внутренним циклом for. Он выполняет 10 итераций, выводя символы от А до J в одной строке. Второй оператор внешнего цикла, printf ("\n");, начинает новую строку, так что при следующем выполнении внутреннего цикла вывод будет производиться в новой строке.

Будучи вложенным циклом, внутренний цикл проходит через полный диапазон итераций для каждой итерации внешнего цикла. В последнем примере внутренний цикл выводит 10 символов в строке, а внешний цикл создает 6 таких строк.

Изменение поведения вложенного цикла

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

Управляющие операторы С: циклы 231

Например, в листинге 6.18 показан слегка измененный код предыдущей программы, в котором начальный символ внутреннего цикла изменяется в зависимости от номера итерации внешнего цикла. Вдобавок здесь используется комментарий более нового стиля и const вместо #define, что способствует освоению обоих подходов.

Листинг 6.18. Программа rows2.c

На этот раз вывод имеет такой вид ABCDEF BCDEF CDEF DEF EF F Поскольку на - фото 174

На этот раз вывод имеет такой вид:

ABCDEF

BCDEF

CDEF

DEF

EF

F

Поскольку на каждой итерации внешнего цикла row добавляется к ’А() переменная ch в каждой строке инициализируется следующим по порядку символом. Гем не менее, условие проверки не изменялось, так что каждая новая строка по-прежнему заканчивается символом F. В результате каждая следующая выводимая строка содержит на один символ меньше, чем предыдущая.

Введение в массивы

Массивы являются важным инструментом во многих программах. Они позволяют хранить несколько элементов связанной информации в удобной форме. Массивам полностью посвящена глава 10, но поскольку массивы часто используются с циклами, мы представим их прямо сейчас.

Массив — это совокупность значений одного и того же типа, такая как 10 значений char или 15 значений int, которые хранятся в памяти последовательно. Массив целиком носит свое имя, а доступ к его отдельным элементам осуществляется с применением целочисленного индекса. Например, объявление

float debts[20];

сообщает о том, что debts является массивом с 20 элементами, каждый из которых может содержать в себе значение float. Первый элемент массива называется debts [0], второй элемент — debts [1] и т.д. вплоть до debts [19].

232 Глава 6

Обратите внимание, что нумерация элементов массива начинается с 0, а не с 1. Каждому элементу массива может быть присвоено значение float. К примеру, можно записать следующий код:

debts[5] = 32.54; debts[6] = 1.2е+21;

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

scanf("If", &debts[4]); // чтение значения в 5-й элемент массива

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

debts[20] = 88.32; // такой элемент массива не существует

debts[33] = 828.12; // такой элемент массива не существует

Тем не менее, компилятор не обнаруживает ошибки подобного рода. Во время вы

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

Массив может относиться к любому типу данных:

int nannies[22]; /* массив для хранения 22 целых чисел */

char actors [26]; /* массив для хранения 26 символов */

long big[500]; /* массив для хранения 500 целых чисел типа long */

Ранее в книге мы обсуждали строки, которые представляют собой специальный случай того, что можно хранить в массиве типа char. (В общем случае массив типа char содержит элементы, которым присваиваются значения char.) Содержимое массива char формирует строку, если массив содержит нулевой символ (\0), обозначающий конец строки (рис. 6.6).

Рис 66 Символьные массивы и строки Числа применяемые для идентификации - фото 175

Рис. 6.6. Символьные массивы и строки

Числа, применяемые для идентификации элементов массива, называются индексами или смещениями. Индексы должны быть целыми числами, к тому же, как было указано ранее, индексация начинается с 0. Элементы массива хранятся в памяти рядом друг с другом (рис. 6.7).

Управляющие операторы С: циклы 233

Рис 67 Массивы char и int в памяти Использование цикла for с массивами - фото 176

Рис. 6.7. Массивы char и int в памяти

Использование цикла for с массивами

Массивы применяются в огромном числе ситуаций. В листинге 6.19 демонстрируется относительно простой случай. Эта программа считывает 10 результатов игры в гольф, которые позже будуг обрабатываться. За счет использования массива вы избегаете необходимости объявлять 10 переменных с разными именами, по одной для каждого результата. Кроме того, для чтения входных данных можно применять цикл for. Программа предназначена для подсчета общей суммы результатов, их среднего значения и гандикапа, который представляет собой разность между средним и стандартным результатом, или паром. (Пар — это термин в гольфе, означающий количество ударов по мячу, которое необходимо опытному игроку для проведения мяча в лунку или прохода всех лунок — прим.перев.)

Листинг 6.19. Программа scores in.с

234 Глава 6 Давайте посмотрим работает ли программа из листинга 619 а после - фото 177

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x