Baixe ED Programação e outras Trabalhos em PDF para Mecatrônica, somente na Docsity!
Disciplina: Programação para Engenharia Turma: 2ENB
Professor-Orientador: De Vitto
Estudo Dirigido de Programação para Engenharia
1. Índice
Estudo Dirigido de Programação para Engenharia
- Índice..................................................................................................................................................... Conteúdo
- Introdução....................................................................................................................................................
- Informações de Suporte............................................................................................................................
- Funções auxiliares.....................................................................................................................................
- 4.1. Procedure “janela”..................................................................................................................................
- 4.2. Procedure “invalido”...............................................................................................................................
- 4.3. Procedure “fim”.......................................................................................................................................
- Resolução dos problemas propostos......................................................................................................
- 5.1. Definição do escopo...............................................................................................................................
- 5.2. Fatorial.....................................................................................................................................................
- 5.3. Exponencial.............................................................................................................................................
- 5.4. Equação do segundo grau....................................................................................................................
- 5.5. Texto por extenso...................................................................................................................................
- 5.6. Restrições................................................................................................................................................
- Apêndices....................................................................................................................................................
- 6.1. Fluxogramas do Programa...................................................................................................................
- 6.1.1. Menu.................................................................................................................................................
- 6.1.2. Janela................................................................................................................................................
- 6.1.3. Fatorial..............................................................................................................................................
- 6.1.4. Exponencial......................................................................................................................................
- 6.1.5. Baskara...........................................................................................................................................
- 6.1.6. Numero_por_extenso...................................................................................................................
- 6.1.7. Fim...................................................................................................................................................
- 6.1.8. Programa Principal.......................................................................................................................
- 6.2. Listagem do Programa........................................................................................................................
- Bibliografia.................................................................................................................................................
4. Funções auxiliares
Com o intuito de melhorar a interface com o usuário ( visualização do programa ), facilitar
a compreensão e, até mesmo, simplificar o código fonte evitando repetições
desnecessárias, o programa foi estruturado em “procedures” e “functions”, parametrizáveis.
A seguir, um breve resumo sobre algumas destas funções.
4.1. Procedure “janela”
Este procedimento “desenha” um quadrado com borda para destacar a área onde as
informações aparecerão na tela. Abaixo e na parte inferior, traça uma região em cor mais
neutra, caracterizando um tipo de sombra da área em destaque.
A fim de flexibilizar a utilização deste procedure , são enviados parâmetros de posição e
tamanho da janela, cor de texto e de fundo. Portando o formato fica conforme abaixo:
janela(X,Y,Lx,Ly,CT,CF);
“X” e “Y” definem a posição do “canto” superior esquerdo da janela;
“Lx” e “Ly” são os tamanhos ( largura e altura );
“CT” é a cor do texto;
“CF” é a cor do fundo.
São criados “loop´s” “contando“ de X a (X+Lx) e de Y a (Y+Ly), em cada posição das
bordas da janela formada, é inserido um símbolo que acaba por desenhar um retângulo em
torno da janela, nas demais posições, são colocados <espaços>.
4.2. Procedure “invalido”
Este procedimento exibe por alguns instantes uma pequena janela com a informação de
entrada inválida, para que o usuário saiba que tenha que inserir um novo dado.
4.3. Procedure “fim”
Para encerrar adequadamente o programa, fazer os devidos agradecimentos, mostrar o
nome do Professor responsável e os componentes do grupo com os respectivos RA´s, este
procedure cria uma janela e aguarda que seja pressionada uma tecla, para então finalizar
o programa.
Estudo Dirigido de Programação para Engenharia
4 Turma 2ENB
5. Resolução dos problemas propostos
5.1. Definição do escopo
Elaborar quatro programas com seleção através de um menu pricipal para a resolução dos
problemas propostos abaixo:
- Cálculo do fatorial de um número;
- Calculo do valor de uma função expoente;
- Cálculo das raízes reais de um função do segundo grau, através do método de
Báskara;
- Conversão de um número de até quatro dígitos em um texto com o valor por
extenso.
5.2. Fatorial
A operação matemática fatorial representa a multiplicação de todos os números de 1 até o
número desejado, desta forma o fatorial de um número inteiro qualquer “N”, é representado
por ”N!” e vale:
N! = 1 * 2 * 3 * 4 * ... * N
Desta forma o fatorial de 3, é => 3! = 123 = 6.
Portanto para se calcular em um programa, o fatorial de N, podemos prceder de duas
maneiras:
- Realizar um loop, multiplicando o contador pelo resultado anterioir;
- De forma recursiva, onde N! = N*(N-1)! Até que N-1 seja igual a “1” ( sem a
utilização de um laço formal )
Optou-se pela função recursiva ( a função chama ela própria ).É necessário passar como
argumento para a função, o número que se deseja calcular o fatorial.
5.3. Exponencial
A operação matemática exponenciação consiste na multiplicação sucessiva de fatores
iguais, onde o fator é denominado “base” (X) e a quantidade de multiplicações realizadas é
determinada pelo expoente (Y):
X Y^ = X * X * X ... X ( Y vezes )
Desta forma o fatorial de 3^4 é = 3333 = 81 ( ou seja 33, 4 vezes)
Portanto para se calcular em um programa, esta operação, podemos prceder de duas
maneiras:
- Realizar um loop definido pelo expoente, multiplicando a base por ela mesma;
Estudo Dirigido de Programação para Engenharia
5 Turma 2ENB
X1 = X2 = -4 / 4 = -
5.5. Texto por extenso
O programa não possui formulas ou cálculos significativos no algoritmo, porém a resolução
é interessante ( didaticamente falando ) pois utiliza estruturas de decisões, trabalha com
variáveis tipo string, e concatenação de texto.
O número digitado pelo usuário, deve ser “quebrado” em cada dígito que o compõe, em
seguida, cada número “assume” um referência em “texto” de acordo com a posição relativa
deste dígito, ou seja, ( centena, dezena, unidade, etc. )
5.6. Restrições
Cada programa apresentado possui limitações, para se “prever” todas possíveis entradas
e solucionar possíveis conflitos, o programa ficaria muito extenso, fugindo ao objetivo do
curso.
O Programa para cálculo do Fatorial de um número, foi desenvolvido com com uma
variável tipo “integer”, porém esse cálculo assume valores muito altos, o fatorial de 32, por
exemplo, já excede a capacidade de armazenamento de variáveis tipo “integer”.
A conversão de número em “texto” foi limitada a um número de quatro dígitos, acima disto
bastaria continuar seqüenciando as conversões.
No cálculo de raízes em equações do segundo grau, adotou-se que o domínio seria o
conjunto dos números reais, portanto raízes complexas, não são calculadas.
Estudo Dirigido de Programação para Engenharia
7 Turma 2ENB
6. Apêndices
6.1. Fluxogramas do Programa
Estudo Dirigido de Programação para Engenharia
8 Turma 2ENB
6.1.6. Numero_por_extenso
6.1.7. Fim 6.1.8. Programa Principal
SSSSS
else fat:=1; end;
//********** Cálculo do fatorial de um número através de uma função recursiva ********** procedure fatorial ; var n:integer;
begin repeat textbackground(BLACK);clrscr; janela(1,1,68,9,WHITE,BLUE); gotoxy(4,4); write('Entre com o número inteiro e positivo menor que 31: '); read(n); if n<0 then begin gotoxy(4,7); write('Entre com um numero maior que zero!'); delay(1500); end else if n>=31 then begin gotoxy(4,7); write('Este calculo provocaria um estouro de memória, tente um menor'); delay(2000); end; until (n>0) and (n<31); gotoxy(4,7); write('O fatorial de ',n,' é ',fat(n)); gotoxy(40,8); write('Tecle algo para continuar'); readkey; end;
//********** Exponenciação ********** procedure exponencia; Var expo,base:integer;
Function expoente(expo,base:integer):integer; begin if expo>1 then expoente:=base*expoente(expo-1,base) else expoente:=base; end;
begin textbackground(BLACK);clrscr; janela(1,1,50,13,WHITE,BLUE); gotoxy(4,4); write('Entre com a base '); read(base); gotoxy(4,6); write('Entre com o expoente '); read(expo); gotoxy(4,9); write(base,' elevado a ',expo,' é igual a ',expoente(expo,base)); gotoxy(25,12); write('Tecle algo para continuar'); readkey; end;
//********** Cálculo das raízes reais da equação do segundo grau ********** procedure Baskara ; var a,b,c: integer; delta: real; x1,x2: real;
begin textbackground(BLACK);clrscr; janela(1,1,62,15,WHITE,BLUE); gotoxy(4,4); write('Entre com os valores para a expressão y = ax2 + bx + c:'); gotoxy(4,6); write('a = ');
read(a); gotoxy(13,6); write('b = '); read(b); gotoxy(23,6); write('c = '); read(c); delta:=bb-4ac; // Calcula o valor do delta gotoxy(4,8); write('O discriminante delta vale ',delta:6:2); gotoxy(4,10); write('A equação y= ',a,'x2 '); if b>=0 then write('+ '); write(b,'x '); if c>=0 then write('+ '); write( c); if delta<0 then write(' não possui raízes reais') else if delta=0 then begin write(' possui duas raízes reais iguais'); gotoxy(4,12); write('x1 = x2 = ',(-b+sqrt(delta))/(2a)); end else begin x1:= (-b+sqrt(delta))/(2a); x2:= (-b-sqrt(delta))/(2a); write(' possui duas raízes reais distintas'); gotoxy(4,12); write('x1 = ',x1); gotoxy(25,12); write('x2 = ',x2); end; gotoxy(37,14); write('Tecle algo para continuar'); readkey; end;
//********** Escrever por extenso um numero positivo com 4 digitos ********** procedure numero_por_extenso;
var n,u,d,c,m:integer; //Declaração das variáveis inteiras nu,un,de,ce,mi:string; //Declaração das variáveis de texto ok:boolean; //Declaração da variável lógica que valida o número digitado
Begin repeat // Valida o numero entrado para ser escrito por extenso textbackground(BLACK);clrscr; janela(1,1,68,12,WHITE,BLUE); gotoxy(4,4); write('Digite um numero positivo com ate 4 digitos: '); readln(n); if (n>9999) or (n<0) then ok:=FALSE else ok:=TRUE; // Verifica se o número está na faixa indicada if ok=FALSE then invalido; until ok=TRUE; m:=n DIV 1000; // Encontra o numero de milhares c:=(n-(m1000)) DIV 100; // Calcula as centenas d:=(n-(m1000+c100)) DIV 10; // Encontra as dezenas u:=n-(m1000+c100+d10); // Determina as unidades case u of // Define o texto das unidades 1: un:='um'; 2: un:='dois'; 3: un:='tres'; 4: un:='quatro'; 5: un:='cinco'; 6: un:='seis'; 7: un:='sete'; 8: un:='oito'; 9: un:='nove'; else un:=''; end; case d of // Define o texto das dezenas 1: de:='dez'; 2: de:='vinte'; 3: de:='trinta';
gotoxy(5,17); write(''); gotoxy(5,20); write(''); readkey; end;
//********** Programa principal ********** Begin repeat textbackground(BLACK); clrscr; menu; gotoxy(4,4); write('Digite a opção desejada: '); read(op); case op of 1: fatorial; 2: exponencia; 3: baskara; 4: numero_por_extenso; 5: fim; else invalido; end; until op=5; End.
7. Bibliografia
IEEE Std 830-1993 – Recommended Preactice for Software Requirements Specifications
“Modelo para documento de especificação de Software”
Prof. Dr. Juliano Lopes Oliveira
Arquivo de ajuda do software PascalZIM “ZIM.HLP”
http://pt.wikipedia.org/wiki/Pascal_(linguagem_de_programa%C3%A7%C3%A3o)
http://jaircorp.wordpress.com/2007/12/11/131/
http://pt.wikipedia.org/wiki/Bhaskara_I