Baixe o app para aproveitar ainda mais
Prévia do material em texto
2 UNI UNIVERSIDADE ESTADUAL DE GOIAS-UEG UNIDADE UNIVERSITÁRIA DE CIÊNCIAS EXATAS E TECNOLÓGICAS-UNUCET DISCIPLINA DE COMPUTAÇÃO I CURSO DE ENGENHARIA CIVIL MODELAGEM COMPUTACIONAL DE PROBLEMAS MATEMÁTICOS SIMPLES USANDO C++ ANÁPOLIS-GO DEZEMBRO DE 2013 3 UNI UNIVERSIDADE ESTADUAL DE GOIAS-UEG UNIDADE UNIVERSITÁRIA DE CIÊNCIAS EXATAS E TECNOLÓGICAS-UNUCET DISCIPLINA DE COMPUTAÇÃO I CURSO DE ENGENHARIA CIVIL MODELAGEM COMPUTACIONAL DE PROBLEMAS MATEMÁTICOS SIMPLES USANDO C++ ANÁPOLIS-GO DEZEMBRO DE 2013 ACADÊMICOS: GABRIEL DE SOUSA MEIRA JESSIKA CAROLINE MOURA RODRIGUES PATRÍCIA SARDINHA DIAS TIBÉRIO CÉSAR DE SOUSA TRABALHO DE COMPUTAÇÃO I UTILIZADO NA COMPOSIÇÃO DA NOTA DE 1ª V.A. ii 4 RESUMO A modelagem computacional é a simulação de soluções para problemas científicos, analisando fenômenos, desenvolvendo representação matemática para sua descrição e elaborando códigos computacionais para obtenção daquelas soluções. Para que isso seja feito, é necessário observar o problema, desenvolver as equações que regem o mesmo através de modelagem matemática e, por fim, criar uma solução computacional mediante um código apropriado. Este trabalho tem como propósito apresentar informações acerca da modelagem computacional C++ e suas principais características, e também visa apresentar como é feita a leitura, a transferência de um problema matemático simples lido pela linguagem humana para um código fonte lido pelo computador. Em outras palavras, o trabalho mostra como definir uma representação matemática através da linguagem computacional, por meio de um sistema de programação, mostrando assim uma característica muito importante do contexto atual vivido pela humanidade, que é a inserção das culturas produzidas pelo homem, neste caso em particular, a álgebra simples, em linguagem computadorizada. Palavras-chave: modelagem, matemática, computador. iii 5 ABSTRACT Computer modeling is the simulation of solutions to scientific problems, analyzing phenomena, developing mathematical representation for describing and developing computer codes to obtain those solutions . For this to be done, it is necessary to observe the problem, develop the equations governing the same through mathematical modeling and, finally , create a computational solution by an appropriate code . This paper aims to present information on computer modeling C + + and its main features , and also aims to present how the reading is taken , the transfer of a simple math problem read by human language for a source read by the computer . In other words, it shows that a mathematical representation defined by the computer language by means of a programming system , thus showing a very important feature of the current context experienced by the humanity , that is the insertion of crops cultivated by man, in this case in particular , simple algebra, to computed language. Keywords : modeling, mathematics, computer. iv 6 SUMÁRIO 1 INTRODUÇÃO.....................................................................................................................1 2 FUNDAMENTAÇÃO TEÓRICA.............................................................................................4 3 DESCRIÇÃO........................................................................................................................12 4 ALGORITMO........................................................................................................................17 5 CÓDIGO-FONTE...................................................................................................................19 6 EXEMPLOS.........................................................................................................................27 7 ANÁLISE.............................................................................................................................30 8 CONCLUSÃO........................................................................................................................46 9 REFERÊNCIAS BIBLIOGRÁFICAS...................................................................................47 v 1 INTRODUÇÃO Um programa de computador indica ao computador a sequência de passos necessários para executar uma tarefa. O ato de projetar e implementar estes programas é conhecida como programação. Existem vários tipos de programas para programação, como por exemplo, o C, C++, Java, Pascal, UML, DELPHI, COBOL. Nesse trabalho usaremos a linguagem em C e C++. (CAY HORSTMANN, 2005). O “C” foi criado na década de 70, pelo inventor Dennis Ritchie, implementando-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O “C” é uma linguagem de computador de nível médio, (acrescentar definição de médio), que é utilizada para a criação de programas diversos como processadores de texto, sistemas operacionais, programas para a automação industrial, programas de projeto assistido por computadores, (acrescentar demais exemplos). A linguagem em C é bastante portátil o que significa que o software escrito para um tipo de computador pode ser adaptado para outro tipo de programa; Além disso, os programas em C podem ser processados com uma velocidade muito alta, o que fez com que o “C” ganhasse fama entre os programadores. (HERBERT SCHILDT, 1986). A linguagem C foi desenvolvida para ser traduzida eficientemente para código de máquina rápida com o menos possível de sobrecarga de manutenção. A linguagem C++ foi construída sobre a C, adicionando características para “programação orientada a objetos”, que é um estilo de programação que apresenta uma modelagem mais fácil de execução. (CAY HORSTMANN, 2005). A linguagem C++ foi desenvolvida nos Laboratórios Bell no inicio dos anos 80. C++ é uma linguagem híbrida e contém a funcionalidade orientada para objeto com as características de uma linguagem estruturada eficiente e tradicional. A linguagem C++ oferece ao programador e a quem soluciona problemas em relação ao objeto sem uma perca de tempo para executá-lo com uma maior eficiência de memória. (Richard S. Wiener; Lewis J. Pinson, 1941). C e C++ são bons exemplos de linguagens que cresceram de modo incremental. À 2 medida que usuários da linguagem perceberam defeitos no programas, eles adicionaram recursos. A linguagem C aproveita uma enorme capacidade de suporte de ferramentas, estas que podem apresentar erros diminuindo assim a qualidade do sistema. A partir desses erros surgiu a linguagem C++, que acabou promovendo uma crescente evolutiva nas linguagens em C e C++, o que acabou destacando-os dentre os demais outros programas de programação. Atualmente, C++ é a principal linguagem de programação de uso geral. (CAY HORSTMANN, 2005). Dentro d linguagem C e C++ existem diversos comandos. Alguns deles são: “printf( )”, que um comando que faz com que apareça uma determinada mensagem na tela do terminal; “scanf( )”, que é um comando que faz com que algo digitado no terminal seja lido pelo programa que está sendo executado; “if( )”, que é um comando que representa uma tomada de decisão, por exemplo: se o resultado for diferente de oito a declaração será executada, agora, se o resultado for igual a oito a declaração noa será executada; “else”,que é um comando que é considerado um complemento do comando if( ), o else será usado para indicar o oposto do declarado no if( ); “for”, que é um programa que é usado para repetir um comando ou bloco de comandos de maneira que se posssa ter um bom controle sobre o loop;”while”, que é um comando que é usado para repetir comandos, testa uma condição, se esta condição for verdadeira declaração é executada e o programa repete novamente; “return” que é um comando faz com que a função retorne a um determinado valor. (UFMG, 2013) Na linguagem C e C++, para que uma função ou comando ( printf( ), scanf( ), etc) seja reconhecida pela programação é preciso que haja a declaração de bibliotecas no programa a ser construído. Bibliotecas são conjuntos de funções especificas para determinado objetivo. “<stdio.h>”, “<stdlib.h> e “ <math.h>”, são exemplos de bibliotecas utilizadas por aquelas linguagens. (UFMG, 2013) Antes de se começar a realização de um programa, é necessária a construção de um algoritmo. Algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. O algoritmo também é visto como uma ferramenta para resolver um 3 problema computacional bem especificado O enunciado do problema especifica o relacionamento entre entrada e a saída, o algoritmo descreve um programa computacional especifico para se alcançar esse relacionamento entre entrada e a saída. Um exemplo de algoritmo seria: “- Algoritmo do cálculo da área do quadrado: 1- Colocar cabeçalho; 2- Colocar bibliotecas; 3- Declarar variáveis; 4- Ler o valor X; 5- Calcular área pela fórmula: A=X*X; 6- Imprimir valor de A. ” (THOMAS H. CORMEN, et al, 2001; UFMG, 2013). Para a execução de um programa é necessário a compilação deste. Compilação de um programa é transformar o código fonte em um programa executável. No C++, quando você copila um programa, o compilador traduz o código fonte (isto é, os comandos escritos no código fonte) em um código objeto. O código objeto consiste de instruções de maquina e informações sobre como carregar o programa na memória antes da execução. O código objeto ou o programa executado é armazenado em um arquivo separado, usualmente com a extensão “.e”, por exemplo: “exemplo.e”. No C++, o comando para compilação é: “g++ -o exemplo.cpp exemplo.e.”. O programa executado conterá somente a tradução do código fonte. (CAY HORSTMANN, 2005). 4 FUNDAMENTAÇÃO TÉORICA Fundamentos Teóricos da Linguagem de Programação C/C++ A linguagem em C++ foi criada junto ao sistema operativo Unix em 1970 e foi desenvolvida nos laboratórios por B. W. Kernigham. A linguagem em C/C++ tem características que foram se adequando ao não só em ambientes. Umas das suas dessas características era a capacidade de se programar um hardware com facilidade, outro detalhe era perceptível era capacidade de se trabalhar um byte dentro de outro byte. O programa permitia a construção de cabeçalhos e ficheiros que eram usados para declarar funções e defini-las. Uma última característica era efetuar, sem dificuldades um o reaproveitamento de um software. Como, por exemplo, criar um ficheiro que funcione em conjunto com um hardware. Com o passar dos anos, surgiu a necessidade de se criar que usasse toda a capacidade da linguagem em C que ao mesmo tempo facilitasse a programação que com o passar dos anos se tornava cada vez mais complexa. E assim surgiu a linguagem em C++ este avanço permitiu a criar estruturas como objetos que seriam executas numa caixa preta, hoje conhecida como terminal que facilitava o recurso de fazer uma mesma operação com algoritmos diversas vezes. O principal objetivo dessa caixa era muito simples, entenda como o som que sai de um som estéreo sabe-se o que entra, mais não como sai, que em si o resultado final era o som da música. Porém não sabemos o que esse leitor faz para ler o CD e converter essa leitura em música. Um outro princípio deste programa é a herança que funciona em relação as propriedades que possam existir entre os objetos, facilitando sua programação. Se pensarmos em programação gráfica, temos um objeto que efetuam nos pontos de um ecrã, que desenha as linhas que são desenhadas herdando o desenho formados por estes pontos, que podem formar figuras geométricas como um pentágono, retângulo entre outros. Este tipo de programação é bastante simples e facilita a reutilização do software criado. A linguagem em C usa unicamente funções, isto quer dizer que cada objeto criado é 5 considerado uma função. Mas oque seria uma função em C? Uma função é um bloco de códigos que pode ser chamado uma série de vezes e que pode ter valores que são aderidos quando elas são chamadas e que ao mesmo tempo, retorna a outros valores. Em C é uma função com o nome próprio MAIN. A função MAIN, como qualquer outra, é definida por: um cabeçalho constituído por: 1. tipo de dados que a função devolve seu nome parâmetros formais que recebe por um corpo (definido entre {}) com: declarações definições instruções Um simples programa em C: 1. #include<stdio.h> 2. #int main (void) 3. { 4. printf( “beleza?”); A primeira linha serve para inserirmos o ficheiro cabeçalho. Neste programa é usado somente o stdio.h que possui definições necessárias para efetuar o programa na sua entrada e saída de funções. 6 A segunda linha define o corpo principal do programa. Que é a função descrita. A terceira linha é o símbolo para abrir a função. A quarta linha tem a função de imprimir a mensagem no terminal. A quinta linha finaliza fechar a função. Palavras reservadas em C: estrutura de dados: Para definir variáveis em C ou C++, temos os seguintes tipos: · int à número inteiro · float à vírgula flutuante de precisão simples · double à vírgula flutuante de precisão dupla Em C e C++ temos que falar em definições de variáveis. Estas definições dependem das localizações dessas variáveis. Oque significa quem essas variáveis tem que ser declaradas no inicio do programa (após o include) são chamadas de variáveis globais, possuem este nome por serem aceitas em qualquer programa. Operadores aritméticos: + soma; - subtração; * multiplicação; / divisão; % módulo. 7 Operadores Lógicos e de Comparação: < menor que; > maior que; <=menor ou igual a; == igual a; != diferente ||= ou , &&=e ! negação Funções do C e C++: printf(“\n beleza?\n”); . \n pula uma linha . \t tabelamento . \b espaço para trás . \\ barra invertida . \r à “carriage return” o cursor volta ao início da linha sem mudar de linha Printf e opções de mostra: .%d valor numérico em decimal .%x valor numérico em hexadecimal .%o valor numérico em octal 8 .%f valor numérico do tipo real .%c valor á representar é do tipo character .%s valor representa strings scanf(“%d”,variável); if { } else { } while { } for { } Fundamentação matemática Equação de primeiro grau (equação da reta) Para se representar uma reta no plano cartesiano, usa-se geralmente a condição 9 geométrica ou a equação matemática. No caso, o interessante é usar a equação matemática da reta, que pode ser escrita nas seguintes formas: reduzida, segmentária, geral ou paramétrica. Na criação do código fonte deste trabalho, está sendo usada a representação de uma equação reduzida de reta. Para calculá-la, procede-se do seguintemodo: considerando a equação da reta que passa por um ponto Q (x1, y1), com coeficiente angular a, tem-se que: y – y1 = a * (x – x1) Escolhendo ao acaso, o ponto (0, b) e determinando que a reta o intersecte, percebe-se que: y – b = a * (x – 0) y – b = a * x – a * 0 y – b = ax y = ax + b Portanto, a equação reduzida da reta possui a seguinte lei de formação: y = ax +b Equação de segundo grau (parábola) Chama-se função quadrática, ou função polinomial do 2º grau, qualquer função f de IR em IR dada por uma lei da forma f(x) = ax2 + bx + c, onde a, b e c são números reais e a é diferente de zero. O maior índice da incógnita na equação é igual a dois e é isto que a define como sendo uma equação do segundo grau. Alguns exemplos de função quadráticas: f(x) = 3x2 - 4x + 1, onde a = 3, b = - 4 e c = 1 f(x) = x2 -1, onde a = 1, b = 0 e c = -1 f(x) = 2x2 + 3x + 5, onde a = 2, b = 3 e c = 5 f(x) = - x2 + 8x, onde a = -1, b = 8 e c = 0 f(x) = -4x2, onde a = - 4, b = 0 e c = 0 Zero e Equação do 2º Grau Chama-se zeros ou raízes da função polinomial do 2º grau f(x) = ax2 + bx + c , a 0, os 10 números reais x tais que f(x) = 0. Para a resolução de uma equação do segundo grau, pode-se recorrer à fórmula geral de resolução: Esta fórmula também é conhecida como fórmula de Bhaskara. O valor b2 -4ac é conhecido como discriminante da equação e é representado pela letra grega Δ. Temos então que Δ = b2 -4ac, o que nos permitir escrever a fórmula geral de resolução como: A quantidade de raízes reais de uma função quadrática depende do valor obtido para o discriminante, a saber: quando é positivo, há duas raízes reais e distintas; quando é zero, há só uma raiz real (para ser mais preciso, há duas raízes iguais); quando é negativo, não há raiz real. Área do triângulo dados três pontos do plano cartesiano (regra do determinante) Os elementos que fundamentam a geometria analítica são os pontos e suas coordenadas. Dentre os cálculos das áreas de figuras planas, existe uma expressão que determina a área de uma região triangular utilizando apenas as coordenadas dos vértices do triângulo. O cálculo da área (A) de um triângulo através dos conhecimentos da geometria analítica é dado pelo determinante dos vértices dividido por dois. A = |D|/2 O parâmetro D é determinado pela matriz das coordenadas dos vértices do triângulo ABC. D= = xa.yb + xc.ya + xb.yc – xc.yb – xa.yc – xb.ya O parâmetro D é a mesma matriz determinante para verificar a condição de alinhamento 11 de três pontos. Assim sendo, caso ao verificar a área de um suposto triângulo e o determinante dê zero, na verdade esses três pontos não constituem um triângulo, pois estão alinhados (por isso a área é zero). Uma observação importante em relação à expressão para o cálculo da área é quanto ao Parâmetro D estar em módulo, ou seja, usaremos o seu valor absoluto. Por se tratar de área, não devemos adotar um determinante negativo, pois isso resultará em uma área negativa e isso não existe. 12 DESCRIÇÃO Para criar um código computacional, primeiramente coloca-se o cabeçalho, isto é, as informações básicas acerca do programa, em forma de comentário, para não ser compilado junto com o código fonte, apenas compreendido em linguagem humana. Isso pode ser feito através de barras duplas no começo de cada linha, ou com barra-asterisco no início e asterisco-barra no final do comentário-bloco. Feito isso, inclui-se as bibliotecas, que são acervos de informações específicas para determinado fim. A importância da biblioteca em C é imensa, pois ela poupa o programador de muita programação. Uma vez que a função já está pronta dentro da biblioteca, basta importar tal biblioteca e utilizar a função desejada. Por exemplo, se a intenção é mostrar uma mensagem na tela, não tem necessidade de produzir uma função inteira ou criar um comando novo, basta importar uma biblioteca de I/O (entrada e saída) e utilizar uma função dela. Quando for compilar, o compilador vai buscar nas bibliotecas tais funções para saber como utilizá-las. O papel do pré-processamento é indicar, antes mesmo de compilar, os parâmetros necessários para ser criado o arquivo executável. O pré-processamento é indicado pelo caracter sharp (#) no inicio da linha e deve ser usado no início da programação. As bibliotecas são declaradas desse modo: #include<stdio.h> #include<stdlib.h> Após a declaração de bibliotecas, deve-se colocar a função principal int main, que é a função que será chamada quando o programa for executado. O conteúdo da função é delimitado por chaves { }. O código que estiver dentro das chaves será executado seqüencialmente quando a função for chamada. A palavra int indica que a função retorna um inteiro, por isso no final do código fonte aparece a expressa return 0, que indica o número retornado pela função, no caso, o número zero. 13 As variáveis em C++ devem ser declaradas antes de serem usadas. A forma geral de declaração de variáveis é: tipo_de_variavel lista_de_variaveis Exemplo: int a=0, b=0; float c=0.0, d=2.0; As variáveis da lista de variáveis têm o mesmo tipo e são separadas por vírgulas. Há três lugares nos quais podemos declarar variáveis. O primeiro é fora de todas as funções do programa. Estas variáveis são chamadas variáveis globais e podem ser usadas a partir de qualquer lugar no programa. Pode-se dizer que, como elas estão fora de todas as funções, todas as funções as vêem. O segundo lugar no qual se pode declarar variáveis é no início de um bloco de código. Estas variáveis são chamadas locais e só têm validade dentro do bloco no qual são declaradas, isto é, só a função à qual ela pertence sabe da existência desta variável, dentro do bloco no qual foram declaradas. O terceiro lugar onde se pode declarar variáveis é na lista de parâmetros de uma função. Mais uma vez, apesar de estas variáveis receberem valores externos, estas variáveis são conhecidas apenas pela função onde são declaradas. Os comandos utilizados na programação dos problemas matemáticos contidos neste trabalho são: “printf()” e “scanf()”. O comando printf() coloca uma sentença de caracteres na tela do computador, dando uma informação específica ao usuário, para que o mesmo realize uma determinada ação. A mensagem é colocada dentro dos parênteses, entre aspas. O\n é uma constante chamada constante barra invertida; é interpretado como mudança de linha. É importante observar que todos os comandos em C++ terminam com;. Exemplo: printf(“\n mensagem para o usuario \n”);. O comando scanf() é utilizado para ler um ou mais dados fornecidos pelo usuário. Usa- 14 se o %d para ler um número inteiro; caso seja necessário ler um número racional, utiliza-se %f. A segunda informação indica em qual variável o número lido será armazenado. É importante colocar o símbolo & antes da variável a ser lida. Caso haja mais de uma variável, é importante separá-las por vírgula. Exemplo: scanf(%d,&dias);. Após a leitura de variáveis, a função printf() é chamada novamente para mostrar os valores lidos ao usuário. Para tanto, utiliza-se uma máscara, isto é, uma forma textual para representar um número, através do símbolo %. Usa-se também um número indicando a quantidade de algarismos que serão mostrados no computador na variável correspondente. Indica-se a variável lida após as aspas, depois de vírgula. Exemplo: printf(“\n %3d\n”,dias); printf(“\n %5.2f\n”,anos);. Algumas funções utilizadas na linguagem C++ são : “if” e “else” para indicar condições, e “for” e “while”, para indicar repetição de comandos. Ocomando if possui forma geral: if (condição) declaração; Exemplo: if(a>0) {printf(“\n a eh positivo \n”);} A expressão, na condição, será avaliada. Se ela for zero, a declaração não será executada. Se a condição for diferente de zero a declaração será executada. Caso a declaração seja zero e ainda assim deseja-se executá-la, usa-se o comando “else”, que pe complementar ao comando “if”. O for ou loop (laço) for é usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. Sua forma geral é: for (inicialização;condição;incremento) declaração; 15 Exemplo: for(i=i;i<=n;i++) A declaração no comando for também pode ser um bloco ({ } ) e neste caso o ; é omitido. O melhor modo de se entender o loop for é ver de que maneira ele funciona "por dentro". O loop for é equivalente a se fazer o seguinte: inicialização; if (condição) { declaração; incremento; "Volte para o comando if" O for executa a inicialização incondicionalmente e testa a condição. Se a condição for falsa ele não faz mais nada. Se a condição for verdadeira ele executa a declaração, o incremento e volta a testar a condição. Ele fica repetindo estas operações até que a condição seja falsa. O comando while tem a seguinte forma geral: while (condição) declaração; Exemplo: while(a>0) {printf(“\n a eh positivo\n”);} Então o while seria equivalente a: 16 if (condição) { declaração; "Volte para o comando if" } Podemos ver que a estrutura while testa uma condição. Se esta for verdadeira a declaração é executada e faz-se o teste novamente, e assim por diante. Mas assim que surgir uma condição falsa, o comando para e não é mais executado. Porém, assim como no caso do for, podemos fazer um loop infinito. Para tanto basta colocar uma expressão eternamente verdadeira na condição. Pode-se também omitir a declaração e fazer um loop sem conteúdo. 17 ALGORITMO Primeiro problema: Equação da Reta 1- Ler os valores dos pontos A (xa,ya), B(xb,yb) 2- Calcular dy=yb-ya, dx=xb-xa 3- Calcular ca=dy/dx, cb= ya-ca*xa 4- Calcular yc=cb, xd= -cb/ca 5-Imprimir equação da reta f(x)=ca*x+cb 6-Imprimir a reta intercepta eixo y em (0,yc) 7-Imprimir a reta intercepta o eixo x em (xd,0,xc) Segundo problema : Equação do segundo grau: 1-Ler os valores de A, B e C; 2-Calcular D= B*B-4*A*C; 3-Se D>=0 então, faça: 3.1- X1= (-B + sqtr D) /2*A; 3.2- X2= (-B-sqtr D) /2*A; 3.3-Imprimir X1 e X2; 4-Se não: 4.1-Imprimir: este programa não calcula raízes imaginárias. 18 Terceiro problema :Área do triangulo 1- Ler as coordenadas dos pontos A (xa,ya), B (xb,yb) C(xc,yc). 2-Calcular det = xa*yb+xc*ya+xb*yc-xc*yb-xa*yc-xb*ya; 3-Se det>0 então faça a área = det*0.5 4-Se det==0 então imprima : impossível calcular 5-Se det<0 então faça area= (-1)*det*0.5 19 CÓDIGO-FONTE Primeiro problema: Equação da reta /* Programa equação da reta Acadêmicos:Gabriel de Sousa, Jéssica, Patricia, Tibério Data: 06/12/2013 Versão: beta 1.0 */ //bibliotecas utilizadas #include<stdio.h> #include<stdlib.h> // funcao principal int main() { // declaração de variáveis float xa=0.0, ya=0.0, xb=0.0, yb=0.0; float ca=0.0, cb=0.0, yc=0.0, xd=0.0; float dy=0.0, dx=0.0; int i=0, n=0; 20 // leitura de dados printf("\n ====================================================\n"); printf("\n Quantas equacoes a resolver ?"); scanf("%d",&n); printf("\n Serao resolvidas %3d equacoes \n”,n); while(i<n) { printf("\n ================================================== \n"); printf("\n Digite xa, ya, xb, yb \n "); scanf("%f %f %f %f",&xa,&ya,&xb,&yb); dy=yb-ya; dx=xb-xa; ca=dy/dx; cb=ya-ca*xa; yc=cb; xd=-cb/ca; printf("\n =================================================== \n"); 21 printf("\n A reta %3d e f(x)= %7.3f X + %7.3f \n",i,ca,cb); printf("\n ===================================================\n"); printf("\n intercepta y em (0,%7.3f) \n", yc); printf("\n intercepta x em (%7.3f,0) \n", xd); i++; } return 0; } Segundo problema: Equação do segundo grau /* Programa equaçao do segundo grau Programadores: Gabriel de Sousa,Jessica, Patricia, Tiberio Data: 06/12/2013 Versao: 1.0 */ //inclusao de bibliotecas #include<stdlib.h> #include<stdio.h> 22 #include<math.h> int main() { //declaracao de variaveis float a=0.0, b=0.0, c=0.0, d=0.0, X1=0.0, X2=0.0; //mensagem para o usuario printf("======================================================\n"); printf("\n digite os valores a, b e c=> \n"); scanf("%f %f %f",&a,&b,&c); d=b*b-4*a*c; //imprimir a,b,c printf("\n=====================================================\n"); printf("\n a=%7.3f b=%7.3f c=%7.3f d=%7.3f \n",a,b,c,d); //julgando o valor de d if(d>=0.0) { X1=(-b+sqrt(d)/2.0*a); X2=(-b-sqrt(d)/2.0*a); printf("\n=====================================================\n"); 23 printf("\n a=%7.3f b=%7.3f c=%7.3f d=%7.3f X1=%7.3f X2=%7.3f \n",a,b,c,d,X1,X2); } else { printf("\n======================================================"); printf("\n no momento esse programa ainda nao calcula \n"); printf("\n raizes imaginarias. Desculpe o transtorno \n"); } return 0;} Terceiro problema: Área do triângulo /* Programa: Area do triangulo Academicos: Gabriel de Sousa, Jessica, Patricia, Tiberio Data: 06/12/2013 Versao: 1.0 */ //bibliotecas utilizadas #include<stdio.h> 24 #include<stdlib.h> //funcao principal int main () { /Declaracao de variaveis float xa=0.0, xb=0.0, ya=0.0, yb=0.0, xc=0.0, yc=0.0; float det=0.0, area=0.0; int n=0, i=0; printf("\n Quantas vezes voce quer calcular a area do triangulo=> \n"); scanf("%d",&n); printf("\n A area sera calculada %7d vezes",n); for(i=1;i<=n;i++) { // mensagem 1 printf("\n=====================================================\n"); printf("\n Digite os valores das coordenadas de xa,ya=> \n" ); scanf("%f %f",&xa,&ya); // mensagem 2 printf("\n=====================================================\n"); 25 printf("\n Digite os valores das coordenadas de xb,yb=> \n" ); scanf("%f %f",&xb,&yb); // mensagem 3 printf("\n=====================================================\n"); printf("\n Digite os valores das coordenadas de xc,yc=> \n" ); scanf("%f %f",&xc,&yc); // Calculando o Determinante det= xa*yb+xc*ya+xb*yc-xc*yb-xa*yc-xb*ya; if(det>0) { area= det*0.5; printf("\n A area do triangulo eh %7.3f \n",area); } if(det==0) { printf("\n Impossivel Calcular \n"); } if(det<0) { 26 area= (-1)*det*0.5; printf("\n A area do triangulo eh %7.3f \n",area); } } return 0;} 27 EXEMPLOS Primeiro problema: Equação da reta n=2 Serão resolvidas 2 equações. Primeira equação xa = 2.0, ya = 0.0, xb = 5.0, yb = 3.0. dy = yb-ya = 3.0-0.0 = 3.0 dx = xb-xa = 5.0-2.0 = 3.0 ca = dy/dx= 3.0/3.0 = 1.0 cb = ya – ca*xa = 0.0 - 1.0*2.0 = -2.0 A equação da reta é f(x) = ca*X +cb = 1.0*X - 2.0 yc = cb = 2.0 xd =-cb/ca = -2.0/1.0 = -2.0 A reta intercepta o eixo y em (0.0, 2.0) e intercepta o eixo x em (-2.0, 0.0). Segunda equação xa=-1.0, ya=0.0, xb=-2.0, yb=4.0 dy = yb-ya= 4.0-0.0 = 4.0 dx = xb-xa = -2.0 +1.0= -1.0 ca = dy/dx = 4.0/1.0 = 4.0 cb = ya – ca*xa = 0.0 – 4.0*(-1.0) = 4.0 A equação da reta é f(x) = ca*X + cb = 4.0*X + 4.0 yc = cb = 4.0 28 xd = -cb/ca = -4.0/4.0 = -1.0 A reta intercepta o eixo y em (0.0, 4.0) e intercepta o eixo x em (-1.0, 0.0). Segundo problema: Equação de segundo grau Os valores dos coeficientes são: a = 1.0, b = -2.0, c = 1.0. d = b*b – 4*a*c = (-2.0)*(-2.0) – 4*(1.0)*(1.0) = 4.0 – 4.0 = 0.0 Já que d=0, as raízes serão iguais: x1 = -b + sqrt(d)/2.0*a = -(-2.0) + 0.0/2.0*1.0 = 2.0/2.0 = 1.0 x2 = -b - sqrt(d)/2.0*a = = -(-2.0) + 0.0/2.0*1.0 = 2.0/2.0 = 1.0 Os valores dos coeficientes são: a = 1.0, b = -4.0, c = 3.0. d = b*b – 4*a*c = (-4.0)*(-4.0) – 4*1.0*3.0 = 16.0 – 12.0 = 4.0 Já que d>0, as raízes serão distintas: x1 = -b + sqrt(d)/2.0*a = -(-4.0) + 2.0/2.0*1.0 = 6.0/2.0 = 3.0 x2 = -b - sqrt(d)/2.0*a = -(-4.0) - 2.0/2.0*1.0 = 2.0/2.0 = 1.0 Os valores dos coeficientes são: a = 2.0, b = 1.0, c=5.0. d = b*b – 4*a*c = 1.0*1.0 – 4*2.0*5.0 = 1.0 – 40.0 = -39.0 Já que d<0.0, não há raízes reais a serem calculadas. Terceiro problema: Área do triângulo n = 2 A área do triângulo será calculada duas vezes. Primeira vez 29 xa = 1.0, ya = 2.0, xb = 0.0, yb = 1.0, xc = 3.0, yc = 4.0 det = xa*yb+xc*ya+xb*yc-xc*yb-xa*yc-xb*ya det = 1.0*1.0 + 3.0*2.0 + 0.0*4.0 – 3.0*1.0 – 1.0*4.0 – 0.0*2.0 = 7.0 – 7.0 = 0.0 Já que det = 0.0, é impossível calcular a área. Segunda vez xa = 2.0, ya = 3.0, xb = -1.0, yb = 0.0, xc = -4.0, yc = 1.0 det = xa*yb+xc*ya+xb*yc-xc*yb-xa*yc-xb*ya det = 2.0*0.0 + (-4.0)*3.0 + (-1.0)*1.0 – (-4.0)*0.0 – 2.0*1.0 – (-1.0)*3.0 = -12.0 Já que det<0.0, o cálculo da área será: area = (-1)*det*0.5 = (-1.0)*(-12.0)*0.5 = 6.0 30 ANÁLISE Primeiro problema: Equação da reta /* O cabeçalho contém as informações básicas do programa. */ /* */ Estes caracteres abrem e fecham comentários. O que está entre asterisco-barra e barra-asterisco é ignorado pelo compilador. // declaração das bibliotecas // As duas barras à esquerda significam comentário (uma mensagem que ajuda a ler e compreender o programa). Bibliotecas são conjuntos de funções específicas para determinado fim. #include<stdio.h> #include<stdlib.h> O comando #include fará o compilador incluir, na posição atual dentro do arquivo fonte, o conteúdo do arquivo de cabeçalho que o usuário especificar entre os sinais de “menor que” e “maior que”. Os arquivos de extensão .h são arquivos de cabeçalho ( em cada arquivo cabeçalho, o compilador fornece definições para diferentes operações. JANSA, Kris Ph.D. 1999 . stdio.h- Possui definições relativas às operações de entrada/saída, como leitura de dados digitados no teclado e exibição de informações na tela do programa de computador. stdlib.h- funções envolvendo alocação de memória, controle de processos, conversões e outras. 31 A construção int main ( ) Define uma função denominada main. As instruções ou comandos no corpo da função main. Isto é, os comandos dentro das chaves {….} são executados um a um. Cada comando termina com um ponto e vírgula. Função é uma coleção de instruções de programação que realizam uma tarefa em particular. // declaração de variáveis float xa=0.0, ya=0.0, xb=0.0, yb=0.0; float ca=0.0, cb=0.0, yc=0.0, xd=0.0; float dy=0.0, dx=0.0; int i=0, n=0; Neste programa as variáveis foram declaradas em float. O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O tipo de uma variável especifica a espécie de valor (como um número inteiro ou de ponto flutuante, que ela pode armazenar bem como as operações que o programa pode efetuar com variável. (JAMSA Kris. Ph.D. 1999) Também houve variáveis declaradas em int. O tipo de dado int serve para armazenar números inteiros. printf("\n Quantas equacoes a resolver ?"); scanf("%d",&n); printf("\n Serao resolvidas %3d equacoes \n”,n); 32 A função printf é parte de um conjunto de funções pré definidas armazenadas em uma biblioteca padrão de rotinas da linguagem C++. O que está escrito no printf é impresso no terminal. 10printf: pergunta quantas equações serão resolvidas no programa. Essa variável é determinada pela letra n. 20 printf: responde a pergunta anterior (10printf) usando a máscara %3d para imprimir a variável scanf: lê o conteúdo da variável com representação decimal com sinal . %d é a máscara do número a ser digitado. A construção while(i<n) Ao encontrar o comando while, o programa primeiro testa a condição especificada. Se esta for verdadeira, programa executará os comandos do laço while. Após o último comando ser executado, o laço while testa novamente a condição. Se esta ainda for verdadeira, os comandos serão repetidos e o processo continuará. Quando a condição finalmente se tornar falsa, o laço terminará e seu programa continuará sua execução no primeiro comando que segue o laço. (JAMSA Kris. Ph.D. 1999) { printf("\n ===================================================\n"); printf("\n Digite xa, ya, xb, yb \n "); scanf("%f %f %f %f",&xa,&ya,&xb,&yb); dy=yb-ya; dx=xb-xa; 33 ca=dy/dx; cb=ya-ca*xa; yc=cb; xd=-cb/ca; Primeiro foi aberta a chave do programa while. 10printf: organização do trabalho. 20 printf: comando para digitar as variáveis “xa”, “ya”, “xb”, “yb” que são as coordenadas dos pontos A(xa,ya) e B(xb,yb) da reta. scanf : lê o conteúdo da variável com representação decimal com sinal . %f é a máscara do número a ser digitado. Cálculo das equações matemáticas. printf("\n ==================================================\n"); printf("\n A reta %3d e f(x)= %7.3f X + %7.3f \n",i,ca,cb); printf("\n ===================================================\n"); printf("\n intercepta y em (0,%7.3f) \n", yc); printf("\n intercepta x em (%7.3f,0) \n", xd); i++; } 10printf: organização do trabalho. 20printf: declara a função da reta. 34 30printf: organização do trabalho. 40printf: declara onde a reta intercepta o eixo y, ou seja, quando a abscissa é igual a zero. 50printf: declara onde a reta intercepta o eixo x, ou seja, quando a ordenada é igual a zero. i++ => até onde a função while vai se repetir; crescerá de um em um. }=> Chave que fecha o while. return 0; } fecha a chave da função principal int main. O comando return indica o fim da função main. Segundo problema: Equação de segundo grau /* O cabeçalho contém as informações básicas do programa. */ /* */ Estes caracteres abrem e fecham comentários. O que vem entre asterisco-barra e barra-asterisco é ignorado pelo compilador. // declaração das bibliotecas // As duas barras à esquerda significam comentário (uma mensagem que ajuda a ler e compreender o programa). Bibliotecas são conjuntos de funções específicas para determinado fim. 35 #include<stdio.h> #include<stdlib.h> #include<math.h> O comando #include fará o compilador incluir, na posição atual dentro do arquivo fonte, o conteúdo do arquivo de cabeçalho que o usuário especificar entre os sinais de “menor que” e “maior que”. Os arquivos de extensão .h são arquivos de cabeçalho ( em cada arquivo cabeçalho, o compilador fornece definições para diferentes operações. JANSA, Kris Ph.D. 1999 . stdio.h- Possui definições relativas às operações de entrada/saída, como leitura de dados digitados no teclado e exibição de informações na tela doprograma de computador. stdlib.h- funções envolvendo alocação de memória, controle de processos, conversões e outras. math.h- função que contém artifícios matemáticos. A construção int main ( ) Define uma função denominada main. As instruções ou comandos no corpo da função main. Isto é, os comandos dentro das chaves {….} são executados um a um. Cada comando termina com um ponto e vírgula. Função é uma coleção de instruções de programação que realizam uma tarefa em particular. // declaração de variáveis float a=0.0, b=0.0, c=0.0, d=0.0, X1=0.0, X2=0.0; 36 Neste programa as variáveis foram declaradas em float. O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O tipo de uma variável especifica a espécie de valor (como um número inteiro ou de ponto flutuante, que ela pode armazenar bem como as operações que o programa pode efetuar com variável. (JAMSA Kris. Ph.D. 1999). “a”, “b” e “c” são as variáveis da equação de 20 grau, “d” é o discriminante, “X1” e “X2” são as soluções da equação. //mensagem para o usuário Comentário para melhor compreensão do programa pelo usuário. printf("======================================================\n"); printf("\n digite os valores a, b e c=> \n"); scanf("%f %f %f",&a,&b,&c); d=b*b-4*a*c; 10printf : melhor organização do programa. 20printf :colocar os valores que você deseja usar em a,b e c. scanf : %f é a máscara do número a ser digitado. No caso serão, as máscaras dos números oferecidos no 20printf. d=b*b-4*a*c; Acima está a fórmula do discriminante que foi criada por Bhaskara onde “d” é igual a “b” ao quadrado menos 4 vezes “a” vezes “b”. //imprimir a, b, c Comentário para melhor compreensão do programa pelo usuário. 37 printf("\n=====================================================\n"); printf("\n a=%7.3f b=%7.3f c=%7.3f d=%7.3f \n",a,b,c,d); //julgando o valor de d Comentário para melhor compreensão do programa pelo usuário. 10printf: melhor organização do programa. 20printf: os valores dados para a, b ,c serão impressos. if(d>=0.0) O comando if normalmente faz um teste usando um operador relacional de C++ . Se o resultado for verdadeiro, o programa executa o comando e segue o if . Se o resultado for falso, programa ignora (pula) e o comando segue. (JAMSA Kris. Ph.D. 1999) ( a melhor tradução seria para todo). { X1=(-b+sqrt(d)/2.0*a); X2=(-b-sqrt(d)/2.0*a); printf("\n=====================================================\n"); printf("\n a=%7.3f b=%7.3f c=%7.3f d=%7.3f X1=%7.3f X2=%7.3f \n",a,b,c,d,X1,X2); Primeiro foi aberta a chave do programa if. Depois foram colocadas as equações que, quando resolvidas, dariam os valores de X1 e X2. 10printf: melhor organização do programa. 20printf: os valores dados para a, b, c, d, X1 e X2 são impressos. 38 } Fecha-se a chave do comando if. else Usa-se else para o resultado falso do comando if. (A melhor tradução seria quando não). { printf("\n======================================================"); printf("\n no momento esse programa ainda nao calcula \n"); printf("\n raizes imaginarias. Desculpe o transtorno \n"); 10printf: melhor organização do programa. 20printf: imprime no terminal que, quando o comando for não for executado, não será possível calcular. 30printf: imprime o porquê de não calcular. A razão é que o programa não calcula raízes imaginárias. } Fecha as chaves do else. return 0; } Fecha a chave da função principal int main. O comando return indica o fim da função main. 39 Terceiro problema: Área do triângulo /* O cabeçalho contém as informações básicas do programa. */ /* */ Estes caracteres abrem e fecham comentários. O que está entre asterisco-barra e barra-asterisco é ignorado pelo compilador. // declaração das bibliotecas // As duas barras à esquerda significam comentário (uma mensagem que ajuda a ler e compreender o programa). Bibliotecas são conjuntos de funções específicas para determinado fim. #include<stdio.h> #include<stdlib.h> O comando #include fará o compilador incluir, na posição atual dentro do arquivo fonte, o conteúdo do arquivo de cabeçalho que o usuário especificar entre os sinais de “menor que” e “maior que”. Os arquivos de extensão.h são arquivos de cabeçalho ( em cada arquivo cabeçalho, o compilador fornece definições para diferentes operações. JANSA, Kris Ph.D. 1999). stdio.h- Possui definições relativas às operações de entrada/saída, como leitura de dados digitados no teclado e exibição de informações na tela do programa de computador. stdlib.h- funções envolvendo alocação de memória, controle de processos, conversões e outras. 40 A construção int main ( ) Define uma função denominada main. As instruções ou comandos no corpo da função main, isto é, os comandos dentro das chaves {….} são executados um a um. Cada comando termina com um ponto e vírgula. Função é uma coleção de instruções de programação que realizam uma tarefa em particular. // declaração de variáveis float xa=0.0, xb=0.0, ya=0.0, yb=0.0, xc=0.0, yc=0.0; float det=0.0, area=0.0; int n=0, i=0; Neste programa as variáveis foram declaradas em float. O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O tipo de uma variável especifica a espécie de valor (como um número inteiro ou de ponto flutuante, que ela pode armazenar bem como as operações que o programa pode efetuar com variável. (JAMSA Kris. Ph.D. 1999) Também há variáveis declaradas em int. O tipo de dado int serve para armazenar números inteiros. Onde A(xa,ya), B(xb,yb) e C(xc,yc) são os pontos que formam os vértices do triangulo, det é igual a determinante da matriz formada pelos três pontos no eixo cartesiano, área é a área do triangulo, n é igual ao número de vezes em que a área será calculada, e i indica as repetições do comando for. printf("\n Quantas vezes voce quer calcular a area do triangulo=> \n"); scanf("%d",&n); 41 printf("\n A area sera calculada %7d vezes",n); 10printf : pergunta quantas vezes o usuário rodará o programa para calcular a área de determinado triângulo. 20printf : imprime quantas vezes o programa será utilizado. scanf : %f é a máscara do número a ser digitado. No caso serão as máscaras dos números oferecidos no 10printf. for(i=1;i<=n;i++) O laço for inicializa a variável conta como valor 1. O laço testa então se o valor de conta é menor ou igual a n. Em caso afirmativo, for executará o comando correspondente e depois incrementará i, repetindo o teste. Começa com chave aberta do laço for. { // mensagem 1 Comentário para melhor compreensão do programa pelo usuário printf("\n=====================================================\n"); printf("\n Digite os valores das coordenadas de xa,ya=> \n" ); scanf("%f %f",&xa,&ya); 10printf :melhor organização do programa 20printf :pergunta quais as coordenadas escolhidas para xa e ya. scanf :%f é a máscara do número a ser digitado No caso serão as máscaras dos números oferecidos no 20printf. 42 // mensagem 2 Comentário para melhor compreensão do programa pelo usuário printf("\n=====================================================\n"); printf("\n Digite os valores das coordenadas de xb,yb=> \n" ); scanf("%f %f",&xb,&yb); 10printf :melhor organização do programa 20printf :pergunta quais as coordenadas escolhidas para xb e yb. scanf : %f é a máscara do número a ser digitado.No caso serão as máscaras dos números oferecidos no 20printf. // mensagem 3 Comentário para melhor compreensão do programa pelo usuário printf("\n=====================================================\n"); printf("\n Digite os valores das coordenadas de xc,yc=> \n" ); scanf("%f %f",&xc,&yc); 10printf :melhor organização do programa 20printf: pergunta quais as coordenadas escolhidas para xc e yc. scanf : %f é a máscara do número a ser digitado. No caso serão as máscaras dos números oferecidos no 20printf. // Calculando o Determinante Comentário para melhor compreensão do programa pelo usuário 43 det= xa*yb+xc*ya+xb*yc-xc*yb-xa*yc-xb*ya; Calcula-se o determinante. if(det>0) O comando if normalmente faz um teste usando um operador relacional de C++ . Se o resultado for verdadeiro, o programa executa o comando e segue o if. Se o resultado for falso, o programa ignora (pula) e o comando segue. (JAMSA Kris. Ph.D. 1999) ( a melhor tradução seria para todo). Se o determinante for maior que zero para calcular a área do triangulo basta multiplicar seu resultado por 0.5. { area= det*0.5; printf("\n A area do triangulo eh %7.3f \n",area); 10printf :imprime a área do programa usando a mascara do resultado da equação acima onde área é determinante vezes 0.5. } Fecha as chaves do 10 if. if(det==0) O comando if normalmente faz um teste usando um operador relacional de C++ . Se o resultado for verdadeiro, o programa executa o comando e segue o if. Se o resultado for falso, programa ignora (pula) e o comando segue. (JAMSA Kris. Ph.D. 1999) ( a melhor tradução seria para todo). Se o determinante for zero os pontos são colineares logo não formam um triangulo e é impossível calcular. 44 { printf("\n Impossivel Calcular \n"); 10printf imprime que o resultado é impossível de ser calculado devido á condição do 20 if. } Fecha chaves do 20 if. if(det<0) O comando if normalmente faz um teste usando um operador relacional de C++ . Se o resultado for verdadeiro, o programa executa o comando e segue o if. Se o resultado for falso, programa ignora (pula) e o comando segue. (JAMSA Kris. Ph.D. 1999) ( a melhor tradução seria para todo). { area= (-1)*det*0.5; Quando a determinante for menor que zero basta multiplicar o resultado da área por (-1) já que não existe essa medida negativa. printf("\n A area do triangulo eh %7.3f \n",area); 10printf: imprime a área do programa usando a máscara do resultado da equação acima onde área é determinante vezes 0.5. } } Fecha as chaves dos comandos abertos 45 return 0; } Fecha a chave da função principal int main. O comando return indica o fim da função main. 46 CONCLUSÃO Com este trabalho, pôde-se analisar o uso de modelagem computacional para obtenção de soluções para problemas matemáticos simples. É possível perceber que o processo de modelagem através do uso do computador poderá tornar-se, ou melhor, já está sendo uma alternativa de grande potencialidade para várias áreas da educação e para o próprio uso nas profissões relacionadas às ciências exatas, como a matemática, a física, a química, a economia, a robótica, a engenharia, entre outras. A aprendizagem computacional e a criação de códigos-fonte para determinados fins são conhecimentos extremamente úteis para a área de engenharia. As atividades propostas durante o trabalho ajudaram os acadêmicos a desenvolver o raciocínio lógico matemático e de programação, a ter capacidade de construir programas de computador em C++, a entendê-los e a executá-los, percebendo-se assim maior proximidade com as novas tecnologias disponíveis no mundo atual e caracterizando também a inserção dos graduandos no meio operacional e técnico de computação. A matemática simples já conhecida e aprendida manualmente na escola pôde, então, ser desenvolvida e solucionada por meio de um novo método, doravante já conhecido pelos graduandos e, num futuro próximo, bastante utilizado e aprimorado pelos mesmos em suas carreiras profissionais. 47 REFERÊNCIAS BIBLIOGRÁFICAS MIRANDA, Danielle de. Área de um triângulo pela geometria analítica. Disponível em < http://www.mundoeducacao.com/matematica/area-um-triangulo-pela-geometria - analitica.htm >. Acesso em 13 de dez. de 2013. SILVA, Marcos Noé Pedro da. Equação reduzida da reta. Disponível em < http://www.mundoeducacao.com/matematica/equacao-reduzida-reta.htm>. Acesso em 13 de dez. de 2013. SO Matemática. Ensino médio. Função quadrática. Disponível em < http://www.somatematica.com.br/emedio/funcao2/funcao2.php>. Acesso em 13 de dez. de 2013. MATEMATICA Didática. Equação do segundo grau. Disponível em < http://www.matematicadidatica.com.br/EquacaoSegundoGrau.aspx#rodape>. Acesso em 13 de dez. de 2013. JAMSA, Kris. Aprendendo C++. 1.ed. Sao Paulo. Editora Makron books. 1999. p.10- 25. HORSTMANN, Cay. Conceitos de computação com o essencial de C++. 3. ed. Porto Alegre. Editora bookman. 2005. p. 21-42. CORMEN, Thomas H.;et al. Algoritmos. 2.ed. Rio de Janeiro. Editora Campus. 2002. p.3-7. SCHILDT, Herbert. Linguagem C guia do usuário. 1.ed. Sao Paulo. Editora Mcgraw- hill. 1986. p.1-20. UFMG. Curso de Linguagem em C. Disponível em <http://www.ead.cpdee.ufmg.br/cursos/C/c.html>. Acesso em out. e dez. de 2013.
Compartilhar