Основы программирования на С++
Рассмотрение способов организации циклов в C++. Знакомство с практическими задачами по операторам циклов. Общая характеристика основных типов данных: описание, особенности их использования в арифметических операциях. Анализ циклов while и for, примеры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.03.2013 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Основные типы данных в C++
цикл арифметический while
Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:
1. int (целый);
2. char (символьный);
3. wchar_t (расширенный символьный);
4. bool (логический);
5. float (вещественный);
6. double (вещественный с двойной точностью).
Первые четыре тина называют целочисленными (целыми), последние два -- типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.
Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:
· short (короткий);
· long (длинный);
· signed (знаковый);
· unsigned (беззнаковый).
Целый тип (int)
Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного -- 4 байта.
Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном -- int и long int. Внутреннее представление величины целого типа -- целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 -- положительное число, 1 -- отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов. Диапазоны значений величин целого типа с различными спецификаторами для IBM PC-совместимых компьютеров приведены в таблице «Диапазоны значений простых типов данных» в конце записи. По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать. Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, l (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно и
Символьный тип (char)
Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от О до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.
Расширенный символьный тип (wchar_t)
Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L»Gates».
Логический тип (bool)
Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false -- 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.
Типы с плавающей точкой (float, double и long double)
Стандарт C++ определяет три типа данных для хранения вещественных значений: float, double и long double.
Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей -- мантиссы и порядка. В IBM PC-совместимых компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса -- это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.
Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка -- его диапазон. Как можно видеть из таблицы в конце записи, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления.
Спецификатор long перед именем типа double указывает, что под его величину отводится 10 байт.
Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, l (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f -- тип float.
Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 98 или OS/2 результатом будет 4.
В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:
sizeof(float) ? slzeof(double) ? sizeof(long double) sizeof(char) ? slzeof(short) ? sizeof(int) ? sizeof(long)
Тип void
Кроме перечисленных, к основным типам языка относится тип void, но множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.
Диапазоны значений простых типов данных в C++ для IBM PC-совместимых компьютеров
Q: Что означает термин IBM PC-совместимый компьютер? A: IBM PC-совместимый компьютер (англ. IBM PC compatible) -- компьютер, архитектурно близкий к IBM PC, XT и AT. IBM PC-совместимые компьютеры построены на базе микропроцессоров, совместимых с Intel 8086 (а, как известно, все выпущенные позднее процессоры Intel имеют полную обратную совместимость с 8086). По сути это практически все современные компьютеры.
Различные виды целых и вещественных типов, различающиеся диапазоном и точностью представления данных, введены для того, чтобы дать программисту возможность наиболее эффективно использовать возможности конкретной аппаратуры, поскольку от выбора типа зависит скорость вычислений и объем памяти. Но оптимизированная для компьютеров какого-либо одного типа программа может стать не переносимой на другие платформы, поэтому в общем случае следует избегать зависимостей от конкретных характеристик типов данных.
Таблица
Тип |
Диапазон значений |
Размер (байт) |
|
bool |
true и false |
1 |
|
signed char |
-128 … 127 |
1 |
|
unsigned char |
0 … 255 |
1 |
|
signed short int |
-32 768 … 32 767 |
2 |
|
unsigned short int |
0 … 65 535 |
2 |
|
signed long int |
-2 147 483 648 … 2 147 483 647 |
4 |
|
unsigned long int |
0 … 4 294 967 295 |
4 |
|
float |
3.4e-38 … 3.4e+38 |
4 |
|
double |
1.7e-308 … 1.7C+308 |
8 |
|
long double |
3.4e-4932 … 3.4e+4932 |
10 |
Для вещественных типов в таблице приведены абсолютные величины минимальных и максимальных значений.
Структура программы
Программа на языке С++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий формат:
Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. Ниже приведены самые необходимые сведения о функциях:
· если функция не должна возвращать значение, указывается тип void:
· тело функции является блоком и, следовательно, заключается в фигурные скобки;
· функции не могут быть вложенными;
· каждый оператор заканчивается точкой с запятой (кроме составного оператора).
Пример структуры программы, содержащей функции main, fl и f2:
Программа может состоять из нескольких модулей (исходных файлов).
Несколько замечаний о вводе/выводе в C++
В языке С++ нет встроенных средств ввода/вывода -- он осуществляется с помощью функций, типов и объектов, содержащихся в стандартных библиотеках. Используется два способа: функции, унаследованные из языка С, и объекты С++.
Основные функции ввода/вывода в стиле С:
Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата format. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами.
Пример программы, использующей функции ввода/вывода в стиле С:
Первая строка этой программы -- директива препроцессора, по которой в текст программы вставляется заголовочный файл, содержащий описание использованных в программе функций ввода/вывода (в данном случае угловые скобки являются элементом языка). Все директивы препроцессора начинаются со знака #.
Третья строка -- описание переменной целого типа с именем i.
Функция printf в четвертой строке выводит приглашение «Введите целое число» и переходит на новую строку в соответствии с управляющей последовательностью \n. Функция scanf заносит введенное с клавиатуры целое число в переменную i (знак & означает операцию получения адреса), а следующий оператор выводит на экран указанную в нем строку, заменив спецификацию преобразова- ния на значение этого числа.
А вот как выглядит та же программа с использованием библиотеки классов С++:
Заголовочный файлсодержит описание набора классов для управления вводом/выводом. В нем определены стандартные объекты-потоки cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток < < и чтения из потока >>. Можно использовать оба способа организации ввода\вывода, но в одной программе смешивать их не рекомендуется.
Условный оператор if в С++
Оператор if используется для того, чтобы определить действия программы при различных условиях. Например у нас есть число. И если оно четное нам нужно его удвоить, а иначе разделить пополам. Для написания подобной программы и используется оператор if. В самой простой вариации он будет иметь следующую форму
http://programmado.ru/16-ifc.html
В этом случае если условие выполняется , то программа совершит некоторое действие. Например:
http://programmado.ru/16-ifc.html
Здесь мы видим, что если некоторая переменная a станет равной 2, то программа её выведет. Для сравнения числа с 2 мы используем двойное равно ==. В С++ двойное равно == используется для любых сравнительных операций. А чтобы проверить переменную на неравенство какому-либо числу надо написать !=.
?
В таком варианте программа выведет a, только если a не равно 2. Теперь поговорим о более сложных вариациях оператора if. Что если мы захотим при невыполнении основного условия сделать что-нибудь другое? Для этого используется структура if() ; else ; Например:
Здесь, если число равно 2, то программа его выведет, а иначе выведет 0. А что если при невыполнении первого условия нам нужно проверять еще что-то? Приведем пример из жизни. Если на улице солнечно то мы можем одеть футболку. А если нет? То мы еще должны посмотреть на улице просто пасмурно, или идет дождь, или может даже снег. Для подобных ситуаций в программировании мы можем использовать структуру if() ; else if() ; else ;
http://programmado.ru/16-ifc.html
Здесь, если a больше 100 то программа выведет 3, а иначе будет смотреть другие варианты. Если число больше 50, то выведет 2, больше или равно 0 выведет 1, а если число отрицательно выведет 0. Примечание: -Любое условие в С++ заключается в круглые скобки() -Для сравнения переменных используются сравнительные символы >, <, ==, != (больше, меньше, равно, не равно) -перед else всегда ставится точка с запятой.
Операторы выбора в С++
Операторы выбора -- это операторы управления потоком выполнения программы. К операторам выбора относят:
· условный оператор с единственным выбором -- if(условие){действие};
· условный оператор с двойным выбором -- if(условие){действие 1} else {действие 2};
· switch-структура с множественным выбором
Таблица. Синтаксис условного оператора с единственным выбором [if () {}]:
Запись для одного оператора при выполнении условия |
Запись для нескольких операторов при выполнении условия |
|
if ( условие )оператор_1; |
if ( условие ){оператор_1;оператор_2;…оператор_n;}; |
Таблица. Синтаксис условного оператора с двойным выбором [if () {} else {}]:
Запись для одного оператора при выполнении условия |
Запись для нескольких операторов при выполнении условия |
|
if ( условие )оператор_1;elseоператор_2; |
if ( условие ){оператор_1;оператор_2;…оператор_n;}else{ оператор_n+1; оператор_n+2; оператор_m; |
Оператором может быть любая команда или арифметическое выражение. Что касается условия, то оно должно быть логическим. Условие даёт ответ либо ложь, либо истину. Для написания условия необходимо знать, какие допустимы операции для использования, которые представлены в таблице 4.1.
Таблица 4.1: Операции, используемые в задании условия
Операция |
Название |
|
< |
меньше |
|
> |
больше |
|
< = |
меньше или равно |
|
> = |
больше или равно |
|
= = |
равно |
|
! = |
не равно |
В логическом условии использование вместо двойного знака равенства = = один знак = будет являться логической ошибкой, так как вместо того чтобы сравнивать переменную с другим значением мы вместо этого присвоим это значение.
Условный оператор с двойным выбором if()else можно записать в следующем виде: ()?():(). В таблице 4.2 приведены аналогичные действия, но различными способами записи.
Таблица 4.2: Пример использования if()else и ()?():()
if()else |
()?():() |
|
int x = 0, y = 0;cin>>x>>y; |
||
if(x>y){cout<<«x больше y \n»;}else{cout<<«y больше или равно x \n»;} |
(x>y)?(cout<<«x больше y \n»;):(cout<<«y больше или равно x \n»;) |
Иногда необходимо написать сложное логическое условие, для этого используются следующие логические операции:
Таблица
|| |
логическое ИЛИ |
|
&& |
логическое И |
Например, необходимо выяснить, попадает ли введенное с клавиатуры число в диапазон [-89, 78]?
Кроме условных операторов единственного и двойного выборов существует оператор switch, который предназначен для множественного выбора.
Синтаксис записи оператора switch
switch (переключающее_выражение)
{
case константное_выражение_1: операторы_1;
case константное_выражение_2: операторы_2;
…
case константное_выражение_N: операторы_N;
default:операторы;
}
Организация циклов в C++
Глава 9. Все в нашей жизни циклично... цикл while, цикл for - Введение в программирование
Все в нашей жизни циклично...дни недели, месяцы, года... И в программировании тоже не обойтись без этого...
В этой главе мы с вами будем рассматривать, так называемые циклы , а именно цикл while и цикл for . Для чего они нужны? Для того, чтобы ответить на этот вопрос давайте представим себе такую ситуацию: ну к примеру вы хотите напечатать на экране свое имя ровно 20 раз. Как вы уже знаете для этого мы должны воспользоваться оператором консольного вывода (cout - поместить в поток). Вот такая строка кода должна выводить ваше имя:
1.cout << "Your name" << endl;
Для того, чтобы вывести имя 20 раз нам нужно написать в своей программе эту строку ровно 20 раз! Хорошо, если вы решили вывести свое имя 20 раз, а не, к примеру, 100 или 1000! Конечно же, вы понимаете, что это очень накладно и нереально. В этом случае на помощь программисту приходят циклы while и for , которые позволяют выполнять определенный участок кода (в нашем случае это печать имени) столько раз, сколько мы укажем. Иными словами, пока не выполнится какое-либо условие, требуемое для завершения цикла. В нашем случае этим условием, как вы уже догадываетесь, является число 20, т.к. печатать нам нужно именно 20 раз. Рассмотрим цикл while.
Операторы циклов: цикл while
Цикл while с предусловием
Синтаксис данного оператора цикла таков:
А теперь давайте с вами запрограммируем эту программу. Итак, программа, печатающая имя, будет выглядеть так:
Мы определяем переменную i, которая у нас будет служить счетчиком, задаем нашему счетчику начальное значение равное единице перед входом в цикл. В цикле определяем условие, при котором у нас будет он работать, т.е. выполняться заключенные в него операторы. После того, как условие перестанет выполняться, цикл завершится и программа выйдет из него и перейдет к выполнению следующих после цикла операторов (у нас это оператор return 0;). Как я уже сказал, для того, чтобы цикл работал должно выполняться указанное в нем условие (у нас это i <= 20), когда i становится равным 21, то операторы заключенные в тело цикла уже выполняться не будут. Естественно, программист должен обязательно позаботиться, чтобы это условие выхода из цикла когда-нибудь сработало, иначе произойдет зацикливание и программа никогда не завершиться (придется аварийно завершать ее). Для этого у нас есть счетчик, который в каждой итерации (одно выполнения цикла) увеличивает свое значение на единицу:
1.i = i + 1;
(Небольшое отступление) Как видите здесь используется оператор присваивания. В предыдущих главах я объяснял как он работает, повторим: то, что находится от оператора присваивания (=) справа, считается и помещается в переменную, расположенную слева от оператора присваивания (=). То есть, если в предыдущей итерации (шаге выполнения цикла) i было равно 2, то новое значение будет с помощью данной строчки кода посчитано так:
1.3 = 2 + 1;
Есть и сокращенная форма записи этой строки кода, которая увеличивает значение переменной на единицу:
1.i++;
++ - это оператор инкремента.
Рассмотренный способ использования оператора цикла while, называется цикл с предусловием. Важно! Запомнить: 1. Циклы в программировании позволяют выполнять отдельный кусочек программы, заключенной в его тело (между {}), столько раз - сколько мы укажем, либо пока не наступит определенное условие его завершения.
2. Обязательно нужно предусмотреть условие выхода из цикла, иначе произойдет ошибка зацикливания программы.
3. В языке программирования С++ существует возможность увеличения значения переменной на единицу с помощью оператора инкремента (++).
Цикл while с постусловием
Цикл while с предусловием мы рассмотрели, но есть еще и второй вариант использования цикла while - это цикл с постусловием. Синтаксис его таков:
8.while (условие выполнения цикла); //не забывайте про точку с запятой
В чем же разница!? Разница одна лишь в том, что тело (содержимое) такого цикла while выполниться как минимум один раз, т.к. условие теперь уже проверяется не в начале цикла, а в конце. Иногда в ваших программах нужно будет использовать именно такую разновидность цикла while.
Важно! Запомнить: 1. Цикл while бывает двух типов: с предусловием и постусловием. В первом варианте тело цикла может ни разу не выполниться, если условие начала цикла не выполняется. Во втором варианте тело цикла выполниться как минимум один раз, т.к условие начала уже второй итерации цикла проверяется не в начале, а в конце.
2. В конце цикла while с постусловием не забывайте ставить точку с запятой.
Операторы циклов: цикл for
Теперь давайте рассмотрим вторую разновидность циклов, используемых в языке программирования С++ - это цикл for. Чем же он отличается? Главное его отличие в том, что в параметрах самого цикла можно инициализировать (объявить) переменную-счетчик, которая у нас будет считать итерации (повторения) циклов, и задать ей начальное значение, задать условие выполнения цикла и изменять значение счетчика. Синтаксис цикла for таков:
Давайте теперь переиначим программу, печатающую ваше имя, под этот цикл. Вот что у нас получится:
Как видите размер кода программы у нас уменьшился, стал более компактным. Легко просматриваются по параметрам цикла for наши начальные значения, условия и приращения, что очень удобно. Какими видами циклов вам удобнее пользоваться в своих программах и в каких ситуациях вы постепенно поймете на практике.
Практические задачи по операторам циклов: цикл while
1. Повторение, управляемое счетчиком. Чтобы лучше понять алгоритм работы цикла while, рассмотрим классическую задачу усреднения:
Проведен опрос класса из 10 студентов. Вам известны оценки по этому опросу (целые числа в диапазоне 0 - 100). Нужно определить среднюю оценку класса. Конечно же, мы помним со школьного курса, что для определения среднего числа группы чисел, нужно найти общую сумму этих чисел и разделить ее на количество суммируемых чисел. Также мы поступим и с нашей задачей. Код программы смотрим ниже:
Результат работы программы:
Рис.
Разберем программу подробнее
Начинаем с объявления необходимых переменных: total - будет накапливать общую сумму баллов студентов; counter - является счетчиком итераций цикла while (в нашем случае число повторений цикла заранее известно, поэтому эту разновидность цикла еще называют повторением, управляемым счетчиком); average - будет содержать у нас наше искомое среднее значение; grade - в эту переменную будем записывать введенное пользователем значение балла.
На следующем шаге присваиваем начальные значения счетчику циклов и общей сумме баллов.
Затем организовываем цикл while, задав условие выполнения, в котором запрашиваем у студента его балл и сохраняем в переменную grade. Также в цикле предусматриваем проверку на правильность ввода данных студентами: в случае правильного ввода засчитываем балл и увеличиваем счетчик цикла на единицу, в обратном случае выводим пользователю подсказку, не засчитыаем балл и не увеличиваем счетчик, т.е. в любом случае у нас будет 10 "правильных" баллов.
Здесь используется операция присваивания в сокращенном виде. Вначале в своих программах вы можете пользоваться полной записью присваивания, а потом уже переходить на сокращенную. Вот полная запись этих строк:
Ну и конечно же последнюю строку, как мы уже говорили выше можно еще записать и так:
2. Повторение, управляемое меткой. Давайте теперь немного модифицируем предыдущую программу, чтобы рассмотреть цикл while, управляемый не счетчиком, а меткой.
В данном варианте этого алгоритма, в котором цикл while управляется меткой (ввод продолжается, пока метка не будет равной -1), студенты могут вводить сколь угодно своих оценок, пока не будет введена метка окончания ввода "-1". Плюс в этой программе есть еще одно нововведение: теперь средний балл будет более точным, т.к. для его хранения мы объявили переменную average типа float (float - тип для хранения дробных чисел с точностью 6 - 7 знаков после запятой, в отличии от double, у которого 13 - 14 знаков).
(Еще раз небольшое отступление). Разберем по ходу еще один новый для вас момент:
В этой строке реализовано приведение типов. Что это такое и для чего служит? Мы объявили переменную average как float, но переменные total и counter у нас объявлены как int, а значит после операции деления, в случае, если получиться дробное число, дробная часть будет отброшена (потеряна). Для того, чтобы избежать потери нужно, чтобы делимое total было тоже типа float, а так как мы его не объявили изначально типа float, то приведем его сейчас к float.
Теперь рассмотрим пример использования цикла while с постусловием. Запрограммируем решение вот такой задачи:
Одна большая химическая компания платит своим продавцам на основе комисионных. Продавец получает $200 в неделю плюс 9% от объема продаж за неделю. Например, продавец, который продал за неделю химикалий на $5000 получит $200 плюс 9% от $5000, то есть в итоге $650. Нужно разработать программу, которая будет вводить для каждого продавца его объем продаж за последнюю неделю, рассчитывать и выводить на экран его заработок. Данные должны вводиться поочередно для каждого продавца.
Приступим к программированию. Вот такая программа будет выполнять поставленную задачу:
Результат работы программы:
Рис.
4. Цикл for. Решим вот такую вот задачу:
Программа последовательно запрашивает у пользователя десять чисел и находит максимальное из них. Выводит результат на экран.
Результат работы программы:
Рис.
Все в нашей жизни циклично... цикл while, цикл for - Введение в программирование
Все в нашей жизни циклично...дни недели, месяцы, года... И в программировании тоже не обойтись без этого...
В этой главе мы с вами будем рассматривать, так называемые циклы , а именно цикл while и цикл for . Для чего они нужны? Для того, чтобы ответить на этот вопрос давайте представим себе такую ситуацию: ну к примеру вы хотите напечатать на экране свое имя ровно 20 раз. Как вы уже знаете для этого мы должны воспользоваться оператором консольного вывода (cout - поместить в поток). Вот такая строка кода должна выводить ваше имя:
Для того, чтобы вывести имя 20 раз нам нужно написать в своей программе эту строку ровно 20 раз! Хорошо, если вы решили вывести свое имя 20 раз, а не, к примеру, 100 или 1000! Конечно же, вы понимаете, что это очень накладно и нереально. В этом случае на помощь программисту приходят циклы while и for , которые позволяют выполнять определенный участок кода (в нашем случае это печать имени) столько раз, сколько мы укажем. Иными словами, пока не выполнится какое-либо условие, требуемое для завершения цикла. В нашем случае этим условием, как вы уже догадываетесь, является число 20, т.к. печатать нам нужно именно 20 раз. Рассмотрим цикл while.
Операторы циклов: цикл while
Цикл while с предусловием
Синтаксис данного оператора цикла таков:
1.while (условие выполнения цикла)
А теперь давайте с вами запрограммируем эту программу. Итак, программа, печатающая имя, будет выглядеть так:
Мы определяем переменную i, которая у нас будет служить счетчиком, задаем нашему счетчику начальное значение равное единице перед входом в цикл. В цикле определяем условие, при котором у нас будет он работать, т.е. выполняться заключенные в него операторы. После того, как условие перестанет выполняться, цикл завершится и программа выйдет из него и перейдет к выполнению следующих после цикла операторов (у нас это оператор return 0;). Как я уже сказал, для того, чтобы цикл работал должно выполняться указанное в нем условие (у нас это i <= 20), когда i становится равным 21, то операторы заключенные в тело цикла уже выполняться не будут.
Естественно, программист должен обязательно позаботиться, чтобы это условие выхода из цикла когда-нибудь сработало, иначе произойдет зацикливание и программа никогда не завершиться (придется аварийно завершать ее). Для этого у нас есть счетчик, который в каждой итерации (одно выполнения цикла) увеличивает свое значение на единицу:
1.i = i + 1;
(Небольшое отступление) Как видите здесь используется оператор присваивания. В предыдущих главах я объяснял как он работает, повторим: то, что находится от оператора присваивания (=) справа, считается и помещается в переменную, расположенную слева от оператора присваивания (=).
То есть, если в предыдущей итерации (шаге выполнения цикла) i было равно 2, то новое значение будет с помощью данной строчки кода посчитано так:
1.3 = 2 + 1;
Есть и сокращенная форма записи этой строки кода, которая увеличивает значение переменной на единицу:
1.i++;
++ - это оператор инкремента.
Рассмотренный способ использования оператора цикла while, называется цикл с предусловием.
Важно! Запомнить: 1. Циклы в программировании позволяют выполнять отдельный кусочек программы, заключенной в его тело (между {}), столько раз - сколько мы укажем, либо пока не наступит определенное условие его завершения.
2. Обязательно нужно предусмотреть условие выхода из цикла, иначе произойдет ошибка зацикливания программы.
3. В языке программирования С++ существует возможность увеличения значения переменной на единицу с помощью оператора инкремента (++).
Операторы циклов: цикл while
Цикл while с постусловием
Цикл while с предусловием мы рассмотрели, но есть еще и второй вариант использования цикла while - это цикл с постусловием. Синтаксис его таков:
В чем же разница!? Разница одна лишь в том, что тело (содержимое) такого цикла while выполниться как минимум один раз, т.к. условие теперь уже проверяется не в начале цикла, а в конце.
Иногда в ваших программах нужно будет использовать именно такую разновидность цикла while. Перепишем нашу программу с использованием данной разновидности цикла while:
Важно! Запомнить: 1. Цикл while бывает двух типов: с предусловием и постусловием. В первом варианте тело цикла может ни разу не выполниться, если условие начала цикла не выполняется. Во втором варианте тело цикла выполниться как минимум один раз, т.к условие начала уже второй итерации цикла проверяется не в начале, а в конце.
2. В конце цикла while с постусловием не забывайте ставить точку с запятой.
Операторы циклов: цикл for
Теперь давайте рассмотрим вторую разновидность циклов, используемых в языке программирования С++ - это цикл for. Чем же он отличается? Главное его отличие в том, что в параметрах самого цикла можно инициализировать (объявить) переменную-счетчик, которая у нас будет считать итерации (повторения) циклов, и задать ей начальное значение, задать условие выполнения цикла и изменять значение счетчика. Синтаксис цикла for таков:
Давайте теперь переиначим программу, печатающую ваше имя, под этот цикл. Вот что у нас получится:
Как видите размер кода программы у нас уменьшился, стал более компактным. Легко просматриваются по параметрам цикла for наши начальные значения, условия и приращения, что очень удобно. Какими видами циклов вам удобнее пользоваться в своих программах и в каких ситуациях вы постепенно поймете на практике.
Практические задачи по операторам циклов: цикл while
1. Повторение, управляемое счетчиком. Чтобы лучше понять алгоритм работы цикла while, рассмотрим классическую задачу усреднения:
Проведен опрос класса из 10 студентов. Вам известны оценки по этому опросу (целые числа в диапазоне 0 - 100). Нужно определить среднюю оценку класса.
Конечно же, мы помним со школьного курса, что для определения среднего числа группы чисел, нужно найти общую сумму этих чисел и разделить ее на количество суммируемых чисел. Также мы поступим и с нашей задачей. Код программы смотрим ниже:
Результат работы программы:
Рис.
Разберем программу подробнее
Начинаем с объявления необходимых переменных: total - будет накапливать общую сумму баллов студентов; counter - является счетчиком итераций цикла while (в нашем случае число повторений цикла заранее известно, поэтому эту разновидность цикла еще называют повторением, управляемым счетчиком); average - будет содержать у нас наше искомое среднее значение; grade - в эту переменную будем записывать введенное пользователем значение балла.
На следующем шаге присваиваем начальные значения счетчику циклов и общей сумме баллов.
Затем организовываем цикл while, задав условие выполнения, в котором запрашиваем у студента его балл и сохраняем в переменную grade.
Также в цикле предусматриваем проверку на правильность ввода данных студентами: в случае правильного ввода засчитываем балл и увеличиваем счетчик цикла на единицу, в обратном случае выводим пользователю подсказку, не засчитыаем балл и не увеличиваем счетчик, т.е. в любом случае у нас будет 10 "правильных" баллов.
Далее подсчитываем средний балл и запоминаем в переменную average, выводим результат на экран.
Примечание:
Здесь используется операция присваивания в сокращенном виде. Вначале в своих программах вы можете пользоваться полной записью присваивания, а потом уже переходить на сокращенную.
Вот полная запись этих строк:
Ну и конечно же последнюю строку, как мы уже говорили выше можно еще записать и так:
2. Повторение, управляемое меткой. Давайте теперь немного модифицируем предыдущую программу, чтобы рассмотреть цикл while, управляемый не счетчиком, а меткой.
В отличии от счетчика, когда количество повторений заранее известно, количество итераций цикла, управляемого меткой, заранее неизвестно. Т.е. мы можем использовать баллы скольких угодно студентов, пока не будет окончен ввод.
В данном варианте этого алгоритма, в котором цикл while управляется меткой (ввод продолжается, пока метка не будет равной -1), студенты могут вводить сколь угодно своих оценок, пока не будет введена метка окончания ввода "-1". Плюс в этой программе есть еще одно нововведение: теперь средний балл будет более точным, т.к. для его хранения мы объявили переменную average типа float (float - тип для хранения дробных чисел с точностью 6 - 7 знаков после запятой, в отличии от double, у которого 13 - 14 знаков).
(Еще раз небольшое отступление). Разберем по ходу еще один новый для вас момент:
В этой строке реализовано приведение типов. Что это такое и для чего служит? Мы объявили переменную average как float, но переменные total и counter у нас объявлены как int, а значит после операции деления, в случае, если получиться дробное число, дробная часть будет отброшена (потеряна). Для того, чтобы избежать потери нужно, чтобы делимое total было тоже типа float, а так как мы его не объявили изначально типа float, то приведем его сейчас к float.
3. Теперь рассмотрим пример использования цикла while с постусловием. Запрограммируем решение вот такой задачи:
Одна большая химическая компания платит своим продавцам на основе комисионных. Продавец получает $200 в неделю плюс 9% от объема продаж за неделю. Например, продавец, который продал за неделю химикалий на $5000 получит $200 плюс 9% от $5000, то есть в итоге $650. Нужно разработать программу, которая будет вводить для каждого продавца его объем продаж за последнюю неделю, рассчитывать и выводить на экран его заработок. Данные должны вводиться поочередно для каждого продавца.
Результат работы программы:
4. Цикл for. Решим вот такую вот задачу:
Программа последовательно запрашивает у пользователя десять чисел и находит максимальное из них. Выводит результат на экран.
Результат работы программы:
Рис.
Размещено на Allbest.ru
...Подобные документы
Характеристика алгоритма, его свойств, способов записи. Особенности, типовые примеры линейной алгоритмической структуры. Анализ разветвляющей алгоритмической структуры. Изучение основных операторов циклов. Эволюция, классификация языков программирования.
контрольная работа [492,2 K], добавлен 15.02.2010Способ представления графа в информатике. Алгоритмы поиска элементарных циклов в глубину в неориентированных графах. Описание среды wxDev-C++, последовательность создания проекта. Руководство пользователю программы поиска и вывода на экран простых циклов.
курсовая работа [783,2 K], добавлен 18.02.2013Понятие и основные определения гамильтоновых графов, теоремы их достаточности и особенности методов нахождения циклов. Сущность метода перебора Робертса и Флореса и его улучшение. Задачи отыскания гамильтоновых циклов в графах, создание программы.
курсовая работа [76,5 K], добавлен 01.07.2010Особенности использования переменных вещественного типа в программе. Основные виды типов данных: простые, структурированные, указатели, процедурные, объекты. Работа и структура оператора while. Характеристика основных отличий while от оператора repeat.
контрольная работа [31,4 K], добавлен 17.08.2010Описание методов нахождения и построения эйлеровых циклов в графах при раскрытии содержания цикломатических чисел и фундаментальных циклов. Изучение алгоритма решения задачи "Китайского почтальона" и разработка программы, решающей задачу на языке Си.
курсовая работа [924,3 K], добавлен 09.01.2011Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.
дипломная работа [276,6 K], добавлен 26.01.2011Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Табличный вывод значений суммы ряда и номера последнего элемента суммы в зависимости от значений величин входных параметров с применением операторов ветвления и циклов. Блок-схема алгоритма решения. Время работы программы для расчета одного значения.
контрольная работа [762,9 K], добавлен 14.05.2013Рассмотрение основных этапов создания приложения "Записная книжка", основное предназначение. Анализ способов выбора среды программирования. Знакомство с элементом управления Data Grid View. Общая характеристика методов конструкции языка программирования.
контрольная работа [1002,4 K], добавлен 21.06.2014Общая характеристика инфологической модели информационной системы. Знакомство с особенностями проектирования базы данных "Библиотека", анализ основных этапов. Рассмотрение способов составления запросов по выборке информации из таблиц базы данных.
контрольная работа [831,2 K], добавлен 08.12.2013Рабочая среда Visual Basic (VB) и ее основные компоненты. Ввод и вывод данных в VB. Объявление переменных и констант в программе. Создание и работа с процедурами и функциями, их виды. Организация ветвления в VB. Использование циклов в программировании.
практическая работа [502,5 K], добавлен 26.10.2013Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива.
курсовая работа [1,7 M], добавлен 06.01.2014Описание и сравнение основных современных языков и сред программирования. Анализ назначения и применения одномерных и многомерных массивов. Исследование особенностей выполнения арифметических операций в программах и использования условного оператора.
курсовая работа [969,5 K], добавлен 21.04.2016Вычисление выражений, использование стандартных функций; работа с графикой. Порядок действий при вычислении, способы ввода данных с клавиатуры. Построение таблиц функций. Организация циклов в программе, итерационные процессы. Работа с массивами чисел.
контрольная работа [614,7 K], добавлен 16.09.2012Данные как непременный атрибут любой программы. Знакомство с особенностями трёхуровневого иерархического списка. Общая характеристика основных компонентов формы MainForm и Correct. Анализ логической структуры данных, рассмотрение способов управления.
дипломная работа [491,1 K], добавлен 27.05.2013Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.
контрольная работа [318,0 K], добавлен 13.01.2013Характеристика основных разделов программирования, изучаемых в курсе программирования на языке С++. Описание внутренних переменных, входных и выходных данных. Особенности использования компилятора Microsoft Visual Studio 2008. Руководство пользователя.
курсовая работа [18,8 K], добавлен 14.12.2010Понятие и свойства алгоритма. Основные типы учебных алгоритмических задач. Обучение программированию в среде Лого. Архитектура, режим работы и система команд исполнителя черепашка. Примеры создания геометрических фигур, организации циклов со счетчиком.
презентация [327,0 K], добавлен 19.10.2014Знакомство с наиболее известными технологиями программирования. Особенности разработки программ для вычисления интеграла по формуле средних прямоугольников. Общая характеристика методов структурного программирования. Рассмотрение формулы Симпсона.
курсовая работа [1,3 M], добавлен 03.03.2015История и задачи разработки языка программирования Pascal. Понятие и характерные особенности типизированного файла, основные операции с файловыми переменными. Блок-схема алгоритма и исходный текст программы для обработки сведений об учениках школы.
контрольная работа [55,3 K], добавлен 31.07.2013