
- •Н. А. Аленский основы программирования
- •§ 1. Структура простой программы. Ввод, вывод
- •1.1. Пример первой программы
- •1.2. Директива препроцессора #include
- •1.3. Структура программы
- •1.4. Комментарии
- •1.5. Ключевые слова и идентификаторы
- •1.6. Простой ввод, вывод
- •§ 2. Оператор if
- •2.1. Полная форма
- •2.2. Сокращённая форма
- •2.3. Особенности оператора
- •Задачи и упражнения
- •§ 3. Выражения
- •3.1. Константы
- •Непосредственно записать в выражении;
- •3.2. Операции и их приоритет
- •3.3. Операции отношения и логические операции
- •3.4. Особенности операции присваивания
- •3.5. Тернарная операция (?)
- •Задачи и упражнения
- •§ 4. Оператор выбора switch
- •Задачи и упражнения
- •§ 5. Операторы цикла
- •5.1. Оператор while c предусловием
- •Правила использования и особенности оператора while
- •5.2. Оператор цикла do … while c постусловием
- •5.3. Оператор for
- •5.4. Операторы continue и break
- •Задачи и упражнения
- •§ 6. Введение в одномерные массивы
- •6.1. Что такое массив. Объявление одномерного массива
- •6.2. Способы определения массивов
- •6.3. Вывод одномерного массива. Функции printf и сprintf
- •6.4. Некоторые типы простых задач при работе с массивами
- •Задачи и упражнения
- •§ 1. Функции без результатов. Передача параметров по значению
- •1.1. Примеры. Правила оформления и вызова функций
- •Void line2(int Len, y, char ch) // ошибка,
- •1.2. Формальные и фактические параметры
- •1.3. Передача параметров по значению
- •§ 2. Функции типа void с несколькими результатами
- •2.1. Пример
- •2.2. Что такое ссылочный тип
- •2.3. Возврат значений из функции с помощью ссылочного типа
- •Задачи и упражнения
- •§ 3. Функции с одним результатом. Оператор return
- •Задачи и упражнения
- •§ 4. Одномерные массивы в функциях. Сортировка массива
- •Задачи и упражнения.
- •§ 5. Область действия имён. Локальные и глобальные имена
- •§ 6. Дополнительные возможности функций
- •Встраиваемые функции (inlineфункции)
- •6.2. Параметры по умолчанию
- •6.3. Перегрузка функций
- •§ 1. Примеры
- •§ 2. Класс. Поля и методы класса
- •§ 3. Создание объектов. Конструктор
- •Задачи и упражнения.
- •Глава 4 простые типы данных § 1. Целый тип
- •1.1. Битовые операции
- •1.2. Использование битовых операций
- •1.3. Упаковка и распаковка информации
- •Задачи и упражнения.
- •§ 2. Логический тип
- •§ 3. Символьный тип
- •Глава 5 матрицы (двухмерные массивы) § 1. Объявление, способы определения
- •§ 2. Вывод матриц
- •§ 3. Типы алгоритмов на обработку матриц
- •3.1. Построчная обработка
- •3.2. Обработка матрицы по столбцам
- •3.3. Обработка всей матрицы
- •3.4. Обработка части матрицы
- •3.5. Преобразование матрицы
- •Упражнения.
- •3.6. Построение матриц
- •§ 4. Передача матрицы в качестве параметра функции
- •Задачи и упражнения.
- •Б. Обработка матрицы по столбцам.
- •Даны две матрицы a и b одинаковой размерности. Построить матрицу с, каждый элемент которой определяется по правилу:
- •Список рекомендуемой литературы
- •Сборники задач по программированию
- •Оглавление
- •Задачи и упражнения …….……………………………………...12
- •3.1. Константы ………………………………………………...…14
Задачи и упражнения
-
В зависимости от номера месяца вывести одно из слов: зима, весна, лето или осень.
-
В зависимости от номера месяца получить номер квартала.
-
Дано целое число. В зависимости от его значения вывести в правильном падеже какоенибудь заданное слово. Например, 563 символа, 1713 символов, 91 символ и т. п.
-
Вывести заданное целое положительное число a прописью:
а) a<100, то есть число не более чем двухзначное;
б) a<1000, то есть число не более чем трёхзначное.
Например, 145 — сто сорок пять, 26 — двадцать шесть, 7 — семь.
-
Дано целое положительное число, меньшее, чем 1 000 000 000. Вывести это число, отделив пробелом каждую тысячу, а также вывести его прописью, добавив слово рубль (рубля, рублей). Например, 24 514 230 — двадцать четыре миллиона пятьсот четырнадцать тысяч двести тридцать рублей.
-
Сравнить оператор switch с аналогичным оператором case языка Pascal.
§ 5. Операторы цикла
5.1. Оператор while c предусловием
Проанализируем следующую программу:
int main()
{ int mult, to, RES; cout<<"Mult="; cin>>mult;
cout<<"To="; cin>>to;
RES=1;
while (RES< to)
RES*=mult; // или RES=RES*mult;
cout<<"\nResult= "<<RES;
getch(); return 0; }
Оператор цикла while называется цикл с предусловием и выполняется, как и в других языках, следующим образом. Вне цикла, то есть один раз вводим два целых значения и RES=1. Пусть в качестве mult ввели 2, а to=100. Проверяется условие RES<to, записанное в скобках оператора while, то есть 1<100. Так как условие истинно, выполняется RES*=mult, то есть RES=1*2=2. Без какихлибо дополнительных операторов передаётся управление на повторную проверку условия RES<to. Так как 2<100, выполняется RES*=mult, то есть RES=2*2=4. Снова проверяется 4<100, увеличивается RES и т. д., то есть переменная RES будет принимать последовательно значения 16, 32,…. До каких пор? На некотором шаге RES примет значение 64. Так как 64<100, то RES=64*2=128. Проверяется условие 128<100, и так как оно ложно, осуществляется выход из цикла. Это означает, что выполняется оператор, записанный после while, а точнее, после последнего повторяющегося оператора (после тела цикла). У нас повторяется единственный оператор, не считая условия, поэтому выполняется cout<<"\nResult="<<RES и выводится 128.
Оператор while имеет следующий общий вид:
while (выражение)
{ оператор1;
оператор2;
…
операторN; }
Выражение в отличие от Pascal должно записываться в круглых скобках. В простых случаях, как и в других языках, оно является логическим, то есть наряду с другими операциями содержит логические и (или) операции сравнения. Но, в отличие от других языков, как и в операторе if, это не обязательно. Вместо
while (X !=0 ) операторы;
можно записать короче: while (X) операторы;
Фигурные скобки (Begin … End в Pascal) определяют операторы, которые наряду с вычислением и проверкой выражения будут повторяться (тело цикла). Как и в операторе if, эти скобки обязательны, если повторяется более одного оператора, не считая выражения в скобках. Например, добавление в наш цикл фигурных скобок
while ( RES<to)
{ RES*=mult;
cout<<"\nResult= "<<RES;
}
приведёт к тому, что вывод будет выполняться не один раз, как в начальном варианте, а будет повторяться, то есть в “столбик” (так как cout<<"\nResult=”) будет выводиться 2, 4, 8, …, 128 каждый раз вместе с одним и тем же текстом "Result= ". Если в теле цикла один оператор, {} не обязательны, но не будет ошибки, если их написать. Поэтому если есть сомнения в количестве повторяющихся операторов, лучше скобки записать.
Выполнение оператора начинается с вычисления и проверки выражения. Если оно истинно (не равно нулю), выполняется тело цикла, и управление передаётся на повторную проверку выражения. В случае его истинности снова выполняются повторяющиеся операторы. Если на некотором шаге значение выражения станет ложным (равным нулю), осуществляется выход из цикла. Это означает, что тело цикла не выполняется, и управление передаётся на оператор, записанный после while (после тела цикла), а точнее, после закрывающей фигурной скобки для while, если она есть, или после единственного повторяющегося оператора, если скобок нет.