Читаем Язык Си - руководство для начинающих полностью

     Хотите узнать чудовищный потенциал машины для "перемалывания чисел"? Как раз для этого мы написали замечательную программу (приведенную на рис 6.8). Чтобы оценить ее полностью вам необходимо выполнить ее на вашем компьютере. Предупреждение для получения желаемого эффекта вы должны выбрать подходящую для вашей системы величину константы LIMIT. Дополнительные подробности будут обсуждены ниже, а сначала рассмотрим саму программу

/* Ганс */

#include

 #define LIMIT 8000

Lmain( )

{

int num1, num2;

long delay =0;

int count = 0;

printf("Лошадь-компьютер Ганс сложит для вас два очень");

printf(" маленьких целых числа \n" );

printf("Укажите, пожалуйста, первое маленькое число \n");

scanf("%d", &num1);

printf("Спасибо А теперь введите второе число \n");

scanf("%d", &num2);

printf("Итак, Ганс, сколько у тебя получится? \n"),

while(delay++ < LIMIT);

while(count++ < num1 + num2 - 1))

{

putchar ('\007' );

delay = 0;

while (delay++  < LIMIT);

putchar ('\n');

}

printf ("Да? И это все? \n");

delay = 0;

while (delay++  < 3*LIMIT);

putchar ('\007');

printf(" Прекрасно, Ганс!\n");

}

РИС. 6.8. Программа для "перемалывания чисел"

     Технические замечания: операторы while, в которых содержится переменная delay, не делают ничего другого, кроме организации ЗАДЕРЖКИ по времени.

 Символ "точка с запятой" в конце строки показывает на конец тела цикла while, т.е. последующие операторы в него не входят. Цикл while, использованный внутри другого цикла whi1е, называется "вложенным".

Мы полагаем, что на IBM PC подходящим значением для константы LIMIT является число 8000 АХ 11/750 мы предпочитаем число порядка 50000, но на выбор может влиять также уровень загрузки системы, работающей в режиме разделения времени.

Мы полагаем LIMIT равной значению константы типа long (как раз на это и указывает символ L, стоящий в конце) для того, чтобы избежать трудностей, связанных с превышением максимального значения величины типа int (Для 8000 подобные меры предосторожности на самом деле обязательны, но, например, его замена числом 12000 на IBM PC делает это необходимым, поскольку тогда выражение 3*LIMIT будет равно 36000, что превышает максимальное значение величины типа int в этой системе).

Если в вашей вычислительной системе отсутствует громкоговоритель или звонок, вы могли бы заменить оператор putchar('\007') на printf ("Стук копыт"). Эта программа произведет впечатление на ваших друзей и, возможно, успокоит тех, кто боится компьютеров. Мы думаем, такая программа может составить ядро какого-нибудь "Си-вычислителя", но оставляем развитие этой идеи нашим читателям.

ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Что делает функция getchar() вводит в программу символ, поступающий с клавиатуры терминала.

Что делает функция putchar(ch) отображает символ, содержащийся в переменной ch, на экран.

Что символы != означают: не равно.

Что такое EOF: специальный символ, указывающий на конец файла.

Как переключить стандартный ввод на ввод из файла:

program  < file

Как переключить стандартный вывод на вывод в файл:

program  > file

Что такое порты: средства доступа к подсоединенным устройствам.

Как использовать порты: путем вызова функций inp( ) и outp( ).

ВОПРОСЫ И ОТВЕТЫ

Вопросы

1. Выражение putchar(getchar( )) является правильным. Будет ли правильным вы ражение getchar(putchar( ))?


2. Что произойдет в результате выполнения каждого из следующих операторов?

     a. putchar('H' );

     б. putchar(' \007');

     в. putchar('\n');

     г. putchar(' \b')


3. Допустим, у вас есть программа count, подсчитывающая число символов в файле. Напишите команду, в результате выполнения которой будет пpoизвeдeн подсчет числа символов в файле essay, а результат будет помещен в файл essayct.


4. Даны программа и файлы, описанные в вопросе 3. Какие из приведенных ниже команд правильны?

     a. essayct <essay

     б. count essay

     в. count < essayct

     г. essay > count


5. Что делает оператор outp(212, 23)?

Ответы

1. Нет. У функции getchar( ) аргумент должен отсутствовать, а у функции putchar( ) аргумент обязательно должен быть.


2.

     а. печать буквы Н

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных