модуль 1 - 4-Функции.ppt
- Количество слайдов: 13
IT ШКОЛА SAMSUNG Модуль 1. Основы программирования Функции
ЗАДАЧА – найти максимум и минимум в трех массивах Создайте новый Java-проект Function 1, а в нем класс Example 1 1) Заполните массив случайными числами (отдельный цикл) 2) Найдите максимум в данном массиве (отдельный цикл) public static void main(String[] args) { // Создаем массив int[] a = new int[10]; // Заполняем массив случайными значениями for (int i = 0; i < a. length; i++){ a[i] = (int) (Math. random() * 100); System. out. print("t" + a[i]); } int max = a[0]; for (int i = 0; i < a. length; i++){ if (a[i] > max){ max = a[i]; } } System. out. println(max); } 2
ЗАДАЧА – найти максимум и минимум в трех массивах 3) Объявите еще два массива и также найдите в них максимальные значения Как сказать компьютеру «Возьми массив, на который я тебе укажу, а нам отдай его максимум» ? 4) Измените фрагменты нахождения максимума на следующие: // Создаем переменную для максимума в Васином массиве int vas_max = max. Array; // Вызов заклинания для нахождения максимума в массиве // Выводим максимум Васиного массива System. out. println(vas_max); // Создаем переменную для максимума в Петином массиве int pet_max = max. Array; // Вызов заклинания для нахождения максимума в массиве // Выводим максимум Петиного массива max. Array – не отличается от переменной! System. out. println(pet_max); Надо как то указать, в каком массиве ищем // Создаем переменную для максимума в Анином массиве максимум! int an_max = max. Array; // Вызов заклинания для нахождения максимума в массиве // Выводим максимум Аниного массива. System. out. println(an_max); 3 } Что не так?
ЗАДАЧА – найти максимум и минимум в трех массивах 3) Объявите еще два массива и также найдите в них максимальные значения Как сказать компьютеру «Возьми массив, на который я тебе укажу, а нам отдай его максимум» ? 4) Измените фрагменты нахождения максимума на следующие: int vas_max = max. Array(vas_ar); System. out. println(vas_max); int pet_max = max. Array(pet_ar); System. out. println(pet_max); Исправьте свою программу! int an_max = max. Array(an_ar); System. out. println(an_max); } 4
МЕТОДЫ (или ФУНКЦИИ) тип_данных_которые_метод_вернет ИМЯ_КОДА (данные_передающиеся_методу){ здесь размещаем тот код, который мы хотим, чтобы выполнялся при вызове этого метода } 5) Опишите нужную функцию в нашем примере самостоятельно (перед строкой public static void main(String[] args) max. Array(int[] ar){ for(int i = 0; i < ar. length; i++){ if(ar[i] > max){ max = ar[i]; } } } Работает? 5
МЕТОДЫ в JAVA Именнованный участок кода в программировании называют термином функция. В объектно-ориентированных языках, а Java является именно таким языком, функции обязательно определены (прикреплены) в каком-либо классе, эта особенность (принадлежность функции классу) отразилась в том, что функцию называют методом. Так и говорят: “у этого класса есть следующие методы” или “эти методы находятся в данном классе” или “этот метод из данного класса, определен в данном классе”. Так же могут сказать, что “метод принадлежит классу”. 6
МЕТОДЫ (или ФУНКЦИИ) Функцию можно определять в любом месте тела класса, то есть, другими словами, внутри фигурных скобок класса. 7
МЕТОДЫ СТАТИЧЕСКИЕ Статические методы отличаются от не статических (обычных) в Java тем, что они могут быть вызваны из сторонних классов, без создания объекта класса - напрямую, через имя класса. Например метод max. Array можно вызывать из другого класса так: int[] m = new int[10]; // … Пропущен код заполнение массива int k; k = Example 1. max. Array(m); // Обращение к статическому методу через имя класса в котором он определен Для не статических (обычных) методов нам необходимо создать сначала объект класса и через него вызывать такой метод: Исправьте свою программу, чтобы она работала верно! int[] m = new int[10]; // … Пропущен код заполнение массива int k; Example 1 pr; // Определение переменной класса Example 1 pr = new Example 1(); // Создание объекта класса Example 1 k = pr. max. Array(m); // Обращение к методу объекта 8
Самостоятельная работа 6) Создайте метод для заполнения массива случайными числами. Исправьте свою программу, чтобы массив заполнялся путем вызова данного метода. static int[] rand. Array(int[] ar){ int max. Range = 100; for(int i = 0; i < ar. length; i++){ ar[i] = (int) (Math. random() * (max. Range + 1)); System. out. print("t" + ar[i]); } return ar; // Возвращаем массив } // Конец метода rand. Array 9
Самостоятельная работа 7) Исправьте описание функции следующим образом static int[] rand. Array(int[] ar, int max. Range){ // Метод rand. Array уже с двумя параметрами. for(int i = 0; i < ar. length; i++){ ar[i] = (int) (Math. random() * (max. Range + 1)); System. out. print("t" + ar[i]); } return ar; // Возвращаем массив } // Конец метода rand. Array 8) Попробуйте самостоятельно исправить вызов функции. Что необходимо сделать? int d = 10; an_ar = rand. Array(an_ar, d); 10
ФОРМАЛЬНЫЕ И ФАКТИЧЕСКИЕ ПАРАМЕТРЫ Формальные параметры - это те переменные, которые мы указывает при определении метода (то, что в скобках). В нашем примере в методе rand. Array формальные параметры, это: ar и max. Range. В методе max. Array - это переменная ar. Фактические параметры - это те параметры, что мы указываем при вызове метода. Например, в строке кода: vas_ar = rand. Array(vas_ar, d); фактические параметры - это переменные vas_ar и d. 11
ФОРМАЛЬНЫЕ И ФАКТИЧЕСКИЕ ПАРАМЕТРЫ В Java, если параметры функции примитивного типа (byte, short, int, long, float, double, boolean, char), то они всегда передаются по значению. Все остальные типы данных в Java - это объекты, и они передаются по ссылке. При передаче параметров по значению изменения формальных параметров внутри метода никак не отражаются на фактических параметрах в вызвавшем его методе. При передаче параметра по ссылке противоположная ситуация - все изменения внутри вызываемого метода отражаются на фактическом параметре. Это значит, что в методе rand. Array параметр ar (массив - это не примитивный тип) является возвращаемым, т. е. все изменения формального параметра отразятся на фактическом, значит необходимости возвращать массив явно, т. е. писать return ar; 12
ПРОЦЕДУРЫ 9) Исправьте метод заполнения массива на пустой (ничего не возвращающий) – аналог процедуры в Паскале static void rand. Array(int[] ar, int max. Range){ // Метод rand. Array for(int i = 0; i < ar. length; i++){ ar[i] = (int) (Math. random() * (max. Range + 1)); System. out. print("t" + ar[i]); } } // Конец метода rand. Array


