Array M. УЭИТ - Язык Си - руководство для начинающих
- Название:Язык Си - руководство для начинающих
- Автор:
- Жанр:
- Издательство:Мир
- Год:1988
- Город:Москва
- ISBN:5-03-001309-1 /русск./
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Array M. УЭИТ - Язык Си - руководство для начинающих краткое содержание
Язык Си — руководство для начинающих
Язык Си - руководство для начинающих - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Мы столкнулись с аналогичной проблемой, когда искали подходящий символ для признака End-of-File. Тогда было принято решение использовать для ввода символов специальную функцию( getchar( )), которая при обращении к ней фактически возвращала величину типа int. Это позволяло функции читать "символ" EOF, который на самом деле не был обычным символом. В рассматриваемом нами примере полезной оказалась бы функция, которая осуществляла бы ввод целых чисел, могла бы, кроме того, читать данные не только целого типа, но и использовать их в качестве признака конца ввода.
Мы можем одновременно и обрадовать и огорчить вас: такое решение оказывается возможным, но вы должны узнать несколько больше о работе функций; поэтому обсуждение данной идеи откладывается до гл. 10.
РЕЗЮМЕ
Основной темой данной главы было обсуждение возможностей управления ходом выполнения программы. Язык Си предоставляет много средств для структурирования программ. С помощью операторов whileи forреализуются циклы с предусловием. Второй оператор особенно подходит для циклов, включающих в себя инициализацию и коррекцию переменной. Использование операции "запятая" в цикле forпозволяет инициализировать и корректировать более одной переменной. Для тех редких случаев, когда требуется использовать цикл с постусловием, язык Си предоставляет оператор do while. Операторы break, continueи gotoобеспечивают дополнительные возможности управления ходом выполнения программы.
ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ
Три типа циклов в языке Си: while, forи do while.
Различие между циклами с предусловием и с постусловием.
Почему циклы с предусловием используются гораздо чаще, чем циклы с постусловием.
Дополнительные операции присваивания: += -= *= /= %=.
Как пользоваться операцией "запятая".
Когда использовать операторы breakи continue: по возможности редко.
Когда использовать оператор goto: когда вы хотите иметь неудобные, трудные для понимания программы.
Как использовать оператор whileдля защиты программы от ошибок при вводе данных.
ВОПРОСЫ И ОТВЕТЫ
Вопросы
1. Определите значение переменной quackпосле выполнения каждого оператора из приведенной ниже их последовательности.
int quack = 2;
quack + = 5;
quack * = 10;
quack - = 6;
quack / = 8;
quack % = 3;
2. Что будет получено на выходе в результате работы следующего цикла?
for(value = 36; value > 0; value /= 2) printf("%3d", value);
3. Как можно модифицировать операторы ifв программе угадывание числа2чтобы был возможен ввод как прописных, так и строчных букв?
4. Мы подозреваем, что следующая программа не совсем правильная. Какие ошибки вы сможете в ней обнаружить?
main( ) /* строка 1 */
{ /* строка 2 */
int i, j, lisl[10]; /* строка 3 */
for (i = 1, i < = 10, i++ ) /* строка 5 */
{ /* строка 6 */
list[i] = 2*i + 3; /* строка 7 */
for(j = 1, j >= i, j++ ) /* строка 8 */
printf(" %d \n", lisl[j]); /* строка 9 */
} /* строка 10 */
5. Воспользуйтесь пложенными циклами при написании программы, выводящей на печать следующую фигуру:
$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$
6. Напишите программу, которая создает массив из 26 элементов и помещает в него 26 строчных букв.
Ответы
1. 2, 7, 70, 64, 8, 2
2. 36 18 9 4 2 1.
Вспомните, как выполняется деление целых чисел. Результатом деления 1на 2будет 0, поэтому работа цикла завершится после того, как переменная valueстанет равной 1.
3. if(response == 'б' || response == 'Б').
4. строка 3: должно быть list[10].
строка 5: вместо запятых должны стоять символы "точка с запятой".
строка 5: переменная iдолжна изменяться в диапазоне от 0до 9, а не от 1до 10.
строка 8: вместо запятых должны стоять символы "точка с запятой".
строка 8: знак >=должен быть заменен на <=. В противном случае при значении i, равном 1, цикл никогда не завершится.
строка 10: между строками 9и 10должна находиться еще одна закрывающая фигурная скобка. Одна скобка закрывает составной оператор, а другая тело программы.
5.
main( ) 6.
{ int i, j;
for(i = 1; i <= 4; i++)
{
for( j = 1; j <= 8; j++)
printf("$");
}
printf("\N");
}
main( )
{ int i;
char ch, alpha[26];
for(i = 0, ch = 'a'; i <= 26; i++, ch++)
alpha[i] == ch;
УПРАЖНЕНИЯ
1. Модифицируйте программу угадывание числа2в соответствии с нашими предположениями об улучшении ее работы.
2. Реализуйте наше предложение о повышении эффективности pаботы программы нахождения простых чисел.
3. Воспользуйтесь вложенными циклами при написании программы, выводящей на печать следующую фигуру:
$
$$
$$$
$$$$
$$$$$
9. Как правильно пользоваться функциями
ФУНКЦИИ
СТРОИТЕЛЬНЫЕ БЛОКИ ПРОГРАММЫ
СВЯЗЬ МЕЖДУ ФУНКЦИЯМИ: АРГУМЕНТЫ, УКАЗАТЕЛИ, ВОЗВРАТ ЗНАЧЕНИЯ
ТИПЫ ФУНКЦИЙ
КЛЮЧЕВОЕ СЛОВО return
Принципы программирования на языке Си основаны на понятии функции. В представленных ранее примерах программирования мы уже воспользовались несколькими функциями: printf( ), scanf( ), getchar( ), putchar( )и strlen( ). Эти функции являются системными, однако мы создали и несколько своих собственных функций под общим именем main( ). Выполнение программы всегда начинается с команд, содержащихся в функции main( ), затем последняя вызывает другие функции, например getchar( ). Теперь мы переходим к вопросу о том, как создавать свои собственные функции н делать их доступными для функции main( ), а также друг для друга.
Во-первых, что такое функция? Функция - самостоятельная единица программы, спроектированная для реализации конкретной задачи. Функции в языке Си играют ту же роль, какую играют функции, подпрограммы и процедуры в других языках, хотя детали их структуры могут быть разными. Вызов функции приводит к выполнению некоторых действии. Например, при обращении к функции printf( )осуществляется вывод данных на экран. Другие же функции позволяют получать некоторую величину, используемую затем в программе. К примеру, функция strlen( )"сообщает" программе длину конкретной строки. В общем функции могут выполнять действия и получать значения величин, используемых в программе.
Почему мы пользуемся функциями? Во-первых, они избавляют нас от повторного программирования. Если конкретную задачу необходимо выполнить в программе несколько раз, мы напишем соответствующую функцию только один раз, а затем будем вызывать ее всегда, когда это требуется. Во-вторых, мы можем применять одну функцию, например putchar( ), в различных программах. Даже в том случае, если некоторая задача выполняется только в одной программе, лучше оформить ее решение в виде функции, поскольку функции повышают уровень модульности программы и, следовательно, облегчают ее чтение, внесение изменений и коррекцию ошибок. Предположим, например, что мы хотим написать программу, которая делает следующее: вводит набор чисел сортирует, эти числа, находит их среднее, выводит на печать гистограмму.
Читать дальшеИнтервал:
Закладка: