- •Федеральное агентство по образованию Российской Федерации
- •Программирование
- •Часть I
- •Предисловие
- •1. Основные понятия алгоритмизации и программирования
- •1.1. Этапы решения задач на эвм
- •1. Постановка задачи:
- •2. Формализация (анализ и исследование задачи, модели, представление ее в виде уравнений, соотношений, ограничений и т.П.):
- •Понятие моделирования
- •Отладка программы
- •Тест и тестирование программы
- •1.2. Основы алгоритмизации
- •Свойства алгоритма
- •Критерии качества алгоритма
- •Способы описания алгоритмов
- •Структурограмма
- •Синтаксическая диаграмма (формулы Бэкуса-Наура)
- •Базовые алгоритмические конструкции
- •Примеры команды если
- •1.3. Теоретические основы программирования
- •Арифметические выражения
- •Арифметические выражения записываются по следующим правилам:
- •Лабораторная работа № 1 Запись арифметических выражений
- •Задание I
- •Задание II
- •Контрольные вопросы
- •2. Программирование алгоритмов линейной структуры
- •2.2. Основные понятия языка
- •2.3. Данные и способы их организации
- •Порядок объявления и инициализации переменных
- •2.4. Стандартные простые типы данных
- •2.5. Структура программы
- •2.6. Операторы
- •Оператор «выражение»
- •2.7. Организация ввода/вывода данных
- •Лабораторная работа № 2 Программирование алгоритмов линейной структуры
- •Задание I
- •Задание II
- •Задание III
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •Алгоритм (блок - схема)
- •3. Программа
- •4. Результат работы программы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •3. Операторы ветвления
- •3.1. Простые и составные условия
- •Операция &&
- •Операция ||
- •Операция !
- •3.2. Составной оператор
- •3.3. Условная операция (?:)
- •3.4. Условный оператор if
- •If (условие) оператор 1; else оператор 2;
- •If (условие) оператор;
- •3.5. Оператор switch
- •3.6. Оператор перехода goto
- •Лабораторная работа № 3 Программирование алгоритмов разветвляющейся структуры
- •Задание I
- •Задание II
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •4. Циклы
- •4.1. Оператор цикла с параметром (for)
- •4.2. Оператор цикла с предусловием (while)
- •4.3. Оператор цикла с постусловием (do while)
- •Отличие оператора цикла while от оператора цикла do..While
- •4.4. Вложенные циклы
- •Математическая модель
- •Лабораторная работа № 4 Программирование алгоритмов циклической структуры
- •Задание I
- •Задание II
- •Задание III
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •5. Подпрограммы
- •5.1. Понятие подпрограммы
- •5.2. Формальные и фактические параметры
- •5.3. Локальные и глобальные переменные
- •5.4. Функции
- •Задание I
- •Задание II
- •Лабораторная работа №5 Использование функций для решения прикладных задач
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •3. Программа 4. Результат работы программы:
- •6. Итерация и рекурсия
- •6.1. Понятие итеративного процесса
- •6.2. Понятие рекурсии
- •Лабораторная работа №6 Программирование рекурсивных алгоритмов
- •Задание
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •2. Алгоритм
- •3. Программа
- •4. Результат работы программы
- •7. Одномерные массивы
- •7.1. Понятие структурированного типа данных
- •7.2. Понятие и описание типа массив
- •7.3. Одномерные массивы
- •7.4. Основные действия над элементами массивов
- •1. Инициализация массива: присвоение каждому элементу начального значения:
- •2. Вывод массива на экран:
- •3. Обработка массива
- •Лабораторная работа №7 Использование числовых одномерных массивов
- •Задание I
- •Задание II
- •Контрольные вопросы
- •Пример выполнения задания II лабораторной работы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •8. Двумерные массивы
- •Лабораторная работа №8 Двумерные массивы
- •Задание
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •9. Алгоритмы решения задач внутренней сортировки и алгоритмы поиска информации
- •9.1. Сложность алгоритмов
- •9.2. Постановка задачи поиска
- •9.3. Последовательный (линейный) поиск
- •9.4. Бинарный поиск
- •9.5. Постановка задачи сортировки данных
- •9.6. Прямые и быстрые методы внутренней сортировки
- •9.7. Сортировка вставками
- •9.8. Сортировка с помощью прямого выбора
- •9.9. Сортировка с помощью прямого обмена
- •Лабораторная работа № 9 Задачи сортировки и поиска
- •Контрольные вопросы
- •10. Указатели и массивы
- •10.1. Указатели
- •10.2. Взаимосвязь между массивами и указателями
- •10.3. Порядок объявления динамических массивов
- •10.4. Передача массивов в качестве параметров функции
- •Лабораторная работа №10 Применение массивов и указателей для решения прикладных задач
- •Задание I
- •Задание II
- •Задание III
- •11. Особенности работы с функциями
- •11.1. Способы передачи параметров в функцию
- •11.2. Передача имен функций в качестве параметров
- •11.3. Перегрузка функций
- •Лабораторная работа № 11 Исследование способов работы с функциями
- •Задание I
- •Задание II
- •12. Строки как массив элементов типа char
- •Лабораторная работа № 12
- •Задание I
- •Изучение способов формирования строк в языке Си
- •Применение функций работы со строками для обработки символьных массивов
- •Задание II
- •13. Строки как специальный класс string
- •Лабораторная работа № 13 Исследование способов работы с функциями
- •Задание I
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Форма отчета
- •14. Структуры
- •14.1. Изучение порядка объявления и инициализации структур
- •14.2. Программирование с использованием структур
- •14.3. Использование функций для работы с производными типами данных
- •Лабораторная работа № 14 Применение структур для решения прикладных задач
- •Задание I
- •15. Файлы
- •15.1. Подход с использованием возможностей языка Си
- •Ifstream идентификатор_потока(имя_файла,ключи_потока);
- •Лабораторная работа № 15 Исследование методов доступа к файлам данных
- •Задание I
- •1. Работа с неструктурированными данными
- •2. Работа со структурированными данными
- •Пример выполнения лабораторной работы
- •Литература
- •Приложение 1 Порядок выполнения лабораторных работ
- •Приложение 2 Базовые функции
4.4. Вложенные циклы
Тело цикла может содержать любой оператор, в том числе и оператор цикла. Структура цикла, содержащая вложенный цикл, называется кратным циклом. Число вложений может быть произвольным. Если цикл содержит один вложенный цикл, то он называется двойным циклом (рис. 4.2).
Рисунок 4.2 – Блок-схемы некоторых из возможных вариантов реализации двойного цикла
Цикл, который содержит вложенный цикл, называется внешним. В двойном цикле вложенный цикл называется внутренним. На рисунке 4.2.a предложена блок-схема алгоритма, в котором для реализации и ввнешнего и внутреннего циклов использован оператор цикла с параметром (for). Такой вид двойного цикла используется при работе с двумерными массивами (таблицами). На рисунке 4.2.b для реализации внешнего цикла использован оператор цикла с предусловием (while), а внутреннего цикла – оператор цикла с параметром (for). На рисунке 4.2.c ввнешний цикл представлен оператором цикла с параметром (for), а внутренний – оператором цикла с предусловием (while).
Переменная внутреннего цикла всегда меняется быстрее, чем внешнего. Это означает, что для каждого значения внешней переменной цикла меняются все значения внутренней переменной.
Внешний и внутренний циклы могут использовать любой вид операторов цикла C++ (while, do while, for) (рис. 4.2).
Пример.
Дано число
вида
,
где
Вывести на экран все числа
.
Математическая модель
Выпишем все эти числа в ряд:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Сначала увеличиваются единицы от 0 до 9, при этом значение десятков не меняется. Только когда перебор единиц завершён, десятки увеличиваются на 1. После этого опять происходит изменение единиц от 0 до 9. В переменной a – будут десятки, в b – единицы.
|
#include <iostream> #include <conio.h> #include <math.h>
using namespace std;
int main() { int s;
for(int a=1;a<=2;a++) for(int b=1;b<=9;b++) { s = a*10+b; cout<<" "<<s; }
_getch(); return 0; }
|
Результат работы программы
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Лабораторная работа № 4 Программирование алгоритмов циклической структуры
ЦЕЛЬ РАБОТЫ: приобретение навыков программирования вычислительных повторяющихся процессов с использованием циклических операторов.
Выполнение работы: в соответствии с вариантом составить и реализовать программы.
Задание I
Используя оператор цикла с параметром, решить предложенную задачу:
Вычислить сумму и произведение первых n натуральных чисел. Предусмотреть ввод n с клавиатуры.
Вычислить
Вычислить сумму первых n членов ряда с общим членом
.Определить средний рост девочек, и мальчиков одного класса. В классе учится n учеников. (n ≥ 15).
Вводя в цикле по 4 оценки каждого студента группы, подсчитать число студентов, не имеющих оценок 2 и 3. В группе учится n студентов. Предусмотреть ввод n с клавиатуры.
Вводя в цикле по 4 оценки, полученные студентами в сессию, определить средний балл группы по всем экзаменам. В группе учится n студентов. Предусмотреть ввод n с клавиатуры.
Задано n троек, чисел а, b, с. Вводя их по очереди с клавиатуры в порядке возрастания и интерпретируя их как длины сторон треугольника, определить, сколько троек может быть использовано для построения треугольника.
В ЭВМ по очереди поступают результаты соревнований по плаванию на дистанции 200 м, в которых участвует n спортсменов (n > 10). Выдать на экран дисплея лучший результат после ввода результата очередного спортсмена.
В ЭВМ вводятся по очереди координаты n точек (n ≥ 10). Определить, сколько из них попадет в круг радиуса r с центром в точке (а, b).
Ученикам первого класса назначается стакан молока (200 мл), если их вес составляет меньше 30 кг. Определить, сколько литров молока потребуется, ежедневно для одного класса, состоящего из n учеников. После взвешивания вес каждого ученика вводится в ЭВМ.
В ЭВМ вводятся номер по списку и рост учеников 10 класса. Вывести на экран номера по списку тех учеников, рост которых больше 170 см.
В соревнованиях по бегу на дистанции 100 м принимают участие n спортсменов. Вводя очереди номера по списку и результаты участников в ЭВМ, определить, сколько из них выполнили норму, и напечатать их номера (норма равна 13,2 сек.)
В ЭВМ вводятся по очереди координаты n точек. Определить, сколько из них попадет в кольцо с внутренним радиусом r1 и внешним r2.
В ЭВМ по очереди вводятся координаты n точек. Определить, сколько из них принадлежит фигуре, ограниченной осью абсцисс и аркой синусоиды, построенной для аргумента со значениями от 0 до .
Задана окружность радиуса r с центром в начале координат. Вводя последовательно в ЭВМ координаты n точек, являющихся центрами других окружностей того же радиуса, определить, сколько из этих окружностей пересекает данную.
Найти все трехзначные натуральные числа, сумма цифр которых равна их произведению.
Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.
Вычислить сумму
,
где n
≥
10.Вводя в цикле по 4 оценки, полученные студентами в сессию, определить число неуспевающих студентов группы. В группе учится n студентов. Предусмотреть ввод n с клавиатуры.
Цилиндр объема 1 куб.ед. имеет высоту h. Определить радиус основания для значений h от 1 до 6 с шагом 0.5 ед.
Вычислить количество членов последовательности с общим членом
,
которые удовлетворяют условиям 0 ≤ ak
≤ 0.5. Число b
вводится с клавиатуры. Вывести на
печать члены последовательности,
удовлетворяющие данным условиям.В ЭВМ вводятся поочередно n точек. Определить, сколько из них принадлежит фигуре, ограниченной осью ординат и правой полуокружностью х2 + у2 = r2.
В ЭВМ по очереди вводятся координаты n точек. Определить, сколько из них принадлежит фигуре, ограниченной линией | х |+ | у | = 1.
Составить программу вычисления значений функции
при изменении x
0 до 1 с шагом 0.1.Вычислить значение выражения
для произвольного действительного
числа х
из области определения данного
выражения.
