ЛАБОРАТОРНЫЕ митп. Методические указания к лабораторным работам по дисциплине "технологии программирования" Караганда 2011
Скачать 0.63 Mb.
|
Тема: Программирование алгоритмов циклической структуры ЦЕЛЬ РАБОТЫ - овладение практическими навыками разработки и программирования вычислительного процесса циклической структуры, получение устойчивых навыков по отладке и тестированию программ. Вопросы для самостоятельной подготовки Изучить возможности языка программирования для реализации: вычислительных процессов циклической структуры с известным числом повторений тела цикла; приемов программирования при расчете функции от одного аргумента (вычисление значений функции при изменении значения аргумента в заданном диапазоне с шагом ∆х). Постановка задачи Модифицировать программу, созданную в лабораторной работе №1, таким образом, чтобы значение функции многократно вычислялось при изменении аргумента в указанном диапазоне и с заданным шагом (см. столбец 4 таблицы 1.1 в соответствии с вариантом). Организовать вывод значения аргумента и вычисленного значения функции в виде таблицы. Порядок выполнения работы Разработать алгоритм расчета на определенном интервале и с шагом (таблица 1.1) функции, определенной в лабораторной работе №1. Составить программу расчета функции. Выполнить и отладить на ПК программу. Дополнительные задания Реализовать решение задачи с использованием циклов с условием. Предусмотреть ограничение диапазона вводимых переменных в соответствии с условием задачи. Предусмотреть запрет на ввод заведомо ложных данных (букв, больших чисел, отрицательных значений подкоренного выражения и т.п.). Добавить в программу всплывающие подсказки. Контрольные вопросы 1. Зачем необходимо при отладке программы тестировать все ветви алгоритма? 2. Указать последовательность действий, выполняемых при организации циклических участков программы с заданным числом повторений. 3. Указать назначение и правила организации цикла. Какие виды операторов цикла Вы знаете? 4. Чем отличаются действия оператора цикла с предусловием от оператора цикла с постусловием? 5. В каких случаях применяются оператор цикла со счетчиком? Приведите примеры. 6. Какой вычислительный процесс называется итерационным? 7. Какое значение примет переменная F после выполнения следующих операторов:
8. Какое значение примет переменная S после выполнения следующих операторов:
9. Сколько раз будет выполняться тело следующего оператора цикла? k=0 for i=1 to k+3 k=k+1 Next i 10. Укажите, какое значение получит S после выполнения следующих операторов: S=0; i=0 WHILE i<5 i=i+1: S=S+i; WEND 11. Укажите, какое значение получит S после выполнения следующих операторов: S=0; i=1 DO WHILE i>1 i=i+1: S=S+i; LOOP 12. Укажите правильную конструкцию оператора цикла с предусловием: - WHILE DO …LOOP - DO UNTIL …LOOP - UNTIL DO …LOOP - REPEAT UNTIL FALSE…LOOP - WHILE TO DO …LOOP Пример выполнения лабораторной работы № 2 Вычислить на ПК значение функции Переменная X меняет свои значения в диапазоне [3, 6] с шагом 0.25. Осуществить вывод значений вводимой исходной данной (X) и результат вычисления значения функции Y, сопровождая вывод наименованиями переменных. Описание входных/выходных данных
Алгоритм решения 1. Вводим значение переменной хn с клавиатуры. 2. Вводим значение переменной хk с клавиатуры. 3. Вводим значение переменной dх с клавиатуры. 4. Присваиваем значение переменной х: х=хn. 5. Вычисляем значение функции y, согласно условиям: 6. Выводим в таблицу значения x, y. 7. Увеличиваем значение переменной x на величину шага: x = x+dx. Если x <=xk, тогда переходим к шагу 5, иначе Конец. Представим данный алгоритм в графическом виде: Рисунок 2.1 – Алгоритм решения задачи На рисунке 2.2 показана форма задачи в режиме выполнения. Рисунок 2.2 – Форма задачи в среде Visual Basic Значения свойств объектов
Листинг программы Option Explicit 'Объявлениепеременных Dim xn As Single, x As Single, xk As Single, dx As Single Dim st As String Dim y As Single, i As Integer, n As Integer 'Процедура обработки события нажатия кнопки Private Sub Command1_Click() xn = Text1.Text 'Присваиваем начальному значению x значение из поля ввода 1 xk = Text2.Text 'Присваиваем конечному значению x значение из поля ввода 2 dx = Text3.Text 'Присваиваем интервалу изменения x значение из поля ввода 3 n = (xk - xn) / dx 'Считаем количество точек, полученных на данном интервале Flex1.Rows = n + 2 'Устанавливаем количество строк таблицы Flex1.Visible = True 'Делаем таблицу видимой 'Прописываем шапку таблицы Flex1.TextMatrix(0, 0) = "N п/п" Flex1.TextMatrix(0, 1) = "x" Flex1.TextMatrix(0, 2) = "y" Flex1.TextMatrix(0, 3) = "Формула расчета" 'Устанавливаем ширину столбцов и таблицы в целом Flex1.Width = 1000 * 3 + 2000 + 400 For i = 0 To 2 Flex1.ColWidth(i) = 1000 Next i Flex1.ColWidth(3) = 2000 i = 1 'Задаемпервыйномеррасчета 'Расчет значений функции в зависимости от значения аргумента For x = xn To xk Step dx If x > 5 Then y = Sin(x): st = "y = sin(x)" If x <= 5 Then y = Cos(x): st = "y = cos(x)" Flex1.TextMatrix(i, 0) = i Flex1.TextMatrix(i, 1) = x Flex1.TextMatrix(i, 2) = Format(y, "#0.###") Flex1.TextMatrix(i, 3) = st i = i + 1 'Изменяемномерпунктарасчета Next x End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Text1.Text = Empty Text2.Text = Empty Text3.Text = Empty End Sub Лабораторная работа №3 Тема: Обработка одномерных массивов ЦЕЛЬ РАБОТЫ - овладение практическими навыками работы с массивами, особенностями их ввода и вывода, приобретение дальнейших навыков по организации программ циклической структуры с использованием приемов программирования. Вопросы для самостоятельной подготовки Изучить: способы описания размеров массивов на языке программирования; способы ввода и вывода массивов; реализацию на конкретном языке программирования приемов накопления суммы или произведения, запоминания результатов, нахождение наибольшего и наименьшего. Постановка задачи Обработать массив в соответствии с вариантом задания, указанного в таблице 3.1. Организовать вывод на экран элементов исходного массива в виде таблицы. Организовать вывод на экран полученных данных в общепринятом виде. Порядок выполнения работы Разработать алгоритм решения в соответствии с заданием. Составить программу решения задачи. Подготовить тест для проверки программы. Провести отладку программы. Таблица 3.1 - Исходные данные для выполнения лабораторной работы №3
Продолжение таблицы 3.1
Дополнительные задания Реализовать решение задачи с диалоговым вводом данных с клавиатуры. Предусмотреть ограничение диапазона вводимых переменных в соответствии с условием задачи. Предусмотреть запрет на ввод заведомо ложных данных (букв, больших чисел, отрицательных значений подкоренного выражения и т.п.). Добавить в программу всплывающие подсказки. Предусмотреть наличие в массиве нескольких элементов, имеющих минимальное (максимальное) значение. Вывести все номера таких элементов. Контрольные вопросы 1. Указать особенности программ, использующих массивы. 2. Какие операторы языка можно использовать для описания массивов? 3. В чем состоит особенность организации цикла при обработке массивов? 4. Что такое динамический или статический массив? 5. Указать особенности ввода и вывода массивов. 6. Что определяет инструкция Option Base. 7. Укажите программные ошибки, возникающие при работе с массивами. Пример выполнения лабораторной работы № 3 Дан одномерный массив C(20), Ci<0. Определить минимальный элемент массива С и его порядковый номер. Описание входных/выходных данных
Алгоритм решения Вводим с клавиатуры количество элементов массива n, учитывая ограничение n: n=20. Формируем элементы массива C по произвольной формуле, учитывая условие C(i)<0. Выводим их на экран. Задаем начальные значения переменным imin и Cmin, равные 1 и С(1) соответственно, в которых будем хранить порядковый номер минимального элемента массива С и его значение. В цикле производим сравнение текущего элемента массива С с минимальным. При нахождении элемента массива С меньше Cmin, присваиваем Cmin найденное значение, а imin значение номера элемента массива С. Выводим на экран найденные значения минимального элемента массива С и его порядкового номера. Представим данный алгоритм в графическом виде: Рисунок 3.1 – Алгоритм решения задачи На рисунке 3.2 показана форма задачи в режиме выполнения. Рисунок 3.2 – Форма задачи в среде Visual Basic Значения свойств объектов
Листинг программы Option Base 1 'Объявление переменных Dim C() As Single Dim Cmin As Single Dim imin As Integer, i As Integer, n As Integer 'Процедура обработки события нажатия кнопки Private Sub Command1_Click() n = Val(Text1.Text) ' Присваиваем n значениеизполяввода1 ReDim C(n) As Single 'Переопределяем размер массива С Flex1.Visible = True 'Делаем таблицу видимой Flex1.Rows = n + 2 'Устанавливаем количество строк таблицы 'Прописываем шапку таблицы Flex1.TextMatrix(0, 0) = "N" Flex1.TextMatrix(0, 1) = "С(i)" 'Устанавливаем ширину столбцов и таблицы в целом Flex1.Width = 1000 * 2 + 400 For i = 0 To 1 Flex1.ColWidth(i) = 1000 Next i 'Перед вызовом функции Rnd необходимо запустить инструкцию Randomize. 'Для генерации случайных чисел из заданного интервала min..max 'используется выражение Int(Rnd(max-min))+min Randomize For i = 1 To n ' Формирование элементов массива C(i) = -Rnd(i) If C(i) >= 0 Then C(i) = Rnd(-i) Flex1.TextMatrix(i, 0) = i Flex1.TextMatrix(i, 1) = Format(C(i), "#0.###") Next i For i = 1 To n ' Вывод элементов массива Flex1.TextMatrix(i, 0) = i Flex1.TextMatrix(i, 1) = Format(C(i), "#0.###") Next i imin = 1: Cmin = C(1) 'Задаем начальные значения переменным imin и Cmin, 'равные 1 и С(1) соответственно For i = 2 To n ' Поиск минимального элемента массива и его номера If C(i) < Cmin Then Cmin = C(i): imin = i Next i Text2.Text = Str(Cmin) 'Вывод значения минимального элемента массива Text3.Text = Str(imin) 'Вывод номера End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Text1.Text = Empty Text2.Text = Empty Text3.Text = Empty End Sub Лабораторная работа №4 5>6>6> |