Пример #1
0
        void Calcula2(FuncDeX f, double x1, double x2, double incr, string serie)
        {
            lbx.Items.Clear();
            // declara variável para armazenar a expressão
            // que resulta na condição do While
            CondWhile cond;

            // se x1 menor que x2 a contagem deverá ser progressiva
            // e o loop deve prosseguir enquanto x1 <= x2
            if (x1 < x2)
            {
                cond = (cont, limite) => cont <= limite;
            }
            // caso contrário a contagem será regressiva
            // e o loop deve prosseguir enquanto x1 >= x2
            else
            {
                cond = (cont, limite) => cont >= limite;
            }
            double x = x1;

            chart1.Series[0].ChartType = SeriesChartType.Line;

            chart1.Series[0].Points.Clear();
            chart1.Series[0].Name = serie;
            chart1.Titles.Clear();
            chart1.Titles.Add("Título Principal");
            chart1.Titles.Add("Sub-Título");

            chart1.Titles[0].Font = new Font("Arial", 12);

            chart1.Legends[0].Docking = Docking.Bottom;

            chart1.ChartAreas[0].AxisY.Title = "Tit. eixo Y";
            chart1.ChartAreas[0].AxisX.Title = "Tit. eixo X";

            // executa o loop while utilizando como condição
            // a expressão atribuída à variável cond. Passamos
            // para a expressão o valor de x (contador em a)
            // e x2 (limite de contagem em b)
            while (cond(x, x2))
            {
                double y = f(x);
                chart1.Series[0].Points.Add(new DataPoint(x, y));
                lbx.Items.Add("f( " + x.ToString("0.0000") + ") = " + y.ToString("0.0000"));
                x += incr;
            }
        }
Пример #2
0
        // rotina auxiliar que recebe a variável f que é do tipo FuncDeX
        // esta variável aponta para um método que respeite a
        // assinatura criada pelo delegate. Pode apontar para o método
        // divide, multiplica ou qualquer outro que receba como parâmetro
        // um dado do tipo double e retorne com double
        /// <summary>
        /// rotina auxiliar que gera valores x e y de uma função linear
        /// </summary>
        /// <param name="f">Ponteiro para o método que calcula Y dado X</param>
        /// <param name="inicio">X inicial</param>
        /// <param name="fim">X final</param>
        /// <param name="incr">incremento de X</param>
        void Calcula(FuncDeX f, double inicio, double fim, double incr)
        {
            lbx.Items.Clear();
            double ctdr = inicio;

            // loop para gerar os valores de Y
            while (ctdr <= fim)
            {
                // calcula Y de acordo com o método apontado
                // pela variável f
                double y = f(ctdr);
                // mostra os valores de X e Y no listBox
                lbx.Items.Add("f( " + ctdr + ") = " + y.ToString("0.0000"));
                ctdr += incr;
            }
        }
Пример #3
0
        // rotina auxiliar que recebe a variável f que é do tipo FuncDeX
        // esta variável aponta para um método que respeite a
        // assinatura criada pelo delegate. Pode apontar para o método
        // divide, multiplica ou qualquer outro que receba como parâmetro
        // um dado do tipo double e retorne com double
        /// <summary>
        /// rotina auxiliar que gera valores x e y de uma função linear
        /// </summary>
        /// <param name="f">Ponteiro para o método que calcula Y dado X</param>
        /// <param name="x1">X inicial</param>
        /// <param name="x2">X final</param>
        /// <param name="incr">incremento de X</param>
        void Calcula(FuncDeX f, double x1, double x2, double incr)
        {
            lbx.Items.Clear();
            double x = x1;

            // loop para gerar os valores de Y
            // faz apenas contagem progressiva, o método Calcula2 resolve o problema
            // podendo contar tanto progressivo quanto regressivo
            while (x <= x2)
            {
                // calcula Y de acordo com o método apontado
                // pela variável f
                double y = f(x);
                // mostra os valores de X e Y no listBox
                lbx.Items.Add("f( " + x + ") = " + y.ToString("0.0000"));
                x += incr;
            }
        }