СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

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

Объяснение материала

Закрепление изученного

Итоги урока

Функции и процедуры

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Функции и процедуры»

ГПОУ «Ленинск-Кузнецкий политехнический техникум» Основы алгоритмизации и программирования Функции и процедуры Преподаватель Щеглова Алена Александровна Теоретическое занятие для студентов II курса Ленинск-Кузнецкий, 2023

ГПОУ «Ленинск-Кузнецкий политехнический техникум»

Основы алгоритмизации

и программирования

Функции и процедуры

Преподаватель Щеглова Алена Александровна

Теоретическое занятие

для студентов II курса

Ленинск-Кузнецкий, 2023

Основные понятия С# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов.

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

С# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов.

Общая структура программы using System;    namespace HelloApp {            class Program      {          static void Main( string [] args)          {                        }      } } Директива using System разрешает использовать имена стандартных классов из пространства имен System Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleApplication1. Функция Мain является главной функцией приложения и точкой входа программы – точнее она является методом класса Program

Общая структура программы

using System;

 

namespace HelloApp

{

        class Program

     {

         static void Main( string [] args)

         {

             

         }

     }

}

Директива using System разрешает использовать имена стандартных классов из пространства имен System

Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleApplication1.

Функция Мain является главной функцией приложения и точкой входа программы – точнее она является методом класса Program

Общая структура программы using System;   namespace HelloApp {         class Program      {          static void Main( string [] args)          {                        }      } } Функция в С# может быть объявлена только в рамках класса

Общая структура программы

using System;

  namespace HelloApp

{

        class Program

     {

         static void Main( string [] args)

         {

             

         }

     }

}

Функция в С# может быть объявлена только в рамках класса

Функции и процедуры Функция - подпрограмма. Программа - это решение прикладной задачи Функция – это решение в рамках программы. Функция позволяет уменьшить размер программы за счет того, что не нужно повторно писать какой-то фрагмент кода, достаточно вызвать объявленную функцию. Функции, которые не возвращают значение, называют процедурами Функции в С# называют методами.

Функции и процедуры

Функция - подпрограмма.

Программа - это решение прикладной задачи

Функция – это решение в рамках программы.

Функция позволяет уменьшить размер программы за счет того, что не нужно повторно писать какой-то фрагмент кода, достаточно вызвать объявленную функцию.

Функции, которые не возвращают значение, называют процедурами

Функции в С# называют методами.

s )         return f;     else         return s; } " width="640"

Структура

Первая строка в объявлении функции называется заголовком

[модификатор доступа] [тип возвращаемого значения] [имя функции] ([аргументы]) { // тело функции }

public int max(int f, int s)

{    

if ( f s )        

return f;    

else        

return s;

}

Структура Модификатор доступа (области видимости) может быть private —ограниченный доступ к методу только из содержащего его класса или структуры public — доступ из любого фрагмента кода в рамках приложения

Структура

Модификатор доступа (области видимости) может быть

  • private —ограниченный доступ к методу только из содержащего его класса или структуры
  • public — доступ из любого фрагмента кода в рамках приложения

Задание Назовите открытые и закрытые методы private double A() { }  public int B() { }  public string Stepen(int a, int b) { }

Задание

Назовите открытые и закрытые методы

private double A()

{ }

public int B()

{ }

public string Stepen(int a, int b)

{ }

Структура [тип возвращаемого значения] Т ип возвращаемого значения используется для указания типа возвращаемого значения Если функция, возвращает целое число, то нужно указать тип int Если функция не возвращает никакого значения, то для этого используется ключевое слово void (ghjwtlehf) public void max(int f, int s) {     } public int max(int f, int s) {     }

Структура

[тип возвращаемого значения]

  • Т ип возвращаемого значения используется для указания типа возвращаемого значения
  • Если функция, возвращает целое число, то нужно указать тип int
  • Если функция не возвращает никакого значения, то для этого используется ключевое слово void (ghjwtlehf)

public void max(int f, int s)

{    

}

public int max(int f, int s)

{    

}

Структура [имя функции] Имя функции должно отражать суть метода.

Структура

[имя функции]

  • Имя функции должно отражать суть метода.
Структура ([аргументы])   Аргументы – это данные, которые необходимы для выполнения функции. Аргументы записываются в формате [тип] [идентификатор] Если аргументов несколько, они отделяются запятой. Аргументы могут отсутствовать. public void max() {     } public void max(int f) {     } public int max(int f, int s) {     }

Структура

([аргументы])

  • Аргументы – это данные, которые необходимы для выполнения функции.
  • Аргументы записываются в формате
  • [тип] [идентификатор]
  • Если аргументов несколько, они отделяются запятой. Аргументы могут отсутствовать.

public void max()

{    

}

public void max(int f)

{    

}

public int max(int f, int s)

{    

}

Задание Метод  A, В и С  являются закрытыми или открытыми процедурами или функцией? Назовите параметры Назовите имена методов Назовите типы возвращаемых значений  private void A() {} public int B() {} public double Stepen(int a, int b) { double r; r = ( double )Math.Pow(a, b); return (r); } Тело функции Stepen

Задание

Метод  A, В и С  являются закрытыми или открытыми процедурами или функцией?

Назовите параметры

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

Назовите типы возвращаемых значений

private void A()

{}

public int B()

{}

public double Stepen(int a, int b)

{

double r;

r = ( double )Math.Pow(a, b);

return (r);

}

Тело функции Stepen

Задание    public bool StartService(string serviceName) Назовите: модификатор доступа, тип возвращаемого значения, идентификатор (имя), параметр (аргумент).

Задание

public bool StartService(string serviceName)

Назовите:

  • модификатор доступа,
  • тип возвращаемого значения,
  • идентификатор (имя),
  • параметр (аргумент).

Функция Main Функция Main является главной функцией приложения и точкой входа программы static void Main(string[] args)  { } static - cтатическое поле, свойства относятся ко всему классу/ всей структуре, для обращения к подобным членам необяза-тельно создавать экземпляр класса / структуры Вызов int res = new Foo().S1(1,2);  int res = Foo.S2(10, 20);   class Foo { public int S1(int a, int b)  { return a + b; } public static int S2(int a, int b) { return a + b; }  }

Функция Main

Функция Main является главной функцией приложения и точкой входа программы

static void Main(string[] args)

{ }

static - cтатическое поле, свойства относятся ко всему классу/ всей структуре, для обращения к подобным членам необяза-тельно создавать экземпляр класса / структуры

Вызов

int res = new Foo().S1(1,2);

int res = Foo.S2(10, 20);

class Foo {

public int S1(int a, int b)

{ return a + b; }

public static int S2(int a, int b)

{ return a + b; }

}

Функция Main static void Main(string[] args) { private void A() {} public int B() {} public double Stepen(int a, int b) { double r; r = ( double) Math.Pow(a, b); return (r); } } Найти ошибки, объяснить их, исправить static void Main(string[] args) { } private void A() {} public int B() {} ошибка private void A() { public int B() {} } ошибка Проверка

Функция Main

static void Main(string[] args)

{

private void A() {}

public int B() {}

public double Stepen(int a, int b)

{

double r;

r = ( double) Math.Pow(a, b);

return (r); }

}

Найти ошибки, объяснить их, исправить

static void Main(string[] args)

{ }

private void A() {}

public int B() {}

ошибка

private void A() {

public int B() {} }

ошибка

Проверка

Задание Назовите имя метода Это процедура или функция? Что выполняет тело метода? Какие параметры содержит метод?  public void SayHello() {      Console.WriteLine(

Задание

Назовите имя метода

Это процедура или функция?

Что выполняет тело метода?

Какие параметры содержит метод?

public void SayHello()

{

     Console.WriteLine("Hello");

}

Различия функции от процедуры int Factorial() {    return 1;} В функции в качестве типа возвращаемого значения вместо void используется любой другой тип. В данном случае тип int. В функциях обязательно должен использоваться оператор return, после которого ставится возвращаемое значение. Оператор return возвращает значение и производит выход из метода. Возвращаемое значение должно иметь тот же тип, что значится в определении функции, т.к. функция возвращает значение типа int, после оператора return стоит число 1 - которое неявно является объектом типа int.

Различия функции от процедуры

int Factorial()

{    return 1;}

В функции в качестве типа возвращаемого значения вместо void используется любой другой тип. В данном случае тип int.

В функциях обязательно должен использоваться оператор return, после которого ставится возвращаемое значение.

Оператор return возвращает значение и производит выход из метода.

Возвращаемое значение должно иметь тот же тип, что значится в определении функции, т.к. функция возвращает значение типа int, после оператора return стоит число 1 - которое неявно является объектом типа int.

Различия функции от процедуры   string Hello() {    return

Различия функции от процедуры

  string Hello()

{    return "Hell to World"; }

Назовите:

Возвращаемый тип

Функция это или процедура?

Какое значение возвращает оператор return?

return После оператора return можно указывать выражения, которые возвращают результат вычисления.  static int GetSum() {    int x = 2;      int y = 3;      return x + y; } Между возвращаемым типом метода и возвращаемым значением после оператора return должно быть соответствие/ Найти ошибку  static string GetHello() {    Console.WriteLine(

return

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

static int GetSum()

{    int x = 2;

     int y = 3;

     return x + y; }

Между возвращаемым типом метода и возвращаемым значением после оператора return должно быть соответствие/ Найти ошибку

static string GetHello()

{    Console.WriteLine("Hello");}

static int GetSum()

{    int x = 2;

      int y = 3;

     return "5";

22)      {        return;    }      else      { Console.WriteLine("Hello");    }} Оператор return используется и в процедурах, для того чтобы произвести выход из метода в зависимости от условий 2) static string GetHello() {      return "Hello";      Console.WriteLine("After return");//эта строка никогда не выполнится, почему? } " width="640"

return

1)

static void SayHello()

{    int hour = 23;

     if(hour 22)

     {        return;    }

     else

     { Console.WriteLine("Hello");    }}

Оператор return используется и в процедурах, для того чтобы произвести выход из метода в зависимости от условий

2)

static string GetHello()

{

     return "Hello";

     Console.WriteLine("After return");//эта строка никогда не выполнится, почему?

}

ГПОУ «Ленинск-Кузнецкий политехнический техникум» Основы алгоритмизации и программирования Вызов функций и процедур Преподаватель Щеглова Алена Александровна Теоретическое занятие для студентов II курса Ленинск-Кузнецкий, 2023

ГПОУ «Ленинск-Кузнецкий политехнический техникум»

Основы алгоритмизации

и программирования

Вызов функций и процедур

Преподаватель Щеглова Алена Александровна

Теоретическое занятие

для студентов II курса

Ленинск-Кузнецкий, 2023

Передача значений по параметрам Для функции Тип Имя_переменной1= = new Имя_класса().Имя_метода(Имя_переменной2);  или new Имя_класса().Имя_метода(Имя_переменной2);  Имя_переменной1 – это имя переменной, которая вызывает метод для получения значения из него, при заданном параметре (Имя_переменной2) Имя_переменной2 – значение переменной передается в метод. При передаче аргументов параметрам по значению параметр метода получает не саму переменную, а ее копию и работает с этой копией

Передача значений по параметрам

Для функции

Тип Имя_переменной1=

= new Имя_класса().Имя_метода(Имя_переменной2);

или

new Имя_класса().Имя_метода(Имя_переменной2);

Имя_переменной1 – это имя переменной, которая вызывает метод для получения значения из него, при заданном параметре (Имя_переменной2)

Имя_переменной2 – значение переменной передается в метод.

При передаче аргументов параметрам по значению параметр метода получает не саму переменную, а ее копию и работает с этой копией

Передача значений по параметрам  public int T1(int n) { n++; Console.WriteLine($

Передача значений по параметрам

public int T1(int n)

{ n++;

Console.WriteLine($"Число в методе Т: {n}");

return n; }

static void Main(string[] args)

{ int number = 5;

Console.WriteLine($"Число в методе Т: {number}");

int res = new Program().T1(number);

Console.WriteLine($"Число в методе Т: {number}");

}

При вызове метод T1 получает копию переменной number и увеличивает значение этой копии.

Передача значений по параметрам  Метод [модификатор доступа] [тип возвращаемого значения] [имя функции] (ref тип параметр1, ref тип параметр2, … ) Вызов Тип Имя_переменной1= = new Имя_класса().Имя_метода(ref Имя_переменной2, ref Имя_переменной3, …); Имя_переменной1 – это имя переменной, которая вызывает метод для получения значения из него, при заданном параметре (Имя_переменной2, Имя_переменной3, …) Имя_переменной2 – значение переменной передается в метод.  При передаче значений параметрам по ссылке метод получает адрес переменной в памяти. Если в методе изменяется значение параметра, передаваемого по ссылке, то изменяется и значение переменной, которая передается на его место

Передача значений по параметрам

Метод

[модификатор доступа] [тип возвращаемого значения] [имя функции] (ref тип параметр1, ref тип параметр2, … )

Вызов

Тип Имя_переменной1=

= new Имя_класса().Имя_метода(ref Имя_переменной2, ref Имя_переменной3, …);

Имя_переменной1 – это имя переменной, которая вызывает метод для получения значения из него, при заданном параметре (Имя_переменной2, Имя_переменной3, …)

Имя_переменной2 – значение переменной передается в метод.

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

Передача значений по параметрам public int T1(ref int n, ref int a) { n++; Console.WriteLine($

Передача значений по параметрам

public int T1(ref int n, ref int a)

{

n++;

Console.WriteLine($"Число в методе Т: {n}");

return n;

}

static void Main(string[] args)

{

int number = 5;

Console.WriteLine($"Число в методе Т: {number}");

int res = new Program().T1(ref number, ref number);

Console.WriteLine($"Число в методе Т: {number}");

}

Выходные параметры  Вместо оператора return для возвращения значений используется out Метод [модификатор доступа] [тип возвращаемого значения] [имя функции] (тип параметр1, out тип параметр2) Вызов new Имя_класса().Имя_метода(Имя_переменной2, out Имя_переменной3);

Выходные параметры

Вместо оператора return для возвращения значений используется out

Метод

[модификатор доступа] [тип возвращаемого значения] [имя функции] (тип параметр1, out тип параметр2)

Вызов

new Имя_класса().Имя_метода(Имя_переменной2, out Имя_переменной3);

Выходные параметры public void T1(int x, int y, out int result) { result = x+y; }  static void Main(string[] args) { int number1; new Program().T1( 1, 5, out number1); Console.WriteLine(number1); } // результат 6

Выходные параметры

public void T1(int x, int y, out int result)

{

result = x+y;

}

static void Main(string[] args)

{

int number1;

new Program().T1( 1, 5, out number1);

Console.WriteLine(number1); }

// результат 6

Выходные параметры out позволяет вернуть из метода не одно значение, а несколько  public void T1(int x, int y, out int result, out int proizv)  {  result = x + y;  proizv = x * y;  }  static void Main(string[] args)  {   int sum;  int pr;  new Program().T1(1, 5, out sum, out pr);  Console.WriteLine(sum+

Выходные параметры

out позволяет вернуть из метода не одно значение, а несколько

public void T1(int x, int y, out int result, out int proizv)

{

result = x + y;

proizv = x * y;

}

static void Main(string[] args)

{

int sum;

int pr;

new Program().T1(1, 5, out sum, out pr);

Console.WriteLine(sum+ " "+ pr);

}

// 6 5

Выходные параметры если неизвестен тип значений, которые будут присвоены параметрам, то можно для их определения использовать оператор var public void T1(int x, int y, out int result)  {  result = x + y;  }  static void Main(string[] args)  {  new Program().T1(1, 5, out var sum);  Console.WriteLine(sum);  }

Выходные параметры

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

public void T1(int x, int y, out int result)

{

result = x + y;

}

static void Main(string[] args)

{

new Program().T1(1, 5, out var sum);

Console.WriteLine(sum);

}

Входные параметры Модификатор in указывает, что данный параметр будет передаваться в метод по ссылке, внутри метода его значение параметра нельзя будет изменить.  public void T1(in int x,in int y, out int result)  {  result = x + y;  }  static void Main(string[] args)  {  new Program().T1(1, 5, out var sum);  Console.WriteLine(sum);  }

Входные параметры

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

public void T1(in int x,in int y, out int result)

{

result = x + y;

}

static void Main(string[] args)

{

new Program().T1(1, 5, out var sum);

Console.WriteLine(sum);

}

Задание void Sum(int x, int y) {      int result = x + y;      Console.WriteLine($

Задание

void Sum(int x, int y)

{

     int result = x + y;

     Console.WriteLine($"{x} + {y} = {result}");

}

Sum(10, 15); 

void Sum(int x, int y)

{ Console.WriteLine($"{x} + {y} = { x + y }");}

  int a = 10, b = 15, c = 6;

Sum(a, b);             

Sum(3, c);                 

Sum(14, 4 + c);   

void Sum(int x, int y)

{ Console.WriteLine($"{x} + {y} = { x + y }");}

int a,

int b = 15;

Sum(a, b);  // ! Ошибка

При вызове методов значения для параметров можно передавать не по порядку Именованные параметры void PrintPerson(string name, int age = 1) { Console.WriteLine($

При вызове методов значения для параметров можно передавать не по порядку

Именованные параметры

void PrintPerson(string name, int age = 1)

{ Console.WriteLine($"Name: {name}  Age: {age}"); }

Вызов

PrintPerson("Tom", age: 37); 

PrintPerson(age:41, name: "Bob");         

PrintPerson(name:"Sam");}