Главная страница
Навигация по странице:

  • Вопросы для самостоятельной подготовки

  • Порядок выполнения работы

  • Контрольные вопросы 1. Зачем необходимо при отладке программы тестировать все ветви алгоритма

  • 3. Указать назначение и правила организации цикла. Какие виды операторов цикла Вы знаете 4. Чем отличаются действия оператора цикла с предусловием от оператора цикла с постусловием

  • 5. В каких случаях применяются оператор цикла со счетчиком Приведите примеры. 6. Какой вычислительный процесс называется итерационным

  • 9. Сколько раз будет выполняться тело следующего оператора цикла

  • 11. Укажите, какое значение получит S после выполнения следующих операторов

  • Пример выполнения лабораторной работы № 2

  • Идентификатор Тип Назначения Описание

  • Лабораторная работа №3

  • Контрольные вопросы 1. Указать особенности программ, использующих массивы. 2. Какие операторы языка можно использовать для описания массивов

  • 3. В чем состоит особенность организации цикла при обработке массивов 4. Что такое динамический или статический массив

  • Пример выполнения лабораторной работы № 3

  • ЛАБОРАТОРНЫЕ митп. Методические указания к лабораторным работам по дисциплине "технологии программирования" Караганда 2011


    Скачать 0.63 Mb.
    НазваниеМетодические указания к лабораторным работам по дисциплине "технологии программирования" Караганда 2011
    Дата24.09.2022
    Размер0.63 Mb.
    Формат файлаdoc
    Имя файлаЛАБОРАТОРНЫЕ митп.doc
    ТипМетодические указания
    #694173
    страница2 из 4
    1   2   3   4
    Тема: Программирование алгоритмов циклической структуры

    ЦЕЛЬ РАБОТЫ - овладение практическими навыками разработки и программирования вычислительного процесса циклической структуры, получение устойчивых навыков по отладке и тестированию программ.

    Вопросы для самостоятельной подготовки

    1. Изучить возможности языка программирования для реализации:

    • вычислительных процессов циклической структуры с известным числом повторений тела цикла;

    • приемов программирования при расчете функции от одного аргумента (вычисление значений функции при изменении значения аргумента в заданном диапазоне с шагом ∆х).

    Постановка задачи

    1. Модифицировать программу, созданную в лабораторной работе №1, таким образом, чтобы значение функции многократно вычислялось при изменении аргумента в указанном диапазоне и с заданным шагом (см. столбец 4 таблицы 1.1 в соответствии с вариантом).

    2. Организовать вывод значения аргумента и вычисленного значения функции в виде таблицы.

    Порядок выполнения работы

    1. Разработать алгоритм расчета на определенном интервале и с шагом (таблица 1.1) функции, определенной в лабораторной работе №1.

    2. Составить программу расчета функции.

    3. Выполнить и отладить на ПК программу.

    Дополнительные задания

    1. Реализовать решение задачи с использованием циклов с условием.

    2. Предусмотреть ограничение диапазона вводимых переменных в соответствии с условием задачи.

    3. Предусмотреть запрет на ввод заведомо ложных данных (букв, больших чисел, отрицательных значений подкоренного выражения и т.п.).

    4. Добавить в программу всплывающие подсказки.

    Контрольные вопросы

    1. Зачем необходимо при отладке программы тестировать все ветви алгоритма?

    2. Указать последовательность действий, выполняемых при организации циклических участков программы с заданным числом повторений.

    3. Указать назначение и правила организации цикла. Какие виды операторов цикла Вы знаете?

    4. Чем отличаются действия оператора цикла с предусловием от оператора цикла с постусловием?

    5. В каких случаях применяются оператор цикла со счетчиком? Приведите примеры.

    6. Какой вычислительный процесс называется итерационным?

    7. Какое значение примет переменная F после выполнения следующих операторов:

    a) I=l; F=2

    WHILE I<6

    I=I+1: F=F*I

    LOOP

    б) I=1; F=2

    DO WHILE I<6

    I=I+1: F=F*I

    LOOP


    8. Какое значение примет переменная S после выполнения следующих операторов:

    a) S=0; i = 1;

    do

    S=S+i: i=i -1

    Loop until i<= 1

    б)S=l; n=l

    for i=2 to n

    S=S+i;

    Next i

    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, сопровождая вывод наименованиями переменных.

    Описание входных/выходных данных

    Идентификатор

    Тип

    Назначения

    Описание

    xn

    Single

    Входная величина

    Начальное значение аргумента

    xk

    Single

    Входная величина

    Конечное значение аргумента

    dx

    Single

    Входная величина

    Шаг изменения аргумента

    x

    Single

    Изменяемая величина

    Аргумент

    y

    Single

    Выходная величина

    Значение функции

    st

    String

    Выходная величина

    Вывод поясняющего значения

    i, n

    Integer

    Вспомогательные величины

    Для промежуточных вычислений


    Алгоритм решения

    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
    Значения свойств объектов

    Название

    объекта

    Свойство

    Значение

    Form1

    Name

    Form1

    Caption

    Расчет значений функции Y

    WindowState

    2-Maximized

    Label1

    Caption

    Введите начальное значение переменной x

    Label2

    Caption

    Введите конечное значение переменной x

    Label3

    Caption

    Введите шаг изменения переменной x

    Label4

    Caption

    Если x <=5 тогда y = Cos(x)

    Label5

    Caption

    Если x >5 тогда y = Sin(x)

    Command1

    Name

    Command1

    Caption

    Расчет

    Command2

    Name

    Command2

    Caption

    Выход

    MSFlexGrid1

    Name

    Flex1

    Cols

    4

    Visible

    False


    Листинг программы

    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

    Тема: Обработка одномерных массивов

    ЦЕЛЬ РАБОТЫ - овладение практическими навыками работы с массивами, особенностями их ввода и вывода, приобретение дальнейших навыков по организации программ циклической структуры с использованием приемов программирования.

    Вопросы для самостоятельной подготовки

    Изучить:

    Постановка задачи

    1. Обработать массив в соответствии с вариантом задания, указанного в таблице 3.1.

    2. Организовать вывод на экран элементов исходного массива в виде таблицы.

    3. Организовать вывод на экран полученных данных в общепринятом виде.

    Порядок выполнения работы

    1. Разработать алгоритм решения в соответствии с заданием.

    2. Составить программу решения задачи.

    3. Подготовить тест для проверки программы.

    4. Провести отладку программы.

    Таблица 3.1 - Исходные данные для выполнения лабораторной работы №3

    Вариант задания

    Массив

    Действия

    Условия и

    ограничения

    1

    2

    3

    4



    X(100)

    Вычислить сумму и количество элементов массива X

    1xi 0



    A(80)

    Вычислить среднее арифметическое значение элемента массива A

    ai >0



    X(70)

    Переписать элементы массива X в массив Y и подсчитать их количество

    1xi -1



    B(50)

    Определить максимальный элемент массива В и его порядковый номер

    вi >0



    C(40)

    Вычислить минимальный элемент массива C и его номер

    сi <0



    D(80)

    Найти максимальный и минимальный элементы массива D и поменять их местами

    __

    Продолжение таблицы 3.1

    1

    2

    3

    4



    Y(20)

    Вычислить среднее геометрическое элемента массива Y

    yi >0



    Z(30)

    Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z

    __



    N(50)

    Определить сумму элементов массива A

    Ni>0



    X(N)

    Вычислить сумму и количество элементов массива X

    xi >0, 30N



    A(N)

    Найти среднее геометрическое элементов массива X

    хi >0, 50N



    X(N)

    Переписать в массив Y подряд положительные элементы массива X

    x i >0, 40N



    X(N)

    Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X

    40N



    B(K)

    Определить максимальный элемент массива B и его порядковый номер

    вi <0, 40K



    C(K)

    Определить минимальный элемент массива C и его порядковый номер

    1сi -1, 20K

    Дополнительные задания

    1. Реализовать решение задачи с диалоговым вводом данных с клавиатуры.

    2. Предусмотреть ограничение диапазона вводимых переменных в соответствии с условием задачи.

    3. Предусмотреть запрет на ввод заведомо ложных данных (букв, больших чисел, отрицательных значений подкоренного выражения и т.п.).

    4. Добавить в программу всплывающие подсказки.

    5. Предусмотреть наличие в массиве нескольких элементов, имеющих минимальное (максимальное) значение. Вывести все номера таких элементов.

    Контрольные вопросы

    1. Указать особенности программ, использующих массивы.

    2. Какие операторы языка можно использовать для описания массивов?

    3. В чем состоит особенность организации цикла при обработке массивов?

    4. Что такое динамический или статический массив?

    5. Указать особенности ввода и вывода массивов.

    6. Что определяет инструкция Option Base.

    7. Укажите программные ошибки, возникающие при работе с массивами.
    Пример выполнения лабораторной работы № 3

    Дан одномерный массив C(20), Ci<0. Определить минимальный элемент массива С и его порядковый номер.

    Описание входных/выходных данных

    Идентификатор

    Тип

    Назначения

    Описание

    С()

    Single

    Входная величина

    Одномерный массив элементов

    n

    Integer

    Входная величина

    Текущий размер массива С

    i

    Integer

    Вспомогательная величина

    Параметр цикла

    imin

    Integer

    Выходная величина

    Порядковый номер минимального элемента массива

    Сmin

    Single

    Выходная величина

    Минимальный элемент массива


    Алгоритм решения

    1. Вводим с клавиатуры количество элементов массива n, учитывая ограничение n: n=20.

    2. Формируем элементы массива C по произвольной формуле, учитывая условие C(i)<0. Выводим их на экран.

    3. Задаем начальные значения переменным imin и Cmin, равные 1 и С(1) соответственно, в которых будем хранить порядковый номер минимального элемента массива С и его значение.

    4. В цикле производим сравнение текущего элемента массива С с минимальным.

    5. При нахождении элемента массива С меньше Cmin, присваиваем Cmin найденное значение, а imin значение номера элемента массива С.

    6. Выводим на экран найденные значения минимального элемента массива С и его порядкового номера.


    Представим данный алгоритм в графическом виде:



    Рисунок 3.1 – Алгоритм решения задачи
    На рисунке 3.2 показана форма задачи в режиме выполнения.


    Рисунок 3.2 – Форма задачи в среде Visual Basic
    Значения свойств объектов

    Название

    объекта

    Свойство

    Значение

    Form1

    Name

    Form1

    Caption

    Определение минимального элемента С() и его порядкового номера

    MaxButton

    False

    MinButton

    False

    Label1

    Caption

    Введите количество элементов массива, n

    Label2

    Caption

    n = 20 , C(i) < 0

    Label3

    Caption

    минимальное значение элемента массива С, Cmin

    Label4

    Caption

    порядковый номер Сmin

    Command1

    Name

    Command1

    Caption

    Расчет

    Command2

    Name

    Command2

    Caption

    Выход

    MSFlexGrid1

    Name

    Flex1

    Cols

    2

    Visible

    False

    Text2, Text3

    Enabled

    False


    Листинг программы

    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

    1   2   3   4


    написать администратору сайта