Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / ЛК / Лекция 10Методы.doc
Скачиваний:
37
Добавлен:
10.06.2015
Размер:
174.08 Кб
Скачать

14.0. Подпрограммы

14.1. Основные понятия

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

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

Подпрограммы бывают 2 видов:

  • процедуры и

  • функции.

Функцияотличается от процедуры двумя особенностями:

  • всегда вычисляет некоторое (одно) значение, возвращаемое в качестве результата функции,

  • функция вызывается в выражениях.

ПроцедуравC# имеет свои особенности:

  • возвращает формальный результат void, который указывает на отсутствие результата, возвращаемого при вызове процедуры,

  • вызов процедуры является оператором языка,

  • имеет входные и выходные аргументы, причем выходных аргументов – ее результатов – может быть достаточно много.

Обычно метод реализуется в виде функции тогда, когда он имеет один выходной аргумент, рассматриваемый как результат вычисления функции (например, sin(0.5)).

В других случаях метод реализуют в виде процедуры.

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

Структурированная программа называется модульной. Она содержит более крупные компоненты – подпрограммы. Модульная программа проще создается, более понятна.

Программа на языке C# строится из модулей, роль которых играют классы, но каждый из этих модулей имеет содержательную начинку.

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

Синтаксис объявления метода позволяет однозначно определить, чем является метод – процедурой или функцией.

Работа с подпрограммой включает 2 этапа:

– описание метода;

– вызов метода.

Преимущества подпрограммы:

1. в программе нет дублирования кода;

2. повышается надежность программы;

3. улучшается «читаемость» программы;

4. облегчается процесс отладки.

Различают подпрограммы:

  • без параметров (),

  • с параметрами (params).

14.2. Сравнение вариантов

Рассмотрим 2 варианта решения одной и той же задачи:

Вывод текстовых блоков со вставкой стандартного разделителя из трех строк из набора символов “ * ” в конце.

1 –й вариант (Монолитная программа)

static void Main(string[] args)

{

Console.WriteLine("Текст и разделители");

Console.WriteLine();

Console.WriteLine("Текст 1"); // Вывод 1 текста

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 20; j++)

Console.Write("*");

Console.WriteLine(); // Вывод строк разделителя

}

Console.WriteLine();

Console.WriteLine("Текст 2"); // Вывод 2 текста

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 20; j++)

Console.Write("*");

Console.WriteLine(); // Вывод строк разделителя

}

Console.WriteLine();

Console.WriteLine("Текст 3"); // Вывод 3 текста

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 20; j++)

Console.Write("*");

Console.WriteLine(); // Вывод строк разделителя

}

Console.ReadLine();

}

2 – й вариант (Модульная программа)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

staticvoidDrawStr() // Процедура “Рисовать строки” без параметров

{

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 20; j++)

Console.Write("*");

Console.WriteLine();// Вывод строк разделителя

}

}

static void Main(string[] args)

{

Console.WriteLine("Текст и разделители");

Console.WriteLine();

Console.WriteLine("Текст 1"); // Вывод 1 текста

DrawStr();// Вызов процедуры “Рисовать строки”

Console.WriteLine();

Console.WriteLine("Текст 2"); // Вывод 2 текста

DrawStr();// Вызов процедуры “Рисовать строки”

Console.WriteLine();

Console.WriteLine("Текст 3"); // Вывод 3 текста

DrawStr();// Вызов процедуры “Рисовать строки”

Console.ReadLine();

}

}

}

Соседние файлы в папке ЛК