Search Header Logo
Дефиниране, предефиниране и използване на методи

Дефиниране, предефиниране и използване на методи

Assessment

Presentation

Computers

10th Grade

Practice Problem

Medium

Created by

Plamenna Petrova

Used 7+ times

FREE Resource

32 Slides • 17 Questions

1

media

Методи

Дефиниране, предефиниране и

използване на методи

Пламенна Петрова
Спец. Модул за придобиване на професионална
квалификация ,,учител’’
https://github.com/plamenna-petrova/ProgrammingFundamentals10D

2

media

Дефиниране и извикване на

методи

2

3

media

o Метод е именована част от кода, която може да бъде извикана

oПримерна дефиниция на метод:

oИзвикване на метода няколко пъти поред:

Прости методи

static void PrintHeader()
{

Console.WriteLine("----------");

}

Тялото на метода се

огражда с { }

Метод, наречен
PrintHeader

PrintHeader();
PrintHeader();

3

4

media

Защо да използваме методи?

oПрограмирането става по-обозримо

oРазделяме големите задачи на малки части

oПо-оптимална организация на програмата

oПодобрява се четимостта на кода

oУлеснява разбирането на кода

oИзбягват се повторенията в кода

oУлеснява поддръжката на кода

oПовторно използване на код

oИзползваме методите няколко пъти

4

5

media

static double GetSquare(double num)
{

return num * num;

}

oМетодите се дефинират в класа

oMain() също е метод

oПроменливите в метода са локални

Дефиниране на методи

Име на метода

тип на връщания резултат


Параметри

Тяло на
метода

class Program
{

static void Main()
{
}

}

5

6

media

oМетодите първо се дефинират, а после извикват (многократно)

oМетодите могат да бъдат извикани чрез името им + ():

static void PrintHeader()
{

Console.WriteLine("----------");

}

Извикване на метод

static void Main()
{

PrintHeader();

}

Дефиниране

на метода

Извикване
на метода

6

7

media

oМетод може да бъде извикан от:

oМетодът Main – Main()

oСвоeто тяло – рекурсия

Извикване на метод (2)

static void Main()
{

PrintHeader();

}

static void PrintHeader()
{

PrintHeaderTop();
PrintHeaderBottom();

}

oНякой друг метод

static void Crash()
{ Crash(); }

7

8

media

oСъздайте метод, който отпечатва празна касова бележка:

Задача: Празна касова бележка


CASH RECEIPT
------------------------------

Body

------------------------------
© VTU

Charged to____________________
Received by___________________

8

Header

Footer

9

media

o Създайте 3 метода за печат на секциите (header + body + footer)

oКопирайте съдържанието от слайда

oЗа знака за копирайт използвайте Unicode "©"

o Създайте метод PrintReceipt(), извикващ тези 3 метода:

Решение: Празна касова бележка

private static void PrintReceipt()
{

PrintHeader();
PrintBody();
PrintFooter();

}

9

10

media

Методи с параметри

10

11

media

o Параметрите могат да са от всеки тип данни

o Извикването на метода е с конкретни стойности (аргументи)

static void Main()
{

PrintNumbers(5, 10);

}

Параметри на методите

static void PrintNumbers(int start, int end)
{

for (int i = start; i <= end; i++)
{

Console.Write("{0} ", i);

}

}

Приема параметри

start и end
от тип int

При извикване

подаваме аргументите

Няколко параметъра,
разделени със запетая

11

12

media

oМоже да подадете нула или повече параматъра

oМоже да подавате параметри от различен тип

oВсеки параметър има име и тип

Параметри на методите (2)

static void PrintStudent(string name, int age, double grade)
{

Console.Write("Student: {0}; Age: {1}, Grade: {2}",

name, age, grade);

}

Тип на

параметъра

Име на

параметъра

Няколко параметъра

от различен тип

12

13

media

oСъздайте метод, който отпечатва знака на цяло число n:

Задача: Знака на цяло число

2

The number 2 is positive.

-5

The number 0 is zero.

0

The number -5 is negative.

13

14

media

Решение: Знак на цяло число

static void PrintSign(int number)
{

if (number > 0)

Console.WriteLine("The number {0} is positive.", number);

else if (number < 0)

Console.WriteLine("The number {0} is negative.", number);

else

Console.WriteLine("The number {0} is zero.", number);

}

static void Main()
{ PrintSign(int.Parse(Console.ReadLine())); }

14

15

media

o Параметрите могат да имат стойности по подразбиране:

o Методът по-горе може да бъде извикан по множество начини:

Опционални параметри

static void PrintNumbers(int start = 0, int end = 100)
{

for (int i = start; i <= end; i++)
{

Console.Write("{0} ", i);

}

}

PrintNumbers(5, 10);
PrintNumbers(15);
PrintNumbers();
PrintNumbers(end: 40, start: 35);

Стойности по
подразбиране

Може да ги пропуснем при

извикването на метода

15

16

media

Задача: Отпечатване на триъгълник

oСъздайте метод за отпечатване на триъгълници по начина,

показан по-долу:

1
1 2
1 2 3
1 2
1

1
1 2
1 2 3
1 2 3 4
1 2 3
1 2
1

3

4

16

17

media

oСъздайте метод за печат на един ред от триъгълника,

извеждащ числата от подаден start до подаден end:

Решение: Отпечатване на триъгълник

static void PrintLine(int start, int end)
{

for (int i = start; i <= end; i++)
{

Console.Write(i + " ");

}
Console.WriteLine();

}

17

18

media

oСъздайте метод, печатащ първата част (1..n) и друг за

втората част (n-1…1) от триъгълника:

Решение: Отпечатване на триъгълник (2)

static void PrintTriangle(int n)
{

for (int line = 1; line <= n; line++)

PrintLine(1, line);

for (int line = n - 1; line >= 1; line--)

PrintLine(1, line);

}

Метод с

параметър n

Редове 1...n

Редове n-1…1

18

19

media

o Да се отпечати запълнен квадрат с размер n като в примера:
Задача: Начертайте запълнен квадрат

4

----------
-\/\/\/-
-\/\/\/-
----------

static void PrintHeaderRow(int n)
{

Console.WriteLine(new

string('-', 2 * n));

}

static void PrintMiddleRow(int n)
{

Console.Write('-');
for (int i = 1; i < n; i++)

Console.Write("\\/");

Console.WriteLine('-');

}

static void Main() {

int n = // TODO: read n
PrintHeaderRow(n);
for (int i = 0; i < n - 2; i++)

PrintMiddleRow(i);

PrintHeaderRow(n);

}

Метод с

параметър n

19

20

media

Връщана стойност от метод

20

21

media

o Тип void – не връща стойност (само изпълнява код)

o Други типове – връща стойности, от типа, връщан от метода

Типове връщана стойност

static void AddOne(int n)
{

n += 1;
Console.WriteLine(n);

}

static int PlusOne(int n)
{

return n + 1;

}

Липсва

команда return

връща стойност

от тип int

21

22

media

o Ключовата дума return прекъсва изпълнението на метода

o Връща указаната стойност

o Void методите могат да бъдат завършени чрез команда return

Оператор return

static string ReadFullName()
{

string firstName = Console.ReadLine();
string lastName = Console.ReadLine();
return firstName + " " + lastName;

}

return;

Връща string

22

23

media

o Връщаната стойност може да бъде:

oПрисвоена на променлива:

oИзползвана в израз:

oПодадена на друг метод:

Използването на връщана стойност

int max = GetMax(5, 10);

decimal total = GetPrice() * quantity * 1.20m;

int age = int.Parse(Console.ReadLine());

23

24

media

oКонвертира температури от Фаренхайт към Целзий:

Конвертор на температури – пример

static void Main()
{

Console.Write("Temperature in Fahrenheit: ");
double fahrenheit = double.Parse(Console.ReadLine());
double celsius = FahrenheitToCelsius(fahrenheit);
Console.Write("Temperature in Celsius: {0:F2}", celsius);

}

static double FahrenheitToCelsius(double degrees)
{

double celsius = (degrees - 32) * 5 / 9;
return celsius;

}

24

25

media

oСъздайте метод който пресмята и връща лицето на

триъгълник по дадени основа и височина

Задача: Пресмятане на лице на триъгълник

b = 3
hb = 4

25

A = 6

26

media

oСъздайте метод с два параметъра от тип double, който

връща резултат от тип double:

Решение: Пресмятане на лице на триъгълник

static double CalcTriangleArea(double width, double height)
{

return width * height / 2;

}

static void Main()
{

double width = double.Parse(Console.ReadLine());
double height = double.Parse(Console.ReadLine());
Console.WriteLine(CalcTriangleArea(width, height));

}

26

27

media

oСъздайте метод, който изчислява и връща стойността на

число, повдигнато на степен:

Задача: Метод за повдигане на степен

static double RaiseToPower(double number, int power)
{

double result = 1;
for (int i = 0; i < power; i++)

result *= number;

return result;

}

81

34

256

28

27

28

media

Предефиниране на методи

28

29

media

oКомбинацията от името и параметрите на метод се нарича

негова сигнатура

oСигнатурата ни помага да различим методи с еднакви имена

oКогато два метода с едно и също име имат различна

сигнатура, това се нарича „предефиниране“ на метод

static void Print(string text)
{

Console.WriteLine(text);

}

Сигнатура на метод

Method's
signature

29

30

media

oИзползване на едно и също име за множество методи с

различни сигнатури (име и параметри на метода)

static void Print(string text, int number)
{

Console.WriteLine(text + ' ' + number);

}

static void Print(int number)
{

Console.WriteLine(number);

}

static void Print(string text)
{

Console.WriteLine(text);

}

Предефиниране на методи

Методи с различни

сигнатури

30

31

media

oТипът данни, връщани от метода не е част от сигнатурата му

oРазгледайте следния пример:

oКак компилаторът да разбере кой метод да извика?

static void Print(string text)
{

Console.WriteLine(text);

}

Сигнатура и връщан тип данни

static string Print(string text)
{

return text;

}

Грешка по време
на компилиране!

31

32

media

Методи

ВРЕМЕ ЗА ВЪПРОСИ

33

Multiple Choice

Как се нарича конвенцията за именуване на параметрите на метод?

1

Pascal Case

2

Kebab Case

3

Snake Case

4

Camel Case

34

Multiple Choice

В кой ред имената на всички методи спазват препоръките за именуване?

1

Method1, FindStudent, HandleStuff, SampleMethod

2

LoadReport, Method1, HandleStuff, DoSomething

3

FindStudent, LoadReport, CalculateArea, DirtyHack

4

в нито един от изброените

35

Multiple Choice

Тялото на методите, циклите и if-овете и switch-овете се ограждат в къдрави скоби?

1

Да

2

Не

36

Multiple Select

Кои от твърдения спадат към добрите практики при писане на методи?

1

Разделете методите на няколко по-дълги метода

2

Избягвайте методи, по-дълги от един екран

3

Разделете методите на няколко по-кратки метода

4

Методът трябва да изпълнява една добре дефинирана задача

37

Multiple Choice

Метод е преименована част от кода, която може да бъде извикана?

1

Да

2

Не

38

Multiple Select

Кои от твърденията са грешни за нуждата от използване на методи?

1

Програмирането става по-обозримо

2

Кодът може да се използва еднократно

3

Увеличават се повторенията в кода

4

Подобрява се четимостта на кода

5

Малките задачи се преобразуват в по-големи

39

Open Ended

Question image

По какъв начин ще извикате метода и какъв резултат ще се  принтира на конзолата?

40

Multiple Choice

Какво изключение ще бъде прихванато, ако даден метод извика собствената си дефиниция в своето тяло?

1

ArgumentException

2

StackOverflowException

3

InvalidOperationException

4

няма да бъде прихванато такова

41

Open Ended

Как се наричат конкретните стойности, които се подават при извикването на методите?

42

Multiple Select

Кои от изброените твърдения са верни за параметрите на методите?

1

Може да се подадат нула или повече параметъра

2

Може да се подадат един или повече параметъра

3

Всеки параметър има име и тип

4

Всеки параметър има име, но може да няма тип

5

Може да има няколко параметъра от различен тип

43

Multiple Choice

Question image

Какъв ще бъде резултатът от изпълнението на следния метод?

1

числата от 0 до 99 включително на един ред

2

числата от 0 до 100 включително на отделни редове

3

числата от 0 до 100 включително на един ред

4

нищо, защото за метода няма подадени аргументи

44

Multiple Choice

Типът void връща ли стойност?

1

Да

2

Не

45

Open Ended

Кой оператор се използва за връщане на стойности в методи

46

Multiple Choice

Сигнатура на метод наричаме:

1

Комбинация от името и типа на връщане

2

Комбинация от името, параметрите му и типа на връщане

3

Комбинация от името и параметрите му

4

Комбинация от параметрите му и типа на връщане

47

Multiple Choice

Какво е вярното определение за операцията предефиниране на методи?

1

Използване на едно и също име за множество методи с различни сигнатури

2

Използване на различни имена за множество методи с различни сигнатури

3

Използване на едно и също име за множество методи с еднаква сигнатура

4

Нито едно от изброените

48

Multiple Choice

Question image

Ще си стигне ли до грешка по време на компилация според следния пример?

1

Да

2

Не

49

Multiple Choice

Връщаната стойност от метод може ли да се използва в израз?

1

Да

2

Не

media

Методи

Дефиниране, предефиниране и

използване на методи

Пламенна Петрова
Спец. Модул за придобиване на професионална
квалификация ,,учител’’
https://github.com/plamenna-petrova/ProgrammingFundamentals10D

Show answer

Auto Play

Slide 1 / 49

SLIDE