🗊Презентация Технология программирования. Функции и структуры

Нажмите для полного просмотра!
Технология программирования. Функции и структуры, слайд №1Технология программирования. Функции и структуры, слайд №2Технология программирования. Функции и структуры, слайд №3Технология программирования. Функции и структуры, слайд №4Технология программирования. Функции и структуры, слайд №5Технология программирования. Функции и структуры, слайд №6Технология программирования. Функции и структуры, слайд №7Технология программирования. Функции и структуры, слайд №8Технология программирования. Функции и структуры, слайд №9Технология программирования. Функции и структуры, слайд №10Технология программирования. Функции и структуры, слайд №11Технология программирования. Функции и структуры, слайд №12Технология программирования. Функции и структуры, слайд №13Технология программирования. Функции и структуры, слайд №14Технология программирования. Функции и структуры, слайд №15Технология программирования. Функции и структуры, слайд №16Технология программирования. Функции и структуры, слайд №17Технология программирования. Функции и структуры, слайд №18Технология программирования. Функции и структуры, слайд №19Технология программирования. Функции и структуры, слайд №20Технология программирования. Функции и структуры, слайд №21Технология программирования. Функции и структуры, слайд №22Технология программирования. Функции и структуры, слайд №23Технология программирования. Функции и структуры, слайд №24Технология программирования. Функции и структуры, слайд №25Технология программирования. Функции и структуры, слайд №26Технология программирования. Функции и структуры, слайд №27Технология программирования. Функции и структуры, слайд №28Технология программирования. Функции и структуры, слайд №29Технология программирования. Функции и структуры, слайд №30Технология программирования. Функции и структуры, слайд №31Технология программирования. Функции и структуры, слайд №32Технология программирования. Функции и структуры, слайд №33Технология программирования. Функции и структуры, слайд №34Технология программирования. Функции и структуры, слайд №35Технология программирования. Функции и структуры, слайд №36Технология программирования. Функции и структуры, слайд №37Технология программирования. Функции и структуры, слайд №38Технология программирования. Функции и структуры, слайд №39Технология программирования. Функции и структуры, слайд №40Технология программирования. Функции и структуры, слайд №41Технология программирования. Функции и структуры, слайд №42Технология программирования. Функции и структуры, слайд №43Технология программирования. Функции и структуры, слайд №44Технология программирования. Функции и структуры, слайд №45Технология программирования. Функции и структуры, слайд №46Технология программирования. Функции и структуры, слайд №47Технология программирования. Функции и структуры, слайд №48Технология программирования. Функции и структуры, слайд №49Технология программирования. Функции и структуры, слайд №50Технология программирования. Функции и структуры, слайд №51Технология программирования. Функции и структуры, слайд №52Технология программирования. Функции и структуры, слайд №53Технология программирования. Функции и структуры, слайд №54Технология программирования. Функции и структуры, слайд №55Технология программирования. Функции и структуры, слайд №56Технология программирования. Функции и структуры, слайд №57Технология программирования. Функции и структуры, слайд №58Технология программирования. Функции и структуры, слайд №59Технология программирования. Функции и структуры, слайд №60Технология программирования. Функции и структуры, слайд №61Технология программирования. Функции и структуры, слайд №62Технология программирования. Функции и структуры, слайд №63Технология программирования. Функции и структуры, слайд №64Технология программирования. Функции и структуры, слайд №65Технология программирования. Функции и структуры, слайд №66Технология программирования. Функции и структуры, слайд №67Технология программирования. Функции и структуры, слайд №68Технология программирования. Функции и структуры, слайд №69Технология программирования. Функции и структуры, слайд №70Технология программирования. Функции и структуры, слайд №71Технология программирования. Функции и структуры, слайд №72Технология программирования. Функции и структуры, слайд №73Технология программирования. Функции и структуры, слайд №74Технология программирования. Функции и структуры, слайд №75Технология программирования. Функции и структуры, слайд №76Технология программирования. Функции и структуры, слайд №77Технология программирования. Функции и структуры, слайд №78Технология программирования. Функции и структуры, слайд №79Технология программирования. Функции и структуры, слайд №80Технология программирования. Функции и структуры, слайд №81Технология программирования. Функции и структуры, слайд №82Технология программирования. Функции и структуры, слайд №83Технология программирования. Функции и структуры, слайд №84Технология программирования. Функции и структуры, слайд №85Технология программирования. Функции и структуры, слайд №86Технология программирования. Функции и структуры, слайд №87Технология программирования. Функции и структуры, слайд №88Технология программирования. Функции и структуры, слайд №89Технология программирования. Функции и структуры, слайд №90Технология программирования. Функции и структуры, слайд №91Технология программирования. Функции и структуры, слайд №92Технология программирования. Функции и структуры, слайд №93Технология программирования. Функции и структуры, слайд №94Технология программирования. Функции и структуры, слайд №95Технология программирования. Функции и структуры, слайд №96Технология программирования. Функции и структуры, слайд №97Технология программирования. Функции и структуры, слайд №98Технология программирования. Функции и структуры, слайд №99Технология программирования. Функции и структуры, слайд №100Технология программирования. Функции и структуры, слайд №101Технология программирования. Функции и структуры, слайд №102Технология программирования. Функции и структуры, слайд №103Технология программирования. Функции и структуры, слайд №104Технология программирования. Функции и структуры, слайд №105Технология программирования. Функции и структуры, слайд №106Технология программирования. Функции и структуры, слайд №107Технология программирования. Функции и структуры, слайд №108Технология программирования. Функции и структуры, слайд №109Технология программирования. Функции и структуры, слайд №110Технология программирования. Функции и структуры, слайд №111Технология программирования. Функции и структуры, слайд №112Технология программирования. Функции и структуры, слайд №113

Содержание

Вы можете ознакомиться и скачать презентацию на тему Технология программирования. Функции и структуры. Доклад-сообщение содержит 113 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Технология программирования
Функции
Структуры
Описание слайда:
Технология программирования Функции Структуры

Слайд 2





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

Слайд 3





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

Слайд 4





Функции
	Использование функций дает следующие преимущества:
Экономия памяти кода за счет размещения многократно повторяющихся частей программ в функции.
Позволяет работать группе программистов над одной сложной задачей
Функции облегчают чтение, внесение изменений и коррекцию ошибок в программе.
Описание слайда:
Функции Использование функций дает следующие преимущества: Экономия памяти кода за счет размещения многократно повторяющихся частей программ в функции. Позволяет работать группе программистов над одной сложной задачей Функции облегчают чтение, внесение изменений и коррекцию ошибок в программе.

Слайд 5





Функции
В функциях могут быть описаны собственные константы, типы, переменные. В этом случае они называются локальными. Их область действия распространяется только на те функции, в которых они описаны.
Имена локализованных переменных могут совпадать с ранее объявленными внешними именами. В этом случае считается, что локальное имя "закрывает" внешнее и делает его недоступным
Описание слайда:
Функции В функциях могут быть описаны собственные константы, типы, переменные. В этом случае они называются локальными. Их область действия распространяется только на те функции, в которых они описаны. Имена локализованных переменных могут совпадать с ранее объявленными внешними именами. В этом случае считается, что локальное имя "закрывает" внешнее и делает его недоступным

Слайд 6





Функции
Память под локальные переменные выделяется в момент вызова подпрограммы и освобождается после завершения её выполнения.
Доступ к ним возможен только из той подпрограммы, в которой они описаны.
Описание слайда:
Функции Память под локальные переменные выделяется в момент вызова подпрограммы и освобождается после завершения её выполнения. Доступ к ним возможен только из той подпрограммы, в которой они описаны.

Слайд 7





Функции
	Общая форма записи функции:
<тип> <имя> (<формальные параметры>) { <тело функции> }
	
	Вызов функции производится при помощи оператора вызова функции:
<имя>(<фактические параметры>)
Описание слайда:
Функции Общая форма записи функции: <тип> <имя> (<формальные параметры>) { <тело функции> } Вызов функции производится при помощи оператора вызова функции: <имя>(<фактические параметры>)

Слайд 8





Функции
	Функции могут возвращать результат выполнения. 
Если функция не возвращает результат, то в качестве ее типа указывается ключевое слово void.
В теле функций, возвращающих значение, обязательно должен присутствовать оператор возврата return. После ключевого слова return записывается выражение, значение которого вставится вместо имени функции в точке вызова.
Описание слайда:
Функции Функции могут возвращать результат выполнения. Если функция не возвращает результат, то в качестве ее типа указывается ключевое слово void. В теле функций, возвращающих значение, обязательно должен присутствовать оператор возврата return. После ключевого слова return записывается выражение, значение которого вставится вместо имени функции в точке вызова.

Слайд 9





Пример
	Найти корни уравнения
	при помощи методов:
половинного деления (дихотомии)
хорд
касательных (Ньютона)
простых итераций
Описание слайда:
Пример Найти корни уравнения при помощи методов: половинного деления (дихотомии) хорд касательных (Ньютона) простых итераций

Слайд 10





Пример
Описание слайда:
Пример

Слайд 11





Пример
    static double F(double x) {
        return x * x - Cos(5 * x);
    }
Описание слайда:
Пример static double F(double x) { return x * x - Cos(5 * x); }

Слайд 12





Метод половинного деления
Описание слайда:
Метод половинного деления

Слайд 13





Метод половинного деления
Находим точку c
Находим значение F(c)
Если F(a)*F(c)<0, то корень лежит на интервале [a, c], иначе корень лежит на интервале [a, b]
Если величина интервала меньше либо равна e, то корень найден, иначе возвращаемся к 1.
Описание слайда:
Метод половинного деления Находим точку c Находим значение F(c) Если F(a)*F(c)<0, то корень лежит на интервале [a, c], иначе корень лежит на интервале [a, b] Если величина интервала меньше либо равна e, то корень найден, иначе возвращаемся к 1.

Слайд 14





Метод половинного деления
    static double Dichotomy(double a, double b,
						double e) {
        double c;
        do {
            c = (a + b) / 2;
            if (F(c) * F(a) < 0) {
                b = c;
            } else {
                a = c;
            }
        } while (Abs(a - b) >= e);
        return c;
    }
Описание слайда:
Метод половинного деления static double Dichotomy(double a, double b, double e) { double c; do { c = (a + b) / 2; if (F(c) * F(a) < 0) { b = c; } else { a = c; } } while (Abs(a - b) >= e); return c; }

Слайд 15





Метод хорд
Описание слайда:
Метод хорд

Слайд 16





Метод хорд
	Отличается от метода дихотомии тем, что очередное приближение берём не в середине отрезка, а в точке пересечения с осью X прямой, соединяющей точки
(a, F(a)) и (b, F(b)).
Описание слайда:
Метод хорд Отличается от метода дихотомии тем, что очередное приближение берём не в середине отрезка, а в точке пересечения с осью X прямой, соединяющей точки (a, F(a)) и (b, F(b)).

Слайд 17





Метод хорд
Описание слайда:
Метод хорд

Слайд 18





Метод хорд
    static double Chords(double a, double b,
					  double e) {
        double c;
        do {
            c = a - F(a) / (F(b)-F(a)) * (b - a);
            if (F(c) * F(a) > 0) {
                a = c;
            } else {
                b = c;
            }
        } while (Abs(F(c)) >= e);
        return c;
    }
Описание слайда:
Метод хорд static double Chords(double a, double b, double e) { double c; do { c = a - F(a) / (F(b)-F(a)) * (b - a); if (F(c) * F(a) > 0) { a = c; } else { b = c; } } while (Abs(F(c)) >= e); return c; }

Слайд 19





Метод касательных
Описание слайда:
Метод касательных

Слайд 20





Метод касательных
Описание слайда:
Метод касательных

Слайд 21





Метод касательных
    static double dF(double x) {
        return 2 * x + 5 * Sin(5 * x);
    }

    static double ddF(double x) {
        return 2 + 25 * Cos(5 * x);
    }
Описание слайда:
Метод касательных static double dF(double x) { return 2 * x + 5 * Sin(5 * x); } static double ddF(double x) { return 2 + 25 * Cos(5 * x); }

Слайд 22





Метод касательных
    static double Tangent(double a, double b,
					   double e) {
        double c;
        if (F(a) * ddF(a) > 0) {
            c = a;
        } else {
            c = b;
        }
        do {
            c = c - F(c) / dF(c);
        } while (Abs(F(c)) >= e);
        return c;
    }
Описание слайда:
Метод касательных static double Tangent(double a, double b, double e) { double c; if (F(a) * ddF(a) > 0) { c = a; } else { c = b; } do { c = c - F(c) / dF(c); } while (Abs(F(c)) >= e); return c; }

Слайд 23





Метод простой итерации
	Необходимо записать уравнение в виде
x = φ(x), |φ”(x)| < 1 на [a, b]
	Затем задать начальное приближение x0  и организовать следующую итерацию:
xk+1 = φ(xk), k = 0, 1, 2, ...
	Вычисление прекратить, если
|xk+1 – xk| < e
Описание слайда:
Метод простой итерации Необходимо записать уравнение в виде x = φ(x), |φ”(x)| < 1 на [a, b] Затем задать начальное приближение x0  и организовать следующую итерацию: xk+1 = φ(xk), k = 0, 1, 2, ... Вычисление прекратить, если |xk+1 – xk| < e

Слайд 24





Метод простой итерации
    static double Fi(double x) {
        return Acos(x * x) / 5.0;
    }

    static double Iteration(double x, double e) {
        double x0;
        do {
            x0 = x;
            x = Fi(x0);
        } while (Abs(x0 - x) >= e);
        return x;
    }
Описание слайда:
Метод простой итерации static double Fi(double x) { return Acos(x * x) / 5.0; } static double Iteration(double x, double e) { double x0; do { x0 = x; x = Fi(x0); } while (Abs(x0 - x) >= e); return x; }

Слайд 25





Результаты
    static void Main() {
        var a = 0.2;
        var b = 0.4;

        Write("Введите точность: ");
        var e = double.Parse(ReadLine());

        WriteLine("Метод половинного деления: " +
			    Dichotomy(a, b, e));
Описание слайда:
Результаты static void Main() { var a = 0.2; var b = 0.4; Write("Введите точность: "); var e = double.Parse(ReadLine()); WriteLine("Метод половинного деления: " + Dichotomy(a, b, e));

Слайд 26





Результаты
        WriteLine("Метод хорд: " + 
			    Chords(a, b, e));
        WriteLine("Метод касательных: " + 
			    Tangent(a, b, e));
        WriteLine("Метод простой итерации:" + 
			    Iteration(a, e));

        ReadKey();
    }
Описание слайда:
Результаты WriteLine("Метод хорд: " + Chords(a, b, e)); WriteLine("Метод касательных: " + Tangent(a, b, e)); WriteLine("Метод простой итерации:" + Iteration(a, e)); ReadKey(); }

Слайд 27





Результаты
Описание слайда:
Результаты

Слайд 28





Результаты
Описание слайда:
Результаты

Слайд 29





Вызов функции
Описание слайда:
Вызов функции

Слайд 30





Рекурсия
Рекурсия в широком смысле – это определение объекта посредством ссылки на себя.
Рекурсия в программировании – это пошаговое разбиение задачи на подзадачи, подобные исходной.
Рекурсивный алгоритм – это алгоритм, в определении которого содержится прямой или косвенный вызов этого же алгоритма.
Описание слайда:
Рекурсия Рекурсия в широком смысле – это определение объекта посредством ссылки на себя. Рекурсия в программировании – это пошаговое разбиение задачи на подзадачи, подобные исходной. Рекурсивный алгоритм – это алгоритм, в определении которого содержится прямой или косвенный вызов этого же алгоритма.

Слайд 31





Рекурсия
	Функция называется рекурсивной, если в своем теле она содержит обращение к самой себе с измененным набором параметров. При этом количество обращений конечно, так как в итоге решение сводится к базовому случаю, когда ответ очевиден.
Описание слайда:
Рекурсия Функция называется рекурсивной, если в своем теле она содержит обращение к самой себе с измененным набором параметров. При этом количество обращений конечно, так как в итоге решение сводится к базовому случаю, когда ответ очевиден.

Слайд 32





Рекурсивное вычисление факториала
Описание слайда:
Рекурсивное вычисление факториала

Слайд 33





Рекурсивное вычисление факториала
Описание слайда:
Рекурсивное вычисление факториала

Слайд 34





Рекурсивное вычисление факториала
Описание слайда:
Рекурсивное вычисление факториала

Слайд 35





Рекурсивное вычисление факториала
Описание слайда:
Рекурсивное вычисление факториала

Слайд 36





Ханойская башня
	Даны три стержня, на один из которых нанизаны восемь колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов на другой стержень. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее.
Описание слайда:
Ханойская башня Даны три стержня, на один из которых нанизаны восемь колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов на другой стержень. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее.

Слайд 37





Ханойская башня
Описание слайда:
Ханойская башня

Слайд 38





Рекурсивное решение
Решаем задачу «перенести башню из n−1 диска на 2-й стержень»
Переносим самый большой диск на 3-й стержень
Решаем задачу «перенеси башню из n−1 диска на 3-й стержень».
Описание слайда:
Рекурсивное решение Решаем задачу «перенести башню из n−1 диска на 2-й стержень» Переносим самый большой диск на 3-й стержень Решаем задачу «перенеси башню из n−1 диска на 3-й стержень».

Слайд 39





Ханойская башня
    static void FindSolution(int amountOfDisks) {
        MoveDisks(amountOfDisks, 1, 3, 2);
    }
Описание слайда:
Ханойская башня static void FindSolution(int amountOfDisks) { MoveDisks(amountOfDisks, 1, 3, 2); }

Слайд 40





Ханойская башня
    static void MoveDisks(int n, int fromPole,
					 int toPole, int intermediatePole) {
      if (n > 0) {
        MoveDisks(n - 1, fromPole,
                  intermediatePole, toPole);

        WriteLine("Перенос диска {0} со столба {1}
                 на столб {2}“, n, fromPole, toPole);

        MoveDisks(n - 1, intermediatePole,
                  toPole, fromPole);
      }
    }
Описание слайда:
Ханойская башня     static void MoveDisks(int n, int fromPole, int toPole, int intermediatePole) {       if (n > 0) {         MoveDisks(n - 1, fromPole, intermediatePole, toPole);         WriteLine("Перенос диска {0} со столба {1}  на столб {2}“, n, fromPole, toPole);         MoveDisks(n - 1, intermediatePole,  toPole, fromPole);      } }

Слайд 41





Ханойская башня
    class Program {
        static void Main(string[] args) {
            FindSolution(2);
            ReadKey();
        }
    }
Описание слайда:
Ханойская башня     class Program {         static void Main(string[] args) {             FindSolution(2);             ReadKey();         }     }

Слайд 42





Ханойская башня
    class Program {
        static void Main(string[] args) {
            FindSolution(3);
            ReadKey();
        }
    }
Описание слайда:
Ханойская башня     class Program {         static void Main(string[] args) {             FindSolution(3);             ReadKey();         }     }

Слайд 43





Ханойская башня
Описание слайда:
Ханойская башня

Слайд 44





Треугольник Серпинского
	В 1915 году польский математик Вацлав Серпинский придумал занимательный объект, известный как решето Серпинского. Этот треугольник один из самых ранних известных примеров фракталов.
	Берётся сплошной равносторонний треугольник, на первом шаге из центра удаляется перевёрнутый треугольник.
Описание слайда:
Треугольник Серпинского В 1915 году польский математик Вацлав Серпинский придумал занимательный объект, известный как решето Серпинского. Этот треугольник один из самых ранних известных примеров фракталов. Берётся сплошной равносторонний треугольник, на первом шаге из центра удаляется перевёрнутый треугольник.

Слайд 45





Треугольник Серпинского
	На втором шаге удаляется три перевёрнутых треугольника из трёх оставшихся треугольников. Продолжая этот процесс, на n-ом шаге удаляем 3n-1 перевёрнутых треугольников из центров 3n-1 оставшихся треугольников. Конца этому процессу не будет, и в треугольнике не останется живого места, но и на части он не распадётся - получится объект состоящий из одних только дырок.
Описание слайда:
Треугольник Серпинского На втором шаге удаляется три перевёрнутых треугольника из трёх оставшихся треугольников. Продолжая этот процесс, на n-ом шаге удаляем 3n-1 перевёрнутых треугольников из центров 3n-1 оставшихся треугольников. Конца этому процессу не будет, и в треугольнике не останется живого места, но и на части он не распадётся - получится объект состоящий из одних только дырок.

Слайд 46





Треугольник Серпинского
Описание слайда:
Треугольник Серпинского

Слайд 47





Треугольник Серпинского
Описание слайда:
Треугольник Серпинского

Слайд 48





Треугольник Серпинского
Описание слайда:
Треугольник Серпинского

Слайд 49





Треугольник Серпинского
Описание слайда:
Треугольник Серпинского

Слайд 50





Треугольник Серпинского
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }
  private void Form1_Paint(object sender,
                           PaintEventArgs e)
  {
  }
}
Описание слайда:
Треугольник Серпинского public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { } }

Слайд 51





Треугольник Серпинского
private void Form1_Paint(object sender,
                         PaintEventArgs e)
{
  Rectangle bounds = e.ClipRectangle;
  Point a = new Point(bounds.Width/2, 0);
  Point b = new Point(0, bounds.Height);
  Point c = new Point(bounds.Width,
                      bounds.Height);
  Graphics g = e.Graphics;
  g.FillPolygon(Brushes.Red,
                new Point[] { a, b, c });
}
Описание слайда:
Треугольник Серпинского private void Form1_Paint(object sender, PaintEventArgs e) { Rectangle bounds = e.ClipRectangle; Point a = new Point(bounds.Width/2, 0); Point b = new Point(0, bounds.Height); Point c = new Point(bounds.Width, bounds.Height); Graphics g = e.Graphics; g.FillPolygon(Brushes.Red, new Point[] { a, b, c }); }

Слайд 52





Треугольник Серпинского
private void Form1_Paint(object sender,
                         PaintEventArgs e)
{
  Rectangle bounds = e.ClipRectangle;
  Point a = new Point(bounds.Width/2, 0);
  Point b = new Point(0, bounds.Height);
  Point c = new Point(bounds.Width,
                      bounds.Height);
  Graphics g = e.Graphics;
  g.FillPolygon(Brushes.Red,
                new Point[] { a, b, c });
}
Описание слайда:
Треугольник Серпинского private void Form1_Paint(object sender, PaintEventArgs e) { Rectangle bounds = e.ClipRectangle; Point a = new Point(bounds.Width/2, 0); Point b = new Point(0, bounds.Height); Point c = new Point(bounds.Width, bounds.Height); Graphics g = e.Graphics; g.FillPolygon(Brushes.Red, new Point[] { a, b, c }); }

Слайд 53





void Serpinski(Graphics g, Point a, Point b,
void Serpinski(Graphics g, Point a, Point b,
                           Point c, int n)
{
  if (n > 0) {
    Point newA = Center(a, b);
    Point newB = Center(b, c);
    Point newC = Center(c, a);

    g.FillPolygon(Brushes.White,
          new Point[] { newA, newB, newC });

    Serpinski(g, a, newA, newC, n - 1);
    Serpinski(g, newA, b, newB, n - 1);
    Serpinski(g, newC, newB, c, n - 1);
  }
}
Описание слайда:
void Serpinski(Graphics g, Point a, Point b, void Serpinski(Graphics g, Point a, Point b, Point c, int n) { if (n > 0) { Point newA = Center(a, b); Point newB = Center(b, c); Point newC = Center(c, a); g.FillPolygon(Brushes.White, new Point[] { newA, newB, newC }); Serpinski(g, a, newA, newC, n - 1); Serpinski(g, newA, b, newB, n - 1); Serpinski(g, newC, newB, c, n - 1); } }

Слайд 54





Треугольник Серпинского
Point Center(Point a, Point b)
{
    return new Point(
        (a.X + b.X)/2,
        (a.Y + b.Y)/2
    );
}
Описание слайда:
Треугольник Серпинского Point Center(Point a, Point b) { return new Point( (a.X + b.X)/2, (a.Y + b.Y)/2 ); }

Слайд 55





private void Form1_Paint(object sender,
                         PaintEventArgs e)
private void Form1_Paint(object sender,
                         PaintEventArgs e)
{
  Rectangle bounds = e.ClipRectangle;
  Point a = new Point(bounds.Width/2, 0);
  Point b = new Point(0, bounds.Height);
  Point c = new Point(bounds.Width,
                      bounds.Height);
  Graphics g = e.Graphics;
  g.FillPolygon(Brushes.Red,
                new Point[] { a, b, c });

  Serpinski(g, a, b, c, 5);
}
Описание слайда:
private void Form1_Paint(object sender, PaintEventArgs e) private void Form1_Paint(object sender, PaintEventArgs e) { Rectangle bounds = e.ClipRectangle; Point a = new Point(bounds.Width/2, 0); Point b = new Point(0, bounds.Height); Point c = new Point(bounds.Width, bounds.Height); Graphics g = e.Graphics; g.FillPolygon(Brushes.Red, new Point[] { a, b, c }); Serpinski(g, a, b, c, 5); }

Слайд 56





Треугольник Серпинского
Описание слайда:
Треугольник Серпинского

Слайд 57





Значения параметров по умолчанию
	У функции может быть больше параметров, чем в самых простых и наиболее часто используемых случаях
Описание слайда:
Значения параметров по умолчанию У функции может быть больше параметров, чем в самых простых и наиболее часто используемых случаях

Слайд 58





Значения параметров по умолчанию
Описание слайда:
Значения параметров по умолчанию

Слайд 59





Значения параметров по умолчанию
Описание слайда:
Значения параметров по умолчанию

Слайд 60





Значения параметров по умолчанию
Описание слайда:
Значения параметров по умолчанию

Слайд 61





Значения параметров по умолчанию
	Параметры по умолчанию должны идти в конце функции:
Описание слайда:
Значения параметров по умолчанию Параметры по умолчанию должны идти в конце функции:

Слайд 62





Значения параметров по умолчанию
        static int Sum(int x=1, int y=2, int z=3)
        {
            return x + y + z;
        }
        static void Main(string[] args)
        {
            Console.WriteLine( Sum() );
            Console.WriteLine( Sum(10) );
            Console.WriteLine( Sum(10, 20) );
            Console.WriteLine( Sum(z:30) );
            Console.WriteLine( Sum(z:30, x:10) );
        }
Описание слайда:
Значения параметров по умолчанию static int Sum(int x=1, int y=2, int z=3) { return x + y + z; } static void Main(string[] args) { Console.WriteLine( Sum() ); Console.WriteLine( Sum(10) ); Console.WriteLine( Sum(10, 20) ); Console.WriteLine( Sum(z:30) ); Console.WriteLine( Sum(z:30, x:10) ); }

Слайд 63





Значения параметров по умолчанию
        static int Sum(int x=1, int y=2, int z=3)
        {
            return x + y + z;
        }
        static void Main(string[] args)
        {
            Console.WriteLine( Sum() );
            Console.WriteLine( Sum(10) );
            Console.WriteLine( Sum(10, 20) );
            Console.WriteLine( Sum(z:30) );
            Console.WriteLine( Sum(z:30, x:10) );
        }
Описание слайда:
Значения параметров по умолчанию static int Sum(int x=1, int y=2, int z=3) { return x + y + z; } static void Main(string[] args) { Console.WriteLine( Sum() ); Console.WriteLine( Sum(10) ); Console.WriteLine( Sum(10, 20) ); Console.WriteLine( Sum(z:30) ); Console.WriteLine( Sum(z:30, x:10) ); }

Слайд 64





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 65





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 66





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 67





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 68





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 69





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 70





Перегрузка функций
Описание слайда:
Перегрузка функций

Слайд 71





Перегрузка функций
Эквивалентная запись при помощи перегрузки:
Описание слайда:
Перегрузка функций Эквивалентная запись при помощи перегрузки:

Слайд 72





Работа со структурами
	Рассмотрим на примере простой программы по работе с адресами
	Функции программы:
Чтение входных данных
Хранение данных
Вывод данных
Описание слайда:
Работа со структурами Рассмотрим на примере простой программы по работе с адресами Функции программы: Чтение входных данных Хранение данных Вывод данных

Слайд 73





Пример: почтовый адрес
Описание слайда:
Пример: почтовый адрес

Слайд 74





Пример: почтовый адрес
Описание слайда:
Пример: почтовый адрес

Слайд 75





Пример: почтовый адрес
Описание слайда:
Пример: почтовый адрес

Слайд 76





Пример: почтовый адрес
Описание слайда:
Пример: почтовый адрес

Слайд 77





Пример: почтовый адрес
Описание слайда:
Пример: почтовый адрес

Слайд 78





	
	
Основным недостатком полученной программы является отсутствие возможности повторно использовать уже написанный код
Описание слайда:
Основным недостатком полученной программы является отсутствие возможности повторно использовать уже написанный код

Слайд 79





Переместим часть кода в функции (вывод)
Описание слайда:
Переместим часть кода в функции (вывод)

Слайд 80





Переместим часть кода в функции (вывод)
Описание слайда:
Переместим часть кода в функции (вывод)

Слайд 81





Переместим часть кода в функции (вывод)
Описание слайда:
Переместим часть кода в функции (вывод)

Слайд 82





	
	
Попытаемся аналогичным образом создать функцию чтения данных
Описание слайда:
Попытаемся аналогичным образом создать функцию чтения данных

Слайд 83





Переместим часть кода в функции (ввод)
Описание слайда:
Переместим часть кода в функции (ввод)

Слайд 84





Переместим часть кода в функции (ввод)
Описание слайда:
Переместим часть кода в функции (ввод)

Слайд 85





Ошибки компиляции
Описание слайда:
Ошибки компиляции

Слайд 86





Ошибки компиляции
error CS0165: Use of unassigned local variable 'name'
error CS0165: Use of unassigned local variable 'town'
error CS0165: Use of unassigned local variable 'street'
error CS0165: Use of unassigned local variable 'number'
error CS0165: Use of unassigned local variable 'zip'

	В отличие от С++, компилятор C# считает использование неинициализированных переменных ошибкой
Описание слайда:
Ошибки компиляции error CS0165: Use of unassigned local variable 'name' error CS0165: Use of unassigned local variable 'town' error CS0165: Use of unassigned local variable 'street' error CS0165: Use of unassigned local variable 'number' error CS0165: Use of unassigned local variable 'zip' В отличие от С++, компилятор C# считает использование неинициализированных переменных ошибкой

Слайд 87





Ошибки компиляции
	В С++ мы получали ошибку во время выполнения программы:
Описание слайда:
Ошибки компиляции В С++ мы получали ошибку во время выполнения программы:

Слайд 88





Ошибки компиляции
	Проблема решалась при помощи указателей:
Описание слайда:
Ошибки компиляции Проблема решалась при помощи указателей:

Слайд 89






В C# указатели можно использовать только в режиме неуправляемого кода
В безопасном режиме все
немного сложнее
Описание слайда:
В C# указатели можно использовать только в режиме неуправляемого кода В безопасном режиме все немного сложнее

Слайд 90





Типы данных C#
	Система типов языка C# включает следующие категории:
Указатели
Ссылочные типы
Типы значений

	Две последние категории рассмотрим более подробно
Описание слайда:
Типы данных C# Система типов языка C# включает следующие категории: Указатели Ссылочные типы Типы значений Две последние категории рассмотрим более подробно

Слайд 91





Ссылочные типы
	Переменные ссылочных типов хранят ссылки на фактические данные.
	Ссылочными типами являются:
Классы (class)
Делегаты (delegate)
Интерфейсы (interface)
Строки (string)
Массивы
Описание слайда:
Ссылочные типы Переменные ссылочных типов хранят ссылки на фактические данные. Ссылочными типами являются: Классы (class) Делегаты (delegate) Интерфейсы (interface) Строки (string) Массивы

Слайд 92





Типы значений
	Тип значений хранит свое содержимое в памяти, выделенной в стеке.
	 Типы значений состоят из двух основных категорий :
Структуры (struct)
Перечисления (enum)
Описание слайда:
Типы значений Тип значений хранит свое содержимое в памяти, выделенной в стеке. Типы значений состоят из двух основных категорий : Структуры (struct) Перечисления (enum)

Слайд 93






Все базовые типы C#, 
за исключением string,
представляют собой
типы значений
Описание слайда:
Все базовые типы C#, за исключением string, представляют собой типы значений

Слайд 94





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

В этом заключается отличие от переменных ссылочного типа, при присвоении которых копируются ссылки на объекты, но не сами объекты
Описание слайда:
Особенности типов значений Переменные, основанные на типах значений, содержат непосредственно значения. При присвоении переменной одного типа значений другому создается копия присваиваемого значения В этом заключается отличие от переменных ссылочного типа, при присвоении которых копируются ссылки на объекты, но не сами объекты

Слайд 95





Особенности типов значений
В отличие от ссылочных типов тип значения не может содержать значение null
Для каждого типа значений существует неявный конструктор по умолчанию, инициализирующий значение по умолчанию для данного типа
Описание слайда:
Особенности типов значений В отличие от ссылочных типов тип значения не может содержать значение null Для каждого типа значений существует неявный конструктор по умолчанию, инициализирующий значение по умолчанию для данного типа

Слайд 96





Ключевые слова out и ref
	Для передачи типов значений по ссылке в безопасном режиме были введены специальные ключевые слова out и ref
Описание слайда:
Ключевые слова out и ref Для передачи типов значений по ссылке в безопасном режиме были введены специальные ключевые слова out и ref

Слайд 97





Отличие out от ref
	ref указывает компилятору, что передаваемый объект был инициализирован до вызова функции.
	out сообщает, что переменная будет инициализированна внутри функции.
	Т.е. ref обеспечивает передачу значения в обе стороны, а out только из функции наружу.
Описание слайда:
Отличие out от ref ref указывает компилятору, что передаваемый объект был инициализирован до вызова функции. out сообщает, что переменная будет инициализированна внутри функции. Т.е. ref обеспечивает передачу значения в обе стороны, а out только из функции наружу.

Слайд 98





Отличие out от ref:
ошибка при использовании out
Описание слайда:
Отличие out от ref: ошибка при использовании out

Слайд 99





Итог: функция ReadAddress
Описание слайда:
Итог: функция ReadAddress

Слайд 100





При вызове функции, по аналогии с С++, перед каждой переменной указываем ключевое слово out
Описание слайда:
При вызове функции, по аналогии с С++, перед каждой переменной указываем ключевое слово out

Слайд 101





Итог
Описание слайда:
Итог

Слайд 102





Результат не изменился
Описание слайда:
Результат не изменился

Слайд 103





Слишком большие заголовки функций, избыток переменных
Описание слайда:
Слишком большие заголовки функций, избыток переменных

Слайд 104





Структура – множество логически связанных данных
Описание слайда:
Структура – множество логически связанных данных

Слайд 105





Отличия от С++
Область видимости по умолчанию – private
Нельзя объявлять конструкторы без параметорв
Инициализируется значениями по умолчанию
Нельзя использовать наследование
Описание слайда:
Отличия от С++ Область видимости по умолчанию – private Нельзя объявлять конструкторы без параметорв Инициализируется значениями по умолчанию Нельзя использовать наследование

Слайд 106





Доступ к полям при помощи оператора (.)
Описание слайда:
Доступ к полям при помощи оператора (.)

Слайд 107





Создание переменной структуры
Описание слайда:
Создание переменной структуры

Слайд 108





Инициализация структуры (1)
Описание слайда:
Инициализация структуры (1)

Слайд 109





Инициализация структуры (2)
Описание слайда:
Инициализация структуры (2)

Слайд 110





Инициализация структуры (3)
Описание слайда:
Инициализация структуры (3)

Слайд 111





Инициализация структуры (3)
Описание слайда:
Инициализация структуры (3)

Слайд 112





Копирование структур
Описание слайда:
Копирование структур

Слайд 113





Массивы структур
Описание слайда:
Массивы структур



Похожие презентации
Mypresentation.ru
Загрузить презентацию