Программирование на языке высокого уровня Лекция 7. Методы класса как подпрограммы. Решение нелинейных уравнений Кафедра АСОИУ ОмГТУ, 2012 Богатов Р.Н.

Презентация:



Advertisements
Похожие презентации
Программирование на языке высокого уровня Примеры. DataGridView. Ещё примеры Кафедра АСОИУ ОмГТУ, 2012 Богатов Р.Н.
Advertisements

Экземпляр класса Form Public Class Form1 Dim pen1 As New Pen(Color.Purple, 8) Dim pen2 As New Pen(Color.White, 8) Dim i, rad, x1, y1 As Integer Dim x,
В проекте рассмотрены функции даты и времени: текущие дата и время, день недели, день месяца, день года, проверка на високосный год, максимальное и минимальное.
Примеры классов : Класс Документ СвойстваМетодыСобытия ИмяКопировать документ Document_New() Создание документа Полное имяНапечататьDocument_Open(…) Открытие.
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Программирование на языке высокого уровня Лекция 5. Массивы. Массивы. Массивы. Кафедра АСОИУ ОмГТУ, 2012 Богатов Р.Н.
В. М. Гуровиц, Глобальные функции объявляются в самой программе или в модуле и доступны из любого места программы Локальные функции.
1 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; 2 namespace.
Проект Три шара Постановка задачи : Дано число N – количество вызовов функции, которая возвращает шар одного из трех цветов : красный, синий или желтый.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
Class Date { private int year = 0; private int month = 0; private int day = 0; public void SetDate (int y, int m, int d) { year = y; month = m; day = d;
1 A + B Операнд 1Операнд 2 Оператор Что такое выражение (expression) ? Что такое инструкция (statement) ? Операторы int max = (a > b) ? a : b;
Параллельная работа сокетов в C#. Потоки в C# using System; using System.Threading; public class ThreadExample { public static void ThreadProc() { for.
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
PHP как язык программированияPHP как язык программирования.
Региональный КЦ - помощь образованию / Главная страница
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Object-Oriented Programming Ramzi Saifan Program Control Slides adapted from Steven Roehrig.
Транксрипт:

Программирование на языке высокого уровня Лекция 7. Методы класса как подпрограммы. Решение нелинейных уравнений Кафедра АСОИУ ОмГТУ, 2012 Богатов Р.Н.

Подпрограмма. Процедура. Функция. Метод Машинный язык: Подпрограмма принимает и возвращает значения через глобальные переменные, регистры или стэк. Pascal: Процедура = подпрограмма Функция = подпрограмма, возвращающая значение C: Функция может возвращать или не возвращать значение (процедур нет) C#, Java и другие: Данные и код инкапсулированы в классы. Инкапсулированные подпрограммы называются методами. // пример вызова процедуры на языке Assebmler mov ax, 0 mov dx, 123 call my_proc // пример вызова процедур и функций на языке Pascal writeln; y := sin(x); // пример вызова функций на языке Си getch(); c = getch(); y = sin(x); // пример вызова методов на языке C# textBox1.Hide(); x = r.NextDouble(); y = Math.Sin(x); // пример вызова процедуры на языке Assebmler mov ax, 0 mov dx, 123 call my_proc // пример вызова процедур и функций на языке Pascal writeln; y := sin(x); // пример вызова функций на языке Си getch(); c = getch(); y = sin(x); // пример вызова методов на языке C# textBox1.Hide(); x = r.NextDouble(); y = Math.Sin(x);

Подпрограмма. Процедура. Функция. Метод Машинный язык: Подпрограмма принимает и возвращает значения через глобальные переменные, регистры или стэк. Pascal: Процедура = подпрограмма Функция = подпрограмма, возвращающая значение C: Функция может возвращать или не возвращать значение (процедур нет) C#, Java и другие: Данные и код инкапсулированы в классы. Инкапсулированные подпрограммы называются методами. // пример вызова процедуры на языке Assebmler mov ax, 0 mov dx, 123 call my_proc // пример вызова процедур и функций на языке Pascal writeln; y := sin(x); // пример вызова функций на языке Си getch(); c = getch(); y = sin(x); // пример вызова методов на языке C# textBox1.Hide(); x = r.NextDouble(); y = Math.Sin(x); // пример вызова процедуры на языке Assebmler mov ax, 0 mov dx, 123 call my_proc // пример вызова процедур и функций на языке Pascal writeln; y := sin(x); // пример вызова функций на языке Си getch(); c = getch(); y = sin(x); // пример вызова методов на языке C# textBox1.Hide(); x = r.NextDouble(); y = Math.Sin(x); public partial class Form1 : Form { int N; int[] a; private void button1_Click(object sender, EventArgs e) { N = (int)numericUpDown1.Value; a = new int[N]; massiv_sluchaino(0, 100); massiv_v_textbox(); massiv_sort(); massiv_v_textbox(); massiv_perevorot(); massiv_v_textbox(); } void massiv_v_textbox() { for (int i = 0; i < N; i++) textBox1.Text += String.Format("a[{0}] = {1}\r\n", i + 1, a[i]); textBox1.Text += "\r\n"; } void massiv_sluchaino(int min, int max) {... } public partial class Form1 : Form { int N; int[] a; private void button1_Click(object sender, EventArgs e) { N = (int)numericUpDown1.Value; a = new int[N]; massiv_sluchaino(0, 100); massiv_v_textbox(); massiv_sort(); massiv_v_textbox(); massiv_perevorot(); massiv_v_textbox(); } void massiv_v_textbox() { for (int i = 0; i < N; i++) textBox1.Text += String.Format("a[{0}] = {1}\r\n", i + 1, a[i]); textBox1.Text += "\r\n"; } void massiv_sluchaino(int min, int max) {... } private void button1_Click(object sender, EventArgs e) {... label1.Text = "Максимум = " + massiv_max(); label2.Text = "Сумма без крайних эл-в = " + massiv_part_sum(1, N-2); } int massiv_max() { int max = int.MinValue; for (int i = 0; i < N; i++) if (a[i] > max) max = a[i]; return max; } int massiv_part_sum(int i, int j) { int sum = 0; for (int k = i; k max) max = a[i]; return max; } int massiv_part_sum(int i, int j) { int sum = 0; for (int k = i; k

Решение нелинейного уравнения public partial class Form1 : Form { double x1, x2, eps; int N; private void button1_Click(object sender, EventArgs e) { x1 = Convert.ToDouble(textBox4.Text); // начало отрезка изоляции x2 = Convert.ToDouble(textBox5.Text); // конец отрезка изоляции eps = Convert.ToDouble(textBox6.Text); // точность N = Convert.ToInt32(textBox7.Text); // предельное число итераций metod_del_popolam(); //metod_iteraziy(); //metod_Newtona(); } double y(double x) { return Math.Cos(x) - x * x * x; } void metod_del_popolam() {... } public partial class Form1 : Form { double x1, x2, eps; int N; private void button1_Click(object sender, EventArgs e) { x1 = Convert.ToDouble(textBox4.Text); // начало отрезка изоляции x2 = Convert.ToDouble(textBox5.Text); // конец отрезка изоляции eps = Convert.ToDouble(textBox6.Text); // точность N = Convert.ToInt32(textBox7.Text); // предельное число итераций metod_del_popolam(); //metod_iteraziy(); //metod_Newtona(); } double y(double x) { return Math.Cos(x) - x * x * x; } void metod_del_popolam() {... } void metod_del_popolam() { textBox1.Text = ""; double a = x1, b = x2, c = 0, fc = 0; double fa = y(a); double fb = y(b); // проверка на наличие корней (fa*fb>=0) int i = 1; for (; i < N; i++) { c = (a + b) / 2; fc = y(c); //...вывод протокола итерации (если нужно) if (b - c < eps) break; if (fa * fc < 0) { b = c; fb = fc; } else { a = c; fa = fc; } // вывод или возврат результата } void metod_del_popolam() { textBox1.Text = ""; double a = x1, b = x2, c = 0, fc = 0; double fa = y(a); double fb = y(b); // проверка на наличие корней (fa*fb>=0) int i = 1; for (; i < N; i++) { c = (a + b) / 2; fc = y(c); //...вывод протокола итерации (если нужно) if (b - c < eps) break; if (fa * fc < 0) { b = c; fb = fc; } else { a = c; fa = fc; } // вывод или возврат результата } // вывод протокола итерации textBox1.Text += String.Format( "a = {0:0.###}\t c = {1:0.###}\t b = {2:0.###}\t f(c) = {3:0.###}\r\n", a, c, b, fc); // вывод результата textBox1.Text = String.Format( "x = {0}\r\ny(x) = {1}\r\ndx = {2}\r\nИтераций = {3}\r\n\r\n", c, fc, b-c, i) + textBox1.Text; // вывод протокола итерации textBox1.Text += String.Format( "a = {0:0.###}\t c = {1:0.###}\t b = {2:0.###}\t f(c) = {3:0.###}\r\n", a, c, b, fc); // вывод результата textBox1.Text = String.Format( "x = {0}\r\ny(x) = {1}\r\ndx = {2}\r\nИтераций = {3}\r\n\r\n", c, fc, b-c, i) + textBox1.Text;

Решение нелинейного уравнения double y_x(double x) { return Math.Pow(Math.Cos(x), 1/3.0); } void metod_iteraziy() { textBox2.Text = ""; double x = (x1+x2)/2, prev_x = x; int i = 1; for (; i < N; i++) { x = y_x(prev_x); //...вывод протокола итерации(если нужно) if (Math.Abs(prev_x - x) < eps) break; prev_x = x; } //...вывод или возврат результата } double y_x(double x) { return Math.Pow(Math.Cos(x), 1/3.0); } void metod_iteraziy() { textBox2.Text = ""; double x = (x1+x2)/2, prev_x = x; int i = 1; for (; i < N; i++) { x = y_x(prev_x); //...вывод протокола итерации(если нужно) if (Math.Abs(prev_x - x) < eps) break; prev_x = x; } //...вывод или возврат результата } double dy(double x) { return - Math.Sin(x) - 3 * x * x; } void metod_Newtona() { textBox3.Text = ""; double x = (x1+x2)/2, prev_x = x; int i = 1; for (; i < N; i++) { x = prev_x - y(prev_x) / dy(prev_x); //...вывод протокола итерации(если нужно) if (Math.Abs(prev_x - x) < eps) break; prev_x = x; } //...вывод или возврат результата } double dy(double x) { return - Math.Sin(x) - 3 * x * x; } void metod_Newtona() { textBox3.Text = ""; double x = (x1+x2)/2, prev_x = x; int i = 1; for (; i < N; i++) { x = prev_x - y(prev_x) / dy(prev_x); //...вывод протокола итерации(если нужно) if (Math.Abs(prev_x - x) < eps) break; prev_x = x; } //...вывод или возврат результата } void metod_hord() { textBox8.Text = ""; double a = x1, b = x2, c = 0; int i = 1; for (; i < N; i++) { c = a - y(a) * (a - b) / (y(a) - y(b)); //...вывод протокола итерации(если нужно) if (Math.Abs(c - a) < eps) break; b = a; a = c; } //...вывод или возврат результата } void metod_hord() { textBox8.Text = ""; double a = x1, b = x2, c = 0; int i = 1; for (; i < N; i++) { c = a - y(a) * (a - b) / (y(a) - y(b)); //...вывод протокола итерации(если нужно) if (Math.Abs(c - a) < eps) break; b = a; a = c; } //...вывод или возврат результата }

Решение нелинейного уравнения

Реализовать генератор псевдо-случайных чисел в виде нескольких методов, аналогичных Random.Next и Random.NextDouble. Домашнее задание