Инфоурок Информатика Другие методич. материалыЛабораторная работа "Передача и возврат массива из процедуры"

Лабораторная работа "Передача и возврат массива из процедуры"

Скачать материал

Лабораторная работа № 17.

Передача и  возврат массива из процедуры 

             Цели занятия:           

       Формирование представления о назначении параметров процедур.

       Формирование навыков передачи и возврата массива из процедуры.

 

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

 

Упражнение 1.

В упражнении 1 создается Windows-приложение для изменения двумерного массива по следующему правилу: максимальные элементы каждой строки заменяются на число 100.  Для изменения массива  используется пользовательская процедура. Вычисление максимального элемента строки реализовано в виде функции. 

        Чтобы начать работу над новым проектом, надо:

§   В меню File выбрать команду New Project.

§   В открывшемся окне New Project выбрать тип приложения — Windows Forms Application - Visual С#.

§   В поле Name ввести имя проекта —  и нажать кнопку ОК.

 

В результате описанных действий в папке временных проектов (по умолчанию C:\Users\User\Документы\Visual Studio 2008\Projects) будет создана папка с именем проекта, а в ней — в ней вы найдете сам проект.

 

: Разработка пользовательского интерфейса проекта.

Настроим стартовую форму нашего приложения согласно рис. 1. 

В компонентах TextBox1, TextBox2 вводится количество строк и столбцов двумерного массива. С помощью кнопки Button1 массив заполняется случайными числами и выводится в компонент ListBox1. С помощью кнопки Button2 двумерный массив изменяется, в нем максимальные элементы каждой строки заменяются на число 100. Результат выводится в компонент ListBox2.  

 Рис. 1. Окно программы  : Разработка функционала проекта.

1.Процесс разработки функционала проекта начнем с создания кода, вычисляющего максимальный элемент строки двумерного массива. Строка двумерного массива – это одномерный массив, поэтому данный код будет вычислять максимальный элемент одномерного массива. Так как результатом вычисления является одно значение (максимальное), то реализуем данный код в виде функции. Входным параметром функции будет целый массив типа int[]. Типом результата функции  - целый тип данных. 

        

Синтаксис объявления нашей функции, вычисляющей максимальный элемент массива, приведен в листинге 1.

Листинг 1. Пользовательская функция Maximum ()

public static int Maximum(int[] a)

        {    int max = a[0];             for (int i = 1; i < a.Length; i++)                 if (a[i] > max) max = a[i];             return max;

        }

Замечание.

Где разместить код функции или процедуры?

Напомним, что в C# процедуры и функции существуют только как методы некоторого класса, они не существуют вне класса. Поэтому, размещайте код процедуры внутри кода класса формы Form1 (Windows Forms приложение) или класса Program (консольное приложение)

 

2.Далее создадим код, обновляющий массив по правилу: все максимальные элементы каждой строки заменяются на число 100. Реализуем его в виде процедуры. Целый двумерный массив должен быть прочитан процедурой как исходный, а результат его обновления должен быть сохранен в нем же. Т.е параметр-массив является и входным и результатом одновременно, поэтому объявим его как обновляемый с ключевым словом ref. Обратите внимание, что в коде процедуры вызывается написанная нами функция Maximum(a), вычисляющая максимальный элемент для каждой строки.

Синтаксис объявления нашей процедуры, обновляющей массив, приведен в листинге 2.

Листинг 2. Пользовательская процедура Refresh_Array ()

public static void Refresh_Array(ref int[][] a)

        { int max;

        for (int i = 0; i < a.Length; i++)

        {  //вызов функции             max = Maximum(a[i]);             for (int j = 0; j < a[i].Length; j++)             { if (a[i][j] == max) a[i][j] = 100; }

        }

        }

 

3.        Объявим глобальную переменную – двумерный массив. В качестве такового возьмем ступенчатый массив, который хранится в памяти как массив из внутренних массивов, каждый из которых может иметь разную длину. Это даст нам возможность в коде отдельно работать с каждым из внутренних массивов.  Внутренние массивы – это строки нашего двумерного массива. Синтаксис объявления нашего массива в классе Form следующий: public partial class Form1 : Form

    {  int[][] a;

       ………………….

 

4.        Продолжим разработку функционала проекта созданием стандартной функции обработки события Click для кнопки «Создать массив» (buttonl). 

Функция button1_ciick выделает память под заданное пользователем количество строк массива, затем память выделяется под каждую строку. Далее массив заполняется случайными числами от -10 до 9. Полученный массив выводится   в список ListBox1 в виде таблицы построчно.

Синтаксис объявления нашей процедуры button1_Click, создающей массив, приведен в листинге 3.

Листинг 3. Процедура button1_Click ()

private void button1_Click(object sender, EventArgs e)

        {   //очистка и подготовка списков

            listBox1.Items.Clear();             listBox2.Items.Clear();

            listBox1.Items.Add("Исходный массив");             string s = "";

            //ввод количества строк и столбцов             int n = Convert.ToInt32(textBox1.Text);             int m = Convert.ToInt32(textBox2.Text);

            //выделение памяти под n строк a = new int[n][];

//выделение памяти под каждую строку             for (int i = 0; i < n; i++)

                a[i] = new int[m];

            //заполнение массива случайным образом

            Random r = new Random();             for (int i = 0; i < a.Length; i++)

            {   s="";

                for (int j = 0; j < a[i].Length; j++)

                {

                    a[i] [j] = r.Next(-10, 10);                     s = s + '  ' + a[i] [j];

                }

               //вывод каждой строки таблицы

                listBox1.Items.Add(s);

            }

        }

 

5. Далее создадим стандартную процедуру обработки события Click для кнопки «Изменить массив» (button2). Функция button2_ciick вызывает процедуру обновления массива. Измененный массив выводится   в список ListBox2 в виде таблицы построчно.

Синтаксис объявления нашей процедуры button2_Click, создающей массив, приведен в листинге 4.

Листинг 4. Процедура button2_Click ()

private void button2_Click(object sender, EventArgs e)

        {  //очистка и подготовка списков  listBox2.Items.Clear();

            listBox2.Items.Add("Измененный массив");             string s = "";

            //вызов процедуры обновления массива Refresh_Array(ref a);

            //вывод массива  for (int i = 0; i < a.Length; i++)

            {   s = "";

                for (int j = 0; j < a[i].Length; j++)

                { s = s + ' ' + a[i][j]; }

                listBox2.Items.Add(s);

            }

        }

 

Замечание.

Обратите внимание, что вызов процедуры является отдельным оператором. При вызове перед обновляемым параметром a обязательно указывать слово ref!

 

Замечание.

Вы можете самостоятельно добавить процедуры обработки событий TextChanged и KeyPress для компонента TextBox, чтобы исключить неправильный ввод исходных данных.

& Компиляция и отладка проекта. Тестирование проекта.

Запустите на выполнение проект. Выполните его отладку. Протестируйте работу приложения при различных исходных данных. 

Упражнения для самостоятельной работы.

В приложении необходимо создать процедуру, изменяющую переданный ей двумерный массив. Правильно определите выбор параметров процедуры.

Вариант № 1

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

Вариант № 2

В двумерном массиве размерности n*n поменять местами в каждой строке диагональный и первый элемент соответствующей строки.

Вариант № 3

В двумерном массиве размерности n*m поменять местами элементы первой и последней строки.

Вариант № 4 

В двумерном массиве размерности n*m заменить минимальные элементы каждой строки на количество элементов этой строки, являющихся нечетными и кратными 3.

Вариант № 5

В двумерном массиве размерности n*m  заменить максимальный в каждой строке  на первый элемент соответствующей строки. 

Вариант № 6

В двумерном массиве размерности n*n заменить минимальный элемент каждой строки на диагональный элемент этой строки.

Вариант № 7

В двумерном массиве размерности n*m заменить максимальные элементы каждой строки  на сумму элементов этой строки, кратных 3. 

Вариант № 8

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

Вариант № 9

В двумерном массиве размерности n*m увеличить на 10 элементы всех строк, в которых первый элемент равен нулю.

Вариант № 10

В двумерном массиве размерности n*m умножить все элементы последней строки на максимальный элемент всего массива.

Вариант № 11

В двумерном массиве размерности n*m переставить местами элементы первого  и последнего столбцов.

Вариант № 12

В двумерном массиве размерности n*m умножить все элементы строк, в которых первый элемент равен последнему, на номер этой строки.

Вариант № 13

В двумерном массиве размерности n*n разделить все элементы главной диагонали на минимальный элемент всего массива.

Вариант № 14

В двумерном массиве размерности n*n разделить все элементы главной диагонали на максимальный элемент соответствующей строки.

Вариант № 15

В двумерном массиве размерности n*n переставить местами последнюю строку и первый столбец.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Лабораторная работа "Передача и возврат массива из процедуры""

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Директор дома творчества

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

Данная лабораторная работа формирует навыки передачи и возврата массива из процедуры, функции  в программах. Приведено пошаговое описание разработки проекта в среде VisualStudio 2008  на языке  программирования С#. Также приведен список упражнений для самостоятельной работы. Лабораторная работа входит в лабораторный практикум по дисциплине «Основы программирования» для студентов специальности 230115» Программирование в компьютерных системах» среднего профессионального образования. 

 

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 665 040 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 25.12.2014 298
    • PDF 735.1 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Бабикова Татьяна Михайловна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Бабикова Татьяна Михайловна
    Бабикова Татьяна Михайловна
    • На сайте: 8 лет и 9 месяцев
    • Подписчики: 0
    • Всего просмотров: 16010
    • Всего материалов: 10

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Экскурсовод

Экскурсовод (гид)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Разработка и сопровождение требований и технических заданий на разработку и модернизацию систем и подсистем малого и среднего масштаба и сложности

Системный аналитик

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 66 человек из 34 регионов
  • Этот курс уже прошли 83 человека

Курс повышения квалификации

Особенности подготовки к сдаче ЕГЭ по информатике и ИКТ в условиях реализации ФГОС СОО

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 107 человек из 42 регионов
  • Этот курс уже прошли 579 человек

Курс профессиональной переподготовки

Информационные системы и технологии: теория и методика преподавания в профессиональном образовании

Преподаватель информационных систем и технологий

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Этот курс уже прошли 13 человек

Мини-курс

Самоповреждающее поведение у подростков: профилактика и методы работы

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 21 человек из 15 регионов

Мини-курс

Реклама для роста бизнеса: эффективные стратегии и инструменты

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 38 человек из 20 регионов

Мини-курс

Интерактивные материалы на печатной основе

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 59 человек из 25 регионов
  • Этот курс уже прошли 31 человек