Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

ED Programação, Trabalhos de Mecatrônica

Trabalho de programação com fluxograma, descrição e programa com menu e funções auxiliares.

Tipologia: Trabalhos

2011

Compartilhado em 31/01/2011

marcos-gonzaga-5
marcos-gonzaga-5 🇧🇷

4 documentos

1 / 17

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Disciplina: Programação para Engenharia Turma: 2ENB
Professor-Orientador: De Vitto
Estudo Dirigido de Programação para Engenharia
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

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

    1. Índice..................................................................................................................................................... Conteúdo
    1. Introdução....................................................................................................................................................
    1. Informações de Suporte............................................................................................................................
    1. Funções auxiliares.....................................................................................................................................
    • 4.1. Procedure “janela”..................................................................................................................................
    • 4.2. Procedure “invalido”...............................................................................................................................
    • 4.3. Procedure “fim”.......................................................................................................................................
    1. 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................................................................................................................................................
    1. 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........................................................................................................................
    1. 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