Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа. Характерные приемы программированияСтр 1 из 5Следующая ⇒
Общие сведения 1.1.1 Любой сложный алгоритм можно представить, используя три основные управляющие конструкции. К базовым относят: а) следование - обозначает последовательное выполнение действий; б) ветвление - выбор одного из двух вариантов действий; в) цикл-пока - определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла. Кроме базовых, процедурные языки программирования высокого уровня используют три дополнительные конструкции, реализуемые через базовые: а) выбор - выбор одного варианта из нескольких в зависимости от значения некоторой величины; б) цикл-до - повторение действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле; в) цикл с заданным числом повторений (счетный цикл) - повторение некоторых действий указанное количество раз. Перечисленные конструкции были положены в основу структурного программирования, а в языках программирования высокого уровня появились управляющие операторы для их реализации. Для изображения алгоритмов структурных программ могут использоваться: 1) блок-схемы; 2) псевдокоды; 3) Flow-формы; 4) диаграммы Насси-Шнейдермана.
1.1.2 Программы, написанные с использованием только структурных операторов передачи управления, называют структурными, чтобы подчеркнуть их отличие от программ, разрабатываемых с использованием низкоуровневых способов передачи управления. Каждой управляющей конструкций, рассмотренной в п.1.1.1, можно поставить в соответствие оператор С++. Так, например, к базовым следует отнести: а) оператор присваивания переменная = выражение; б) оператор условного перехода: - в полной форме if (условие) оператор1; else оператор2; - в краткой форме if (условие) оператор; в) оператор цикла с предварительным условием (с предусловием) while (условие) или while (условие) { оператор; оператор1; оператор2; операторN; } Дополнительным конструкциям следует поставить в соответствие: а) оператор- переключатель switch (оператором выбора или варианта) switch (выражение) { case n1: оператор1; break; case n2: оператор2; break; case nk: операторК; break; default: операторN; break; } б) троичный условный оператор (выражение1)? выражение2: выражение3;
в) оператор цикла с последующим условием (с постусловием) do или do { {оператор;} оператор1; while (условие); оператор2; … операторN; } while (условие); г) оператор цикла с параметром for (инициализация; проверка; приращение) {оператор1; оператор2; … операторN; } Задание к лабораторной работе Выбрать вариант по таблице 1.1 и решить задачу, используя базовые и дополнительные структуры. К каждой задаче построить блок-схему. Организовать диалог с пользователем. Таблица 1.1 – Варианты заданий
1.3 Контрольные вопросы 1.3.1 Какие алгоритмические структуры относятся к базовым? Какие к дополнительным? Приведите примеры базовых и дополнительных структур. 1.3.2 Как графически изображаются схемы алгоритмов? Какое преимущество имеют Flow-формы и диаграммы Насси-Шнейдермана? Какие достоинства и недостатки имеют блок-схемы? 1.3.3 В чем отличие между оператором и операцией? Какие виды операций существуют? 1.3.4 Перечислите известные Вам операции присваивания в С++. 1.3.5 Какие операторы С++ реализуют ветвление? В чем их особенности? Приведите примеры использования. 1.3.6 Какую структуру имеет оператор выбора? С какой целью используется оператор break? 1.3.7 В чем заключаются особенности форматного ввода – вывода? 1.3.8 Какие операторы С++ реализуют циклы? В чем их особенности? Приведите примеры использования. 1.3.9 Приведите примеры организации пустого и бесконечного циклов. 1.3.10Как с помощью цикла while можно сымитировать цикл for? Общие сведения 2.1.1 Часто при решении разного рода вычислительных задач приходится использовать одни и те же стандартные алгоритмы для получения суммы, произведения, количества элементов некоторой структуры, поиска максимального или минимального их значения, так называемые характерные приемы программирования. На практике реализация всех характерных приемов сводится к следующему: - до открытия цикла задается начальное значение накапливаемого или предположительное значение искомого параметра; - внутри цикла осуществляется непосредственно накапливание или поиск. Рекомендации по практическому осуществлению характерных приемов программирования приведены в таблице 2.1. Таблица 2.1 – Характерные приемы программирования
2.1.2 Часто в математических вычислениях возникает необходимость определить сумму бесконечного ряда с заданной точностью. На такие задачи налагается жесткое условие: ряд должен быть сходящимся, т.е. абсолютное значение текущего элемента ряда должно быть меньше абсолютного значения его предыдущего элемента. В подобных случаях можно пользоваться итерационными циклами, реализуемыми операторами цикла с предварительным и с последующим условиями. Иначе условие выхода из цикла никогда не будет выполнено и цикл станет бесконечным. 2.1.3 Если определен способ вычисления текущего значения заданной последовательности по предыдущему значению, то говорят, что задана рекуррентная формула вычисления элемента последовательности. В таком способе задания есть необходимый атрибут – явно заданное начальное значение этой последовательности.
При вычислении элементов рекуррентно заданной последовательности может использоваться любой из операторов цикла в зависимости от поставленной задачи.
Задание к лабораторной работе Выбрать вариант по таблице 2.1 и решить задачу, используя известные численные методы и характерные приемы программирования. К каждой задаче построить блок-схему. Организовать диалог с пользователем. Таблица 2.2 – Варианты заданий
2.3 Контрольные вопросы 2.3.1 Какие вычислительные процессы считаются итерационными? 2.3.2 Какие формулы называются рекуррентными? 2.3.3 Что такое аппроксимация функций? 2.3.4 Каковы преимущества численных методов интегрирования? 2.3.5 В каких случаях целесообразно применение численных методов интегрирования?
2.3.6 Почему при накоплении количества, суммы или произведения начальное значение целесообразно инициализировать до цикла? 2.3.7 Приведите алгоритм поиска максимального значения среди элементов последовательности а1, а2, а3 …а10. 2.3.8 Как выбирается предполагаемое значение при поиске минимального значения? 2.3.9 Приведите алгоритм поиска среднего арифметического элементов последовательности а1, а2, а3 …а10. 2.3.10 Чем будет отличаться поиск среднего геометрического элементов приведенной в п.2.3.8 последовательности?
Общие сведения Массив — это упорядоченный набор элементов одинакового типа, имеющих общее имя. Все элементы массива пронумерованы. Порядковый номер элемента в массиве называется индексом. Массивы должны быть обязательно описаны перед использованием в программе. Различают одномерные (векторы), двумерные (матрицы) и многомерные массивы, однако на практике массивы размерностью свыше трех используются крайне редко. Общий вид объявления массива: тип_элементов имя_массива [N1][N2]...[Nk]; Количество индексов [N1][N2]...[Nk] определяет размерность массива. При объявлении массива указывается общее число элементов массива. Индексация элементов массива в С++ по умолчанию начинается с нуля. Размер массива может задаваться константой или константным выражением. Нельзя задать массив переменного размера, для этой цели используется отдельный механизм - динамическое выделение памяти. В языке C++ возможна инициализация массива при его объявлении. К элементам массива применимы две операции: присваивание и выборка. Для выборки элементов массива и их обработки чаще всего используются циклы.
Задание к лабораторной работе Решить задачу, соответствующую варианту, выбранному по таблице 3.1. Построить блок-схему программы и организовать ввод данных, если это необходимо, с помощью генератора случайных чисел.
Таблица 3.1 – Варианты заданий
3.3 Контрольные вопросы 3.3.1 Что представляет собой массив элементов? 3.3.2 Какой максимальной размерности может быть многомерный массив? 3.3.3 Как объявляется массив? 3.3.4 С какой целью используется механизм выделения динамической памяти? 3.3.5 Как инициализируются элементы массива? 3.3.6 Как можно сформировать случайным образом массив элементов? 3.3.7 Какие способами ввода элементов массива существуют в С++? 3.3.8 Приведите алгоритм нахождения максимального значения в каждой строке матрицы произвольного размера. 3.3.9 Каковы особенности обработки квадратной матрицы? 3.3.10 Как организовать обработку матрицы произвольной размерности по столбцам (по строкам)?
Общие сведения Во многих задачах бывает необходимо переставить элементы массива таким образом, чтобы они располагались в порядке возрастания или убывания. Такие массивы называются упорядоченными, а процесс их получения — сортировкой. 4.1.1 Сортировка простым выбором. Самым простым алгоритмом является сортировка простым выбором. В сортируемом массиве находится минимальный элемент, который обменивается местами с элементом в начале массива. Оставшаяся часть массива рассматривается как самостоятельный массив, в котором также производится поиск наименьшего элемента и его обмен с первым элементом укороченного массива. Действия повторяются до тех пор, пока массив не укоротится до одного элемента. 4.1.2 Метод пузырьковой сортировки. Под пузырьковой сортировкой понимают целый класс алгоритмов сортировки. В своем простейшем варианте пузырьковая сортировка выполняется крайне медленно, поэтому обычно применяют пузырьковую сортировку с элементами оптимизации. Все алгоритмы пузырьковой сортировки имеют общую особенность – обмен элементов производится между двумя соседними элементами массива. Можно уменьшить количество проходов сортировки, выполняя их не (N-1)2 раз, а пока массив не будет отсортирован. Определить этот факт достаточно просто: если массив уже отсортирован, то в процессе прохода в нем не происходит никаких перестановок. Перед началом просмотра нужно установить признак отсутствия перестановок (флаг). В случае, если производится хотя бы одна перестановка, флаг изменяет свое значение. Если к моменту завершения прохода значение флага осталось первоначальным, значит, массив отсортирован и дальнейшие проходы не нужны. Для оптимизации метода пузырьковой сортировки по времени выполнения каждого прохода можно использовать то, что после первого прохода наибольший элемент окажется в конце массива на предназначенном ему месте. В процессе выполнения второго прохода то же самое произойдет со следующим по величине элементом и т.д. Поэтому при последующих проходах можно уменьшать длину просмотра массива, что существенно сократит общее время выполнения алгоритма. Если объединить этот метод оптимизации с проверкой признака завершения сортировки, то получится алгоритм обменной сортировки с признаком завершения. Задание к лабораторной работе Решить задачу, соответствующую варианту, выбранному по таблице 4.1. Построить блок-схему программы и организовать ввод данных, если это необходимо, с помощью генератора случайных чисел. Таблица 4.1 – Варианты заданий
4.3 Контрольные вопросы 4.3.1 Перечислите известные Вам методы сортировки. 4.3.2 В чем заключается суть метода сортировки простым выбором? 4.3.3 Приведите блок-схему метода сортировки простым выбором. 4.3.4 Перечислите отличительные особенности метода пузырьковой сортировки? 4.3.5 В чем смысл оптимизации метода пузырьковой сортировки? 4.3.6 Как можно уменьшить количество проходов сортировки при использовании метода пузырьковой сортировки? 4.3.7 С какой целью используется признак отсутствия перестановок при оптимизации метода пузырьковой сортировки? 4.3.8 В чем заключается суть оптимизации метода пузырьковой сортировки по времени выполнения каждого прохода? 4.3.9 Приведите блок-схему алгоритма оптимизации метода пузырьковой сортировки по времени выполнения каждого прохода. 4.3.10 Приведите пример алгоритма обменной сортировки с признаком завершения.
Общие сведения Строка представляет собой массив значений типа char, завершающийся нулевым байтом ‘\0’, что следует учитывать при объявлении строки, т.е. указывать не N, а N+1 элемент. При инициализации строк используются традиционные методы объявления. Для определения константы, равной длине инициализированной строковой переменной, можно воспользоваться функцией sizeof(). Для ввода символьных переменных и строк в C предназначены функции scanf() (ввод до первого пробельного символа) или gets() из библиотеки <stdio.h>. С++ дополнительно предоставляет пользователю две функции cin,get и cin.getline из библиотеки <iostream.h>. Для вывода в этих же библиотеках существуют аналогичные функции. При работе со строками чаще всего используются функции библиотеки <string.h>, в частности: а) склеивание – последовательное объединение нескольких строк: strcat (str1, str2); б) копирование строк: strcpy(str1, str2); в) сравнение строк: strcmp(str1,str2); г) длина строки: lenth=strlen(str1); д) преобразование строчных символов в прописные: strlwr(str1); е) преобразование прописных символов в строчные: strupr(str1); ж) заполнение строки некоторым символом: strset(str1, ’символ’); и) получить код символа: n=int(a); Задания к лабораторной работе Решить задачу, соответствующую варианту, выбранному по таблице 5.1. Построить блок-схему программы и организовать ввод данных пользователем.
Таблица 5.1 – Варианты заданий
5.3 Контрольные вопросы 5.3.1 Что представляет собой строка? 5.3.2 Как объявляются строковые переменные? 5.3.3 Назовите основные особенности строк. 5.3.4 Как можно определить длина инициализированной строковой переменной? 5.3.5 Как осуществляется ввод строк? 5.3.6 Приведите пример ввода строки фиксированной длины с использованием библиотеки <stdio.h>. 5.3.7 Какие функции предлагаются для вывода строк? 5.3.8 Приведите пример построчного ввода символьных данных. 5.3.9 Приведите пример посимвольного ввода строки. 5.3.10 Какие основные функции предусмотрены для работы со строками?
Общие сведения Структура (struct) состоит из фиксированного числа компонентов (элементов) разных типов. Описание типа struct имеет следующий вид: struct имя_структуры { тип1 имя_элемента1; … типN имя_элементаN; } имя_переменной_типа_структуры; Для обращения к элементу структуры нужно указать имя переменной и имя элемента структуры, разделив их точкой. К элементу структуры применима операция присваивания. Объединения (union) в языке C++ отличаются от структур способом хранения информации. В каждый момент времени объединение хранит значение только одного элемента.Память распределяется для хранения наибольшего элемента объединения. Описание типа union имеет вид: union имя_объединения { тип1 имя_элемента1; … типN имя_элементаN; } имя_переменной_типа_объединения; Обращаются к элементу объединения аналогично обращению к элементу структуры. Очевидно, что использование объединений в программах позволяет экономить память компьютера. Еще большей экономии памяти в программах на языке C++ можно достичь, если использовать анонимные объединения. В анонимных объединениях нет имени, переменная объединения не объявляется: union { тип1 имя_элемента1; … типN имя элементаN; }; К элементам анонимного объединения обращаются по имени (без точки), как к обычным переменным в программе.
Задание к лабораторной работе Решить задачу, соответствующую варианту, выбранному по таблице 6.1. Построить блок-схему программы. Организовать ввод и вывод данных структуры (не менее 10 записей). Используя поля созданной структуры, выполнить предложенную выборку.
Таблица 6.1 – Варианты заданий
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 965; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.104.214 (0.126 с.) |