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

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

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

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

  • 5. Как организовать ввод матрицы размером N*M элементов Пример выполнения лабораторной работы № 4

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

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

  • Контрольные вопросы 1. Укажите объекты Visual Basic, на которых возможно рисование графических образов.

  • 3. Какая единица измерения размеров рисунков зависит от разрешающей способности монитора 4. Какой оператор определяет точку на экране текущей формы с координатами 450, 250

  • 5. Для какого объекта оператор Scale задает координатное поле размером (100х340)

  • 6. Какой оператор Pset устанавливает на форме точку красного цвета

  • 8. Какая фигура будет изображена посредством следующего оператора Circle (4000, 2800), 550,,,, 6/3

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

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


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

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

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

    1. Изучить:

    • правила организации вложенного цикла с учетом порядка перебора элементов матрицы;

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

    • способы ввода и вывода матриц, имеющиеся в языке программирования.

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

    1. Обработать на ПК матрицу в соответствии с вариантом задания, указанным в таблице 4.1.

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

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

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

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

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

    3. Подготовить текстовый вариант программы и исходных данных.

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

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

    Вариант

    Размеры матрицы

    Задание

    Примечания

    1

    2

    3

    4

    1

    A (10, 15)

    Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк

    A i j>0

    2

    A (N, M)

    Вычислить и запомнить суммы и число элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов

    N  20

    M  15

    3

    B (N, N)

    Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней

    N  12

    4

    C (N, N)

    Вычислить сумму и число положительных элементов матрицы, находящихся над главной диагональю

    C i j>0

    N  12

    5

    D (K, K)

    Записать на место отрицательных элементов матрицы нули и вывести ее на печать в общепринятом виде

    K 10

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

    1

    2

    3

    4

    6

    D (10, 10)

    Записать на место отрицательных элементов матрицы нули, а на место положительных - единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде



    7

    F (N, M)

    Найти в каждой строке матрицы максимальный и минимальный элемент и поместить их на место первого и последнего элемента строки соответственно. Матрицу напечатать в общепринятом виде

    N  20

    M  10

    8

    F (10, 10)

    Транспонировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной над главной. Результаты разместить в одной строке.



    9

    A (10, 15)

    Вычислить и запомнить сумму и число отрицательных элементов каждой строки матрицы. Результаты отпечатать в виде двух строк

    A i j>0

    10

    F (10, 10)

    Транспонировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Результаты разместить в двух строках.



    11

    N (10, 10)

    Для целочисленной матрицы найти для каждой строки число элементов, кратных пяти, и наибольший из полученных результатов

    Ni j >0

    12

    N (10, 10)

    Из положительных элементов матрицы N сформировать матрицу M (10, KMAX), располагая их в строках матрицы подряд, где KMAX — максимальное число положительных элементов строки матрицы N. Записать нули на место отсутствующих элементов. Отпечатать обе матрицы в общепринятом виде



    13

    P (N, N)

    Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде

    N  15

    14

    D (12, 15)

    Вычислить и запомнить сумму и число отрицательных элементов каждой строки матрицы. Результаты отпечатать в виде двух строк



    15

    R (K, N)

    Найти наибольший и наименьший элементы матрицы и поменять их местами.

    K  20

    N  10


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

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

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

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

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

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

    1. Указать основные правила организации вложенных циклов.

    2. Указать способы выхода из внутреннего цикла.

    3. Как организовать вывод матрицы в общепринятом виде?

    4. Как организовать вывод нижней треугольной матрицы в общепринятом виде?

    5. Как организовать ввод матрицы размером N*M элементов?
    Пример выполнения лабораторной работы № 4

    Дана матрица D(K, K), k<=10. Записать на место отрицательных элементов матрицы нули и повторно вывести на экран матрицу D.

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

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

    Тип

    Назначения

    Описание

    D()

    Single

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

    Матрица элементов

    k

    Integer

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

    Размер массива

    i,j

    Integer

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

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


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

    1. Вводим с клавиатуры количество строк и столбцов матрицы D, учитывая ограничения – k<=10.

    2. Произвольным образом формируем элементы матрицы D(k,k).

    3. Выводим на экран исходную матрицу D.

    4. В двойном цикле анализируем матрицу D(k,k), проверяя, является ли текущий элемент матрицы отрицательным. Если условие выполняется, то заменяем текущее значение на нуль.

    5. Выводим на экран преобразованную матрицу D.


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


    начало









    k>10

    2




    3


    Нет


    i:=1,k







    4


    j:=1,k







    5


    d[i,j]












    Рисунок 4.1 – Алгоритм решения задачи (Лист 1)




    Рисунок 4.1 – Алгоритм решения задачи (Лист 2)

    На рисунке 4.2 показана форма задачи в режиме выполнения.



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

    Название

    объекта

    Свойство

    Значение

    Form1

    Name

    Form1

    Caption

    Преобразование матрицы D

    MaxButton

    False

    MinButton

    False

    Label1

    Caption

    Введите количество строк и столбцов матрицы D, k<=10

    Label2

    Caption

    Исходная матрица

    Label3

    Caption

    Преобразованная матрица

    Command1

    Name

    Command1

    Caption

    Расчет

    Command2

    Name

    Command2

    Caption

    Выход

    MSFlexGrid1

    Name

    Flex1

    Visible

    False

    MSFlexGrid2

    Name

    Flex2

    Visible

    False


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

    Option Base 1

    'Объявление переменных

    Dim D() As Single

    Dim i As Integer, j As Integer, k As Integer

    'Процедура обработки события нажатия кнопки

    Private Sub Command1_Click()

    k = Val(Text1.Text) 'Присваиваем k значениеизполяввода 1

    If k < 10 Then

    ReDim D(k, k) As Single 'Переопределяем размер массива D

    Flex1.Visible = True 'Делаем таблицы видимыми

    Flex2.Visible = True

    Flex1.Rows = k + 1 'Устанавливаем количество строк таблицы

    Flex1.Cols = k + 1 'Устанавливаем количество столбцов таблицы

    Flex2.Rows = k + 1

    Flex2.Cols = k + 1

    'Прописываем шапку таблицы

    Flex1.TextMatrix(0, 0) = "D(i)"

    Flex2.TextMatrix(0, 0) = "D(i)"

    'Устанавливаем ширину столбцов и таблицы в целом

    Flex1.Width = 500 * k + 600

    Flex2.Width = 500 * k + 600

    For i = 0 To k

    Flex1.ColWidth(i) = 500

    Flex2.ColWidth(i) = 500

    Next i

    Randomize

    For i = 1 To k

    For j = 1 To k

    D(i, j) = 5 - Int(10 * Rnd) ' Формирование элементов массива

    Next j

    Next i

    For i = 1 To k

    Flex1.TextMatrix(i, 0) = i

    For j = 1 To k

    Flex1.TextMatrix(0, j) = j

    Flex1.TextMatrix(i, j) = D(i, j) ' Вывод исходного массива

    If D(i, j) < 0 Then D(i, j) = 0 ' Преобразование

    Next j

    Next i

    For i = 1 To k

    Flex2.TextMatrix(i, 0) = i

    For j = 1 To k

    Flex2.TextMatrix(0, j) = j

    Flex2.TextMatrix(i, j) = D(i, j) ' Вывод преобразованного массива

    Next j

    Next i

    Else

    i = MsgBox("Значение k должно быть не более 10", vbInformation, "Внимание!")

    Text1.Text = Empty

    Text1.SetFocus

    End If

    End Sub
    Private Sub Command2_Click()

    End

    End Sub
    Private Sub Form_Load()

    Text1.Text = Empty

    End Sub
    Лабораторная работа №5

    Тема: Программирование процессов вывода точечного и кусочно-линейного графиков на экран монитора

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

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

    Изучить:

    • возможности языка программирования для обработки и вывода графической информации;

    • графические режимы монитора и управление ими;

    • отображение точки, отрезка, ломаной линии;

    • вывод текстовых данных в графическом режиме;

    • метод построения точечных и кусочно-линейных графиков на экране.

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

    1. Построить на экране монитора точечный и кусочно-линейный график функции У= F(x) в соответствии с вариантом задания, приведенным в таблице 5.1. В заданном диапазоне изменения аргумента х от а до b с числом точек графика n<= 100.

    2. Обеспечить вычерчивание осей координат x, y с нанесением шкал делений, вывести значения масштабов по осям координат x, y.

    3. Организовать вывод на экран аргументов и значений функции в виде таблицы.

    4. Организовать вывод на экран полученных данных в виде графика.

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

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

    2. Разработать программу решения задачи.

    3. Подготовить тестовый набор данных для контроля правильности вычисления значений функции.

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

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

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

    Вид функции y=f(x)

    Левая граница
    аргумента, а

    Правая граница

    аргумента, b

    Число точек

    графика N

    1

    2

    3

    4

    5

    1

    Sin(x)

    -/2

    +/2

    50

    2

    Cos(x)

    0

    +3/2

    75

    3

     Sin(x) +  Cos(x)

    0



    100

    4

     Sin(x) -  Cos(x)

    0



    100

    5

    2 Sin(x)+ 3 Cos(x)

    - 

    +

    50

    6

    Sin(x)+ Cos(2x)

    -

    +

    75

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

    1

    2

    3

    4

    5

    7

    2 – Cos(x)

    0

    3/2

    75

    8

    Sin( ) + Cos(x)

    0

    2

    50

    9

    2 Sin(2x) + 1

    -/2

    +/2

    50

    10

    Sin(x) + Cos(x) -1

    -

    +

    100

    11



    -3

    5

    100

    12

    10/(1+ x2)

    -3

    3

    100

    13

    (x-3)/(x2+2)

    -1

    4

    75

    14

    x Cos(2x)

    -1

    4

    75

    15

    x2e-| x |

    -1

    3

    50

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

    1. На поле с графиком функции добавить буквенные подписи осей, начала координат.

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

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

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

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

    1. Укажите объекты Visual Basic, на которых возможно рисование графических образов.

    2. В каком направлении возрастает вертикальная координата Y на форме или элементе PictureBox ? Горизонтальная координата X на форме или PictureBox ?

    3. Какая единица измерения размеров рисунков зависит от разрешающей способности монитора?

    4. Какой оператор определяет точку на экране текущей формы с координатами 450, 250?

    5. Для какого объекта оператор Scale задает координатное поле размером (100х340):

    A) PictureBox2.Scale(0,10)-(100,120)

    B) Form3.Scale(0,0)-(101,341)

    C) Form1.Scale(340,100)-(10,12)

    D) PictureBox1.Scale(0,0)-(100,340)

    E) Form5.Scale(100,340)-(0,0)

    6. Какой оператор Pset устанавливает на форме точку красного цвета:

    A) Form1.Pset(x,y), RGB(0,0,255)

    B) Form3.Pset(x,y), RGB(0,0,0)

    C) PictureBox2. Pset(x,y), RGB(0,255,255)

    D) Form4.Pset(x,y), RGB(255,0,0)

    E) Form2.Pset(x,y), RGB(0,255,0)

    7. Для того чтобы графика, создаваемая графическими методами, появилась на поверхности формы после ее загрузки, необходим код, создающий графику, поместить в процедуру Form_Load , установив значение свойства формы AutoRedrew равным … ?

    8. Какая фигура будет изображена посредством следующего оператора
    Circle (4000, 2800), 550,,,, 6/3 :


    A) Сектор круга

    B) Изображение дуги

    C) Эллипс, вытянутый вдоль оси Y

    D) Эллипс, вытянутый вдоль оси X

    E) Круг
    Пример выполнения лабораторной работы №5

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

    1. Построить на экране монитора точечный и кусочно-линейный графики функции Y=Sin(x). В диапазоне изменения аргумента х от а=-/2 до b=/2 с числом точек графика n=50.

    2. Обеспечить вычерчивание осей координат X, Y с нанесением шкал делений и подписей осей Х, Y.

    3. Организовать вывод на экран аргумента и значений функции в виде таблицы.

    4. Организовать вывод на экран полученных данных в виде графика.

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


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

    1. Вводим с клавиатуры диапазон изменения аргумента х и количество точек графика – a, b, n.

    2. Рассчитываем шаг (h) изменения аргумента х: h=(b-a)/(n-1).

    3. В цикле определяем значения функции Y(i) (i=1…50).

    4. Выводим на экран в табличном виде значение аргумента х и значения функции Y=Sin(x).

    5. Диапазон изменения функции Y неизвестен, поэтому в программе необходимо определить наибольшее Ymax и наименьшее Ymin значения среди вычисляемых значений Yi (i=1-50). Определяем наибольшее Ymax и наименьшее Ymin.

    6. Вычерчиваем координатные оси и наносим деления на них.

    7. Выводим на экран график функции Y= Sin(x) при изменении аргумента от -π/2 до +π/2.
      Число точек равно 50.

    8. Выводим в файл grafic.txt значения аргумента и функции в виде таблицы.


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


    начало

    10

    Начало координат, вычерчивание осей, шкал. Установка первой точки графика

    конец

    i=2, n

    Option1.Value = True

    12

    Picture1.PSet (x,Y(i))

    Нет

    13

    11

    Y[i]=sin(x)

    x = x + h

    4

    Y(i) > ymax

    5

    i=1, n

    Нет

    3

    a=-3.14/2: b=3.14/2:

    h = (b-a)/(n-1): x = a: ymax = Sin(x):

    ymin = Sin(x)

    2

    ymax = Y(i)

    6

    Y(i) < ymin

    7

    Нет

    ymin = Y(i)

    8

    Picture1.Line -(x,Y(i))

    14

    x = x + h

    15

    Рисунок 5.1 – Алгоритм решения задачи

    На рисунке 5.2 показана форма задачи в режиме выполнения.



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

    Название объекта

    Свойство

    Значение

    Form1

    Name

    Form1

    Caption

    График функции

    Label1

    Caption

    Введите количество точек функции

    Label2

    Caption

    График функции Y=f(x)

    Label3

    Caption

    Значения функции Y=f(x)

    Command1

    Name

    Command1

    Caption

    Расчет

    Command2

    Name

    Command2

    Caption

    Выход

    Command3

    Name

    Command3

    Caption

    Очистить

    Option1

    Caption

    Точечный график

    Option2

    Caption

    Кусочно-линейный график

    Text1

    Text

    Пусто

    Flex1

    Name

    Flex1

    Cols

    3

    Rows

    2

    FixedCols

    1

    FixedRows

    1

    Picture1

    AutoRedraw

    True

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

    Option Base 1

    Private Sub Command1_Click()

    'Объявление переменных

    Dim Y() As Single, ymax As Single, ymin As Single

    Dim i As Integer, n As Integer, x As Single, j As Single

    Dim a As Single, b As Single, h As Single, dx As Single, dy As Single
    n = Val(Text1.Text) 'Присваиваем n значение из поля ввода 1

    ReDim Y(n) As Single 'Переопределяем размер массива Y

    Flex1.Rows = n + 1 'Устанавливаем количество строк таблицы

    'Прописываем шапку таблицы

    Flex1.TextMatrix(0, 0) = "D(i)"

    Flex1.TextMatrix(0, 0) = "N п/п"

    Flex1.TextMatrix(0, 1) = "x"

    Flex1.TextMatrix(0, 2) = "Y"

    a = -3.14 / 2: b = 3.14 / 2: h = (b - a) / (n -1) 'Присвоение значений границам интервала аргумента
    x = a: ymax = Sin(x): ymin = Sin(x)

    For i = 1 To n

    Y(i) = Sin(x)

    If Y(i) > ymax Then ymax = Y(i) 'Поиск минимального и максимального значения функции

    If Y(i) < ymin Then ymin = Y(i)

    Flex1.TextMatrix(i, 0) = Str(i)

    Flex1.TextMatrix(i, 1) = Str(x)

    Flex1.TextMatrix(i, 2) = Str(Y(i))

    x = x + h

    Next i
    dx = b - a: dy = ymax – ymin

    ' Выборначаласистемыкоординат

    If ymin >= 0 And ymax >= 0 Then ymin = 0: ymax = ymax

    If ymin < 0 And ymax < 0 Then ymin = ymin: ymax = 0

    If ymin < 0 And ymax > 0 Then ymin = ymin: ymax = ymax

    ' переопределению значений масштаба ширины и масштаба высоты

    Picture1.Scale (a - dx / 10, ymax + dy / 10)-(b + dx / 10, ymin - dy / 10)
    'Вычерчиваем координатные оси и наносим деления на них.

    Picture1.Line (a, 0)-(b, 0) 'Горизонтальная ось

    Picture1.Line (b, 0)-(b - 0.05, 0 - 0.05)

    Picture1.Line (b, 0)-(b - 0.05, 0 + 0.05)

    Picture1.Line (0, ymax)-(0, ymin) 'Вертикальная ось

    Picture1.Line (0, ymax)-(0 - 0.05, ymax - 0.05)

    Picture1.Line (0, ymax)-(0 + 0.05, ymax - 0.05)

    For j = a To b Step dx / 10

    Picture1.Line (j, -0.03)-(j, 0.03) 'Нанесение делений на ось x

    Next j
    For j = ymin To ymax Step dy / 10

    Picture1.Line (-0.03, j)-(0.03, j) 'Нанесение делений на ось Y

    Next j
    Picture1.PSet (a, Y(1)) 'Установка первой точки графика

    x = a+h

    For i = 2 To n

    If Option1.Value = True Then 'Вычерчивается точечный график

    Picture1.PSet (x, Y(i))

    Else

    Picture1.Line -(x, Y(i)) 'Вычерчивается кусочно-линейный график от

    'координаты предыдущей точки до текущей

    End If

    x = x + h

    Next i
    Open "C:\grafic.txt" For Output As #1 'Созданиефайладлязаписиданных

    Print #1, Spc (7); "График функции Y=Sin(x)"

    Print #1,

    Print #1, Spc (5); "Аргумент X" Spc (5); "Функция Y=Sin(x)"

    Print #1,

    x = a

    For i = 1 To n

    Print #1, x; Tab (10); Y(i) 'Запись данных

    x = x + h

    Next i

    Close #1 'Закрытиефайла

    'Запуск текстового редактора MSNotepad.exe для просмотра

    'созданного файла grafic.txt

    Call Shell ("C:\Windows\Notepad.exe C:\grafic.txt", 1)

    End Sub
    Private Sub Command2_Click()

    End

    End Sub
    Private Sub Command3_Click()

    Picture1.Cls 'Очисткаобластирисования

    End Sub
    Private Sub Form_Load()

    Option1.Value = True 'Установкавывода "поумолчанию" точечногографика

    Text1.Text = Empty

    End Sub

    Лабораторная работа №6

    1   2   3   4


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