Язык Си - [38]
Как использовать операции: +,-,*,/,%,++, --, (type).
Что такое операнд: это - величина, над которой выполняется операция.
Что такое выражение: совокупность операций и операндов.
Как вычислять значение выражения: в соответствии с порядком старшинства.
Как распознать оператор: по символу.
Виды операторов: операторы описания, присваивания, while, составной.
Как сформировать составной оператор: заключить последовательность операторов в фигурные скобки {}.
Как сформируется оператор while: while (проверка условия) оператор.
Как вычисляются выражения со смешанными типами данных: с помощью автоматического преобразования типов.
ВОПРОСЫ И ОТВЕТЫ
Вопросы.
1. Предположим, все переменные имеют тип int. Определите значение каждой из последующих переменных:
а. х = (2+3)*6,
б. х = (12+6)/2*3,
в. y = x = (2+3)/4,
г. y = 3 + 2*(x = 7/2 ),
д. x = (int)3.8 + 3.3,
2. Мы подозреваем, что в программе, приведенной ниже, имеется несколько ошибок. Сумеете ли вы помочь нам их обнаружить?
main( )
{
int i = 1,
float n;
printf(" Внимание! Сейчас появится несколько дробей. \n");
while (i < 30)
n = 1/ i;
printf(" %f", n);
printf(" Вот и все! Конец! \n"),
}
3. Ниже приведена первая попытка сделать программу "секунды в минуты" диалоговой. Программа нас не удовлетворяет. Почему? Как ее улучшить?
#define SM 60
main( )
{
int sec, mm, left,
printf( Эта программа переводит секунды в минуты и секунды \n );
printf( 'Укажите число секунд \n ),
printf( Для окончания работы программы необходимо ввести 0 \n);
while (sec < 0)
{
scanf( %d", &sec),mm = sec/SM,left = sec % SM,
printf("%d с это % d мин %d с \n", sec, mm, left),
printf(" Введите следующее значение \n"),
}
printf( До свидания!\n ),
}
Ответы
1. а. 30
б. 27(а не 3). Результат 3 можно получить в случае (12 + 6)/(2*3)
в. х = 1, у = 1 (деление целых чисел)
г. х = 3 (деление целых чисел) и у = 9
д. х = 6, так как (int)3.8=3.3 + 3.3 = 6.3, это число будет преобразовано в число 6, поскольку х имеет тип int
2. Строка 3: должна оканчиваться точкой с запятой, а не запятой.
Строка 7: оператор while представляет собой бесконечный цикл, потому что величина переменной i остается равной 1 и всегда будет меньше 30. По всей видимости, мы собирались написать while(i+ + < 30).
Строки 7-9: отступы в строках подразумевают, по видимому, что из операторов, расположеных в строках 8 и 9, мы намеревались сформировать блок, но отсутствие фигурных скобок означает, что цикл while включает в себя только оператор, расположенный на строке 8; поэтому фигурные скобки должны быть обязательно добавлены.
Строка 8: поскольку 1 и i - оба целого типа, результат деления будет равен 1 при i, равном 1, и 0 - для всех больших значений. Необходимо писать так n = 1.0/i; перед делением значение переменной i будет приведено к типу данных с плавающей точкой и будет получен ненулевой результат.
Строка 9: мы опустили символ "новая строка" в управляющей строке; это приведет к тому, что числа будут печататься на одной строке, если так допускается устройством вывода.
3. Основная трудность лежит в согласовании между оператором, выполняющим проверку (величина переменной sec больше 0 или нет?), и оператором scanf( ), осуществляющим ввод значения переменной sec. В частности, когда проверка выполняется первый раз, переменная sec в программе еще не получает своего значения, и поэтому сравнение будет производиться с некоторой случайной величиной (мусором"), которая может оказаться в соответствующей ячейке памяти. Одно решение, хотя и некрасивое, заключается в инициализации переменной sec, скажем величиной 1, в результате чего первый раз сравнение выполнится. Но здесь обнаруживается вторая проблема. Когда при окончании работы мы набираем величину 0, чтобы остановить программу, оказывается, что значение переменной sec проверяется только после завершения шага цикла и происходит вывод на печать результатов для 0 секунд. На самом деле нам хотелось бы, чтобы оператор scanf( ) выполнялся перед тем, как осуществляется проверка в операторе while. Этого можно достичь путем следующей модификации средней части программы
scanf(" %d," &sec);
while(sec > 0){
mm = sec / SM;
left = sec % SM;
printf(" %d сэто%d мин%d с\n", sec, mm, left);
printf(" Введите следующее значение \n");
scanf(" %d ", &sec);
}
В первый раз ввод указанной величины в программу осуществляется функцией scanf( ), помещенной перед циклом, а ввод каждой последующей величины будет выполняться функцией scanf в конце цикла (и, следовательно, как раз перед тем, как начнется выполнение очередного шага цикла). Этот подход является общим способом решения проблем подобного сорта.
УПРАЖНЕНИЯ
Ниже приводятся задачи, решения которых мы не даем. Чтобы узнать, работает ли ваша программа, необходимо выполнить ее на вашей машине.
1. Измените нашу программу "сумма" так, чтобы она определяла сумму первых 20 чисел. (Если хотите, можете считать, что эта программа вычисляет, сколько денег вы получите за 20 дней, если в первый день вы получите 1 долл , во второй - 2, в третий - 3 и т.д.). Модифицируйте потом свою программу таким образом, чтобы вы могли в диалоговом режиме указать ей, до какого дня следует вести расчет, т. е. замените константу 20 переменной, значение которой присваивается в результате операции ввода.
![Язык программирования C [Лекции и упражнения, 6-е изд.]](/storage/book-covers/92/9246b6fb87d50a85c0d498c0c8ca4f20637f4822.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)

Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.

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

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

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

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.