Escolar Documentos
Profissional Documentos
Cultura Documentos
16 de Dezembro de 2010
TRABPRATICO_VIGA CONTINUA_2010_2011
Índice
1. INTRODUÇÃO................................................................................................................ 2
2. OBJECTIVOS ................................................................................................................. 3
3. PRESSUPOSTOS .......................................................................................................... 4
4. ANÁLISE DO PROBLEMA ............................................................................................. 4
4.1. Objectivo ..................................................................................................................... 4
4.2. Input. ........................................................................................................................... 6
4.3. Algoritmo: .................................................................................................................... 7
5. PSEUDOCÓDIGO .......................................................................................................... 8
6. METODOLOGIA ........................................................................................................... 12
6.1. Quadro dos procedimentos ....................................................................................... 12
6.2. Continuação do quadro dos procedimentos (Parâmetros Actuais) ............................ 14
7. RESULTADOS E CONCLUSÕES ................................................................................ 14
8. MANUAL DE UTILIZAÇÃO ........................................................................................... 15
9. WEBGRAFIA............................................................................................................. 24
10. ANEXO1 ................................................................................................................ 25
10.1. Listagem do programa desenvolvido .................................................................. 25
12. ANEXO2 ................................................................................................................ 46
13. ANEXO3 ................................................................................................................ 48
14. ANEXO4 ................................................................................................................ 49
14.1. Identificação completa dos autores do trabalho.................................................. 49
TRABP_VCSAEC_18DEZ
Página 1 de 50
1. INTRODUÇÃO
Relativamente ao TGV, sabemos que este é constituído por carris soldados uns aos
outros, cada um com um comprimento elevado. Assim, consideramos que se comporta
como uma viga de comprimento infinito. O conjunto solo-balastro reage para cima apenas
naqueles pontos em que a viga desce, enquanto que não reage quando a viga se eleva.
Além disso, apresenta um comportamento elástico módulo (K), isto é, o modulo K varia em
função do tipo de solo em questão. O comportamento elástico está associado à viga, pois as
travessas afundam-se no balastro cada vez que passa um rodado, recuperando o seu
estado imediatamente depois.
TRABP_VCSAEC_18DEZ
Página 2 de 50
2. OBJECTIVOS
Nos dias de hoje o TGV tem sido alvo de grandes contestações no nosso país, por
isso, um dos nossos objectivos é estudar e calcular a sua alta velocidade e outras variaveis
que estão relacionadas com a mesma. O principal objectivo preside na elaboração de um
programa em Pascal, que tendo por base uma viga sobre apoio elástico contínuo, de
comprimento L, onde são conhecidas algumas variaveis:
Além disso, temos conhecimento que a viga sobre apoio elástico contínuo está sujeita a
uma carga P, aplicada à distância, que permite:
TRABP_VCSAEC_18DEZ
Página 3 de 50
3. PRESSUPOSTOS
4. ANÁLISE DO PROBLEMA
4.1. Objectivo: Elaborar um Programa em Pascal que, tendo por base uma viga sobre
apoio elástico contínuo, de comprimento L e onde são igualmente conhecidos:
b – Largura da viga;
K – Módulo do solo;
TRABP_VCSAEC_18DEZ
Página 4 de 50
E- Módulo de elasticidade;
MI – Momento de inércia da secção.
Além disso, sabemos que a viga está sujeita a uma carga P, aplicada a uma distância a.
Existem ainda mais variáveis de fácil identificação, tais como:
O cálculo da Flecha;
Os pontos onde a flecha é nula, isto é, os zeros;
Desenhar um gráfico, onde sejam visíveis os seus zeros (intersecção com o eixo
dos xx).
TRABP_VCSAEC_18DEZ
Página 5 de 50
TRABP_VCSAEC_18DEZ
Página 6 de 50
4.3. Algoritmo:
Se 0 ≤ x ≤ a
F(x)=
Se a < x ≤ L
TRABP_VCSAEC_18DEZ
Página 7 de 50
Restrições (C/):
b ≥ 0 (positivo);
P ≠ 0;
a ≥ 0 Ʌ a ≤ L;
x> a Ʌ x < L;
MI > 0;
NCP 0 < NCP < 50;
NSEQ > 0;
L > 2,5λ;
K > 0;
E > 0.
5. PSEUDOCÓDIGO
Pseudocódigo
TRABP_VCSAEC_18DEZ
Página 8 de 50
Inicio
TRABP_VCSAEC_18DEZ
Página 9 de 50
Calcular α
Escrever resultados
Calcular λ
Escrever resultados
Fim.
TRABP_VCSAEC_18DEZ
Página 11 de 50
6. METODOLOGIA
Parâmetros
Procedimento Variáveis
Acção Por
("Procedure") Locais Por Valor
Variável
Mostra alguns
tópicos que fazem
NomeT ____________ T ___________
parte do ecrã de
apresentação
São as coordenadas
que são utilizadas
no procedimento
Linhas Moldura. O utilizador ____________ Coluna,Linha,Simb __________
poderá ver a linha, a
coluna e o símbolo
utilizado.
Quando o utilizador
introduz a palavra-
Introduzir ____________ ____________ P
chave esta aparece
sob a forma de *
Cria uma moldura à
volta do ecrã de
apresentação e
todos os tópicos
Moldura estão separados por l T ____________
linhas e colunas.
Além disso, o
utilizador dispõe de
mais tópicos.
TRABP_VCSAEC_18DEZ
Página 12 de 50
Registo e validação
X, NSEQ, a, P,
IntDados_Carga de inputs através do Seccao, dx,MaiorA L
NCP
teclado
Beta,Alfa,a,P,xA,
XMedio,FxA,
Calculo dos pontos
Calculo_Zeros ____________
onde a flecha é nula xB,Erro,
FxMedio, i
MaxIteracoes
O tipo de driver
Graf gráfico é detectado H,G ____________ MaxPx,MaxPy
no inicio
Esc_X,Esc_Y,
MaxPx ,MaxPy, x,
Max_Y, Margem, i,
Grafico Desenha o gráfico Texto_X, ____________
soma_flecha,
NSEQ, L
Texto_soma_flecha
L,b,K,E,MI,x,P,a,
Guarda os
GuardarFicheiro Fich, i, j ____________
resultados
NEQ,NCP, SFx
L,b,K,E,MI,x,P,a,
Resultados Mostra os resultados Guardar, i ____________
NSEQ,NCP, SFx
Bloqueia o
programa, caso o
Bloquear utilizador tenha X,l ____________ ____________
errado três vezes a
palavra-chave.
Para aceder ao
Codigo,Password,
programa o
Palavrapass P1,P2,P3,P4,P5, ____________ ____________
utilizador precisa de
Aceder
uma palavra-chave
TRABP_VCSAEC_18DEZ
Página 13 de 50
Procedimento
Parâmetros Actuais
("Procedure")
Moldura
PalavraPass
Trabalho
IntDados_Viga L,b,K,E,MI,Alfa,Beta,Omega
IntDados_Carga L,x,NSEQ,a,P,NCP
Calculo_Flecha Beta,Alfa,a[j],x[i],P[j],L,Fx[i]
Calculo_Zeros Beta,Alfa,a[j],P[j],x[i],x[i+1],Erro,MaxIteracoes
Resultados L,b,K,E,MI,x,P,a,NSEQ,NCP,Soma_Flecha
Graf MaxPx,MaxPy
Grafico MaxPx,MaxPy,x,soma_flecha,NSEQ,L
7. RESULTADOS E CONCLUSÕES
TRABP_VCSAEC_18DEZ
Página 14 de 50
A uma carga está sempre associada uma distância, ou seja, à Carga1 (P1)
está associada a distância entre a origem e o ponto de aplicação (a1);
Na secção isolada, só podemos considerar uma secção. Então é de esperar
que esta não tenha gráfico, nem zeros;
Se a largura da viga (b) aumenta, o comprimento da viga (L) tem que ser
necessariamente menor. E o inverso também se verifica, logo o b e o L são
inversamente proporcionais;
Podemos também verificar que o se o Modulo do solo (K), o Momento de
Inércia da secção (MI) e o Módulo da Elasticidade aumentarem, o
comprimento da viga (L) também diminui;
Se a largura da viga (b) e/ou o Módulo do solo (K) aumentarem, a flecha
diminui;
O valor da carga (P) é directamente proporcional à flecha no ponto, logo se a
carga (P) aumenta, a flecha também irá aumentar;
Na prática se calcularmos as flechas introduzindo dois comprimentos
diferentes e o resto das constantes iguais, nomeadamente a distância da
carga à origem (a), as flechas vão-se anular nos mesmos pontos (zeros).
Tendo em conta que o maior comprimento introduzido tem mais zeros do que
o menor comprimento;
Para cada troço da viga, é necessário verificar se existe um zero. Então, se
F(xn)*F(xn+1)<0 ( o programa vai calcular o zero entre xn e xn+1);
8. MANUAL DE UTILIZAÇÃO
TRABP_VCSAEC_18DEZ
Página 15 de 50
O outro método está relacionado com o programa FPS, em que o utilizador tem que
possuir este programa no seu computador para poder abrir e executar programas em
Pascal. Então, o utilizador clica no ficheiro (TRABP_VCSAEC_18DEZ.pas) e, de
seguida, carrega na tecla F9 e o programa irá iniciar-se automaticamente.
TRABP_VCSAEC_18DEZ
Página 16 de 50
Após as três tentativas da introdução da palavra-chave errada, uma nova janela aparecerá
advertindo o utilizador para o facto de o programa estar bloqueado. Além disso, o utilizador
é ainda questionado se pretende abandonar o programa.
TRABP_VCSAEC_18DEZ
Página 17 de 50
De seguida, o utilizador é interrogado para introduzir os vários dados da viga, estes são
posteriormente registados e validados.
TRABP_VCSAEC_18DEZ
Página 18 de 50
Agora o utilizador deve introduzir o Número de Cargas Pontuais. As cargas pontuais estão
limitadas, isto é, NCP>0 e NCP<50. Então, se introduzirmos 2 cargas pontuais, depois o
utilizador tem que introduzir o valor da carga nº1 e da carga nº2. Os valores são registados e
validados.
TRABP_VCSAEC_18DEZ
Página 19 de 50
Como o utilizador escolheu 2 cargas pontuais, vão existir 2 distâncias entre a origem e o
ponto de aplicação da carga 1 e da carga 2 respectivamente. Os dados são registados e
validados. Depois, o utilizador tem que escolher a opção secção isolada ou secções
equidistantes.
TRABP_VCSAEC_18DEZ
Página 20 de 50
TRABP_VCSAEC_18DEZ
Página 21 de 50
É facultada ao utilizador a hipótese de guardar o ficheiro como ficheiro de texto (.txt). Caso
este diga que sim, é-lhe pedido o nome do ficheiro que guardará os resultados do
comprimento da viga, largura da viga, módulo do solo, módulo da elasticidade, momento de
TRABP_VCSAEC_18DEZ
Página 22 de 50
TRABP_VCSAEC_18DEZ
Página 23 de 50
9. WEBGRAFIA
TRABP_VCSAEC_18DEZ
Página 24 de 50
10. ANEXO1
program TRABP_VCSAEC_18DEZ;
uses CRT,Graph;
Const MaxSec=1000;
MaxCarga=50;
MaxIteracoes=5000;
Erro=10E-10;
label inicio;
label Trabalho;
label fim;
var Abandonar,seccao:char;
i,j,NCP,NSEQ,MaxPx,MaxPy:integer;
L,b,K,E,MI,Alfa,Beta,Omega,xA,xB,XMedio,FxA,FxB,FxMedio:Real;
P,A:Tab_Peso;
x,Fx,soma_flecha:Tab_Dist;
F:text;
Fich:String[20];
{******************************Nome,Data,Turma**********************************}
TRABP_VCSAEC_18DEZ
Página 25 de 50
Procedure NomeT(T:integer);
begin
textcolor(white);
Gotoxy(63,02); Write('Trabalho');
Gotoxy(59,03); write('Viga Sobre Apoio');
Gotoxy(58,04); write('Elástico Contínuo');
Gotoxy(58,11); Write('Engenharia Civil');
Gotoxy(59,17); Write('18 - 12 - 2010');
Gotoxy(61,14); Write('Turma 12D');
textcolor(T);
End;
{**************************moldura*********************************************}
procedure Linhas(Coluna,Linha,Simb:integer);
begin
gotoxy(Coluna,Linha);
write(char(Simb))
end;
{*****************************Introduzir Password******************************}
Procedure Introduzir(var P:char);
begin
P:=readkey;
P:=upcase(P);
Textcolor(white);
write('*');
End;
TRABP_VCSAEC_18DEZ
Página 26 de 50
{******************************moldura,nome,nº aluno************************************}
procedure Moldura(T:integer);
var l:integer;
begin
NomeT(lightblue);
textbackground(black);
gotoxy(50,07);
writeln(' ');
gotoxy(23,02);
textcolor(lightred);
writeln('ISEL');
gotoxy(04,04);
writeln('Instituto Superior de Engenharia de Lisboa');
Gotoxy(03,11);
textcolor(yellow);
Write('Trabalho realizado por:');
TRABP_VCSAEC_18DEZ
Página 27 de 50
TextColor(13);
gotoxy(03,16);
Writeln('Linda Serranheira, nº 36600');
gotoxy(03,14);
writeln('Barbara Meyrelles, nº 36508');
gotoxy(03,15);
writeln('Margarida Mendes, nº 36510');
textcolor(white);
textbackground(red);
gotoxy(28,06);
writeln('Informática e Programação');
gotoxy(15,08);
writeln('Docentes: Eng. Armando Martins e Eng. Paulo Mateus');
End;
{************************************Falha************************************}
procedure Falha(mensagem:string);
begin
textcolor(blink);
writeln('Valor incorrecto repita sff ');
textcolor(lightred);
writeln(mensagem);
Textcolor(white);
writeln;
end;
TRABP_VCSAEC_18DEZ
Página 28 de 50
{*********************************Momento Inercia*******************************}
repeat
write('Introduzir o valor do Momento de Inércia (MI) ');
readln(MI);
if MI<=0 then Falha('MI > 0');
until MI>0;
writeln;
{*******************************Largura*****************************************}
repeat
write('Introduzir a Largura da Viga (b-> metros) ');
readln(b);
if b<=0 then Falha('comprimento > 0');
until b>0;
writeln;
{*********************************Modulo Inercia********************************}
repeat
write('Introduzir Módulo da Elasticidade (E) ');
readln(E);
if E<=0 then Falha('M. Elasticidade > 0');
until E>0;
writeln;
TRABP_VCSAEC_18DEZ
Página 29 de 50
{******************************Modulo do Solo***********************************}
repeat
write('Introduzir Módulo do Solo (K) ');
readln(K);
if K<=0 then Falha('M. Solo > 0');
until K>0;
writeln;
{***************************Alfa,Lambda,Sigma,Omega*****************************}
Beta:=k*b;
Omega:=Beta/(4*E*MI);
Alfa:=exp(0.25*ln(Omega));
Lambda:=2*Pi/Alfa;
Sigma:=Lambda*2.5;
repeat
write('Introduzir o Comprimento da Viga ( Valor superior a ',Sigma:5:3,' Metros (L))
');
readln(L);
if L<Sigma then Falha('');
until L>Sigma;
end;
{******************************Dados Carga**************************************}
Procedure IntDados_Carga(L:real;Var x:Tab_Dist;Var NSEQ:integer;Var a, P:Tab_Peso;
var NCP:integer);
Var dx,MaiorA:real;
begin
textcolor(lightgreen);
gotoxy(10,01);writeln('--> Introduzir os dados das Cargas');
TRABP_VCSAEC_18DEZ
Página 30 de 50
writeln;
textcolor(white);
{**************************Nº Cargas Pontuais*************************************}
writeln('Número de Cargas Pontuais - NCP');
writeln;
writeln;
repeat
write('Introduzir o Número de Cargas ');
readln(NCP);
if NCP<=0 then Falha('Nº de Cargas > 0');
if NCP>MaxCarga then Falha('Nº cargas < 50');
until (NCP<MaxCarga) and (NCP>0);
end;
{****************************Distancia origem-ponto*****************************}
clrscr;
textcolor(lightgreen);
gotoxy(10,01);writeln('--> Introduzir os dados das Cargas');
writeln;
TRABP_VCSAEC_18DEZ
Página 31 de 50
writeln;
textcolor(white);
writeln('Distância entre a origem e o Ponto de Aplicação - A');
repeat
write('Introduzir a Distância entre a Origem e o Ponto de Aplicação
da Carga 1 (Metros) ');
readln(a[1]);
if a[1]>=L then Falha('Distância < Comprimento da Viga');
until (a[1]<=L) and (a[1]>=0);
writeln;
end;
if NCP>1 then
for i:=1 to NCP do
repeat
write('Introduzir a Distância entre a Origem e o Ponto de
Aplicaçãoo da Carga ',i,' (A < ',L:5:3,' m) ');
readln(a[i]);
if (a[i]>L) or (A[i]<0)
then Falha('Distância < Comprimento da Viga');
writeln;
until (a[i]<=L) and (a[i]>=0);
TRABP_VCSAEC_18DEZ
Página 32 de 50
MaiorA:=a[1];
for i:=2 to NSEQ do
if a[i]>MaiorA then MaiorA:=a[i];
repeat
writeln('Secção Isolada? (Prima I) ou Secções Equidistantes? (Prima E) ');
Seccao:=Readkey;
Seccao:=upcase(Seccao);
until Seccao in ['I','E'];
writeln;
if Seccao='I' then begin
repeat
write('Secção isolada: Onde? (0 < X < L) ');
readln(x[0]);
if (x[0]<0) or (x[0]>L) then Falha('');
until (x[0]>0) and (x[0]<L);
end;
TRABP_VCSAEC_18DEZ
Página 33 de 50
readln(NSEQ);
if NSEQ<0 then Falha('Nº de seccoes > 0');
if NSEQ>MaxSec then Falha('Nº de Seccoes < 1000');
if NSEQ>0 then begin
for i:=1 to NSEQ do begin
dx:=L/NSEQ;
x[i]:=i*dx;
end;
end;
until (NSEQ>0) and (NSEQ<MaxSec);
end;
end;
{*******************************Calculo da Flecha*********************************}
procedure Calculo_Flecha(Beta,Alfa,a,x,P,L:real;var Fx:real);
var D,E1,E2:real;
begin
D:=P*Alfa/(2*Beta);
E1:=Alfa*(a-x);
E2:=Alfa*(x-a);
end;
TRABP_VCSAEC_18DEZ
Página 34 de 50
Procedure Calculo_Zeros(Beta,Alfa,a,P,xA,xB,Erro:real;MaxIteracoes:integer);
var XMedio:real;
FxA,FxMedio:real;
i:integer;
begin
i:=1;
repeat
XMedio:=(xA+xB)/2;
Calculo_Flecha(Beta,Alfa,a,xA,P,L,FxA);
Calculo_Flecha(Beta,Alfa,a,XMedio,P,L,FxMedio);
If (FxA*FxMedio<0) then xB:=XMedio
else xA:=XMedio;
i:=i+1;
{****************************Gráfico******************************************}
Procedure Graf(var MaxPx,MaxPy:Integer);
var H,G:Smallint;
begin
G:=Detect;
InitGraph(G,H,' ');
SetBkColor(white);
MaxPX:=GetMaxX;
MaxPY:=GetMaxY;
TRABP_VCSAEC_18DEZ
Página 35 de 50
end;
Procedure Grafico(MaxPx,MaxPy:Integer;x,soma_flecha:Tab_Dist;NSEQ:Integer;L:Real);
var Esc_X,Esc_Y:Real;
Max_Y:Real;
Margem:Integer;
i:Integer;
Texto_X:String;
begin
Margem:=Round(0.04*MaxPx);
SetColor(green);
SETTEXTSTYLE(3,0,5);
SETTEXTJUSTIFY(1,1);
SetColor(Green);
OUTTEXTXY((MaxPx div 2),Margem,'Diagrama de Flechas');
Max_Y:=soma_flecha[1];
for i:=1 to NSEQ do
if soma_flecha[i]>Max_Y then MAx_Y:=soma_flecha[i];
Esc_X:=(MaxPx-2*Margem)/L;
Esc_Y:=(MaxPy-2*Margem)/Max_Y;
TRABP_VCSAEC_18DEZ
Página 36 de 50
SetColor(White);
for i:=0 to NSEQ
do Line(Margem + round(Esc_X*x[i]),(MaxPy div 2)-10,
Margem + Round(Esc_X*x[i]),(MaxPy div 2)+10);
SetColor(magenta);
MOVETO(Margem,(MaxPy div 2)+round(Esc_Y/2*soma_flecha[0]));
for i:=1 to NSEQ do LINETO(Margem+Round(Esc_X*x[i]),(MaxPy div
2)+Round(Esc_Y/2*soma_flecha[i]));
SETTEXTSTYLE(2,1,1);
SETTEXTJUSTIFY(1,0);
SetColor(Yellow);
for i:=0 to NSEQ do
begin
Str(X[i]:6:2,Texto_X);
OUTTEXTXY(Margem + Round(Esc_X*x[i]),(MaxPy div 2)-10,Texto_X);
end;
SetColor(white);
for i:=0 to NSEQ do Circle(Margem + Round(Esc_X*x[i]),
(MaxPy div 2)+Round(Esc_Y/2*soma_flecha[i]),4);
end;
{****************************Guardar Resultados********************************}
Procedure GuardarFicheiro(L,b,K,E,MI:real;x:Tab_Dist;P,a:Tab_Peso;
TRABP_VCSAEC_18DEZ
Página 37 de 50
NSEQ,NCP:integer;SFx:Tab_Dist);
var i,J:Integer;
begin
Write('Qual o nome do ficheiro? ');
Readln(Fich);
Assign(F,Fich+'.txt');
rewrite(F);
clrscr;
textcolor(black);
writeln(F,'Comprimento da Viga= ',L:8:3);
writeln(F,'Largura da Viga= ',b:8:3);
writeln(F,'Módulo do Solo= ',K:8:3);
writeln(F,'Módulo da Elasticidade= ',E:8:3);
writeln(F,'Momento de Inérrcia= ',MI:8:3);
writeln(F,'Número de secções equidistantes = ',NSEQ);
writeln(F,'Número de cargas pontuais = ',NCP);
TRABP_VCSAEC_18DEZ
Página 38 de 50
Readln;
textcolor(white)
end;
{*********************************Guardar Zeros********************************}
{
Procedure Calculo_ZerosFich(Beta,Alfa,a,P,xA,xB,Erro:real;MaxIteracoes:integer; var
Fich:string[20]);
var XMedio:real;
i:integer;
FxA,FxMedio:real;
begin
Assign(F,Fich+'.txt');
i:=1;
repeat
XMedio:=(xA+xB)/2;
Calculo_Flecha(Beta,Alfa,a,xA,P,L,FxA);
Calculo_Flecha(Beta,Alfa,a,XMedio,P,L,FxMedio);
If (FxA*FxMedio<0) then xB:=XMedio
else xA:=XMedio;
i:=i+1;
TRABP_VCSAEC_18DEZ
Página 39 de 50
Writeln(F,'Zeros da Funcao:');
writeln(F,' Zero = ',XMedio:8:4,' Fx = ',FxMedio:12:10);
close(F);
writeln;
writeln('Nome do ficheiro: ',Fich,'.txt');
Writeln('Ficheiro gravado.');
Readln;
textcolor(white)
end;
}
{********************************Mostrar Resultados****************************}
Procedure Resultados(L,b,K,E,MI:real;x:Tab_Dist;P,a:Tab_Peso;
NSEQ,NCP:integer;SFx:Tab_Dist);
var Guardar:char;
i:integer;
begin
clrscr;
textcolor(yellow);
writeln('Comprimento da Viga= ',L:8:3);
writeln('Largura da Viga= ',b:8:3);
writeln('Módulo do Solo= ',K:8:3);
writeln('Módulo da Elasticidade= ',E:8:3);
writeln('Momento de Inércia= ',MI:8:3);
writeln('Número de secções equidistantes = ',NSEQ);
writeln('Número de cargas pontuais = ',NCP);
TRABP_VCSAEC_18DEZ
Página 40 de 50
writeln;
writeln;
Readln;
textcolor(white);
Readln;
end;
repeat
writeln;
writeln('Pretende guardar os resultados? (S/N)');
Guardar:=readkey;
Guardar:=UpCase(Guardar);
until Guardar in ['S','N'];
TRABP_VCSAEC_18DEZ
Página 41 de 50
end;
end;
{*************************Password Incorrecta**********************************}
Procedure Bloquear;
var X,l:integer;
begin
X:=1;
While X=1 Do begin
TextColor(white);
clrscr;
for l:=1 to 77 do Linhas(l+1,10,205);
for l:=1 to 77 do Linhas(l+1,14,205);
for l:=10 to 12 do Linhas(01,l+1,186);
for l:=10 to 12 do Linhas(79,l+1,186);
Linhas(01,10,201);
Linhas(01,14,200);
Linhas(79,10,187);
Linhas(79,14,188);
end;
End;
{***********************Aceder ao programa*************************************}
Procedure PalavraPass;
var Codigo,Password:string[5];
P1,P2,P3,P4,P5:char;
Aceder:integer;
TRABP_VCSAEC_18DEZ
Página 42 de 50
begin
Codigo:='CIVIL';
Aceder:=1;
repeat
textbackground(lightblue);
textcolor(yellow);
Gotoxy(04,22); Write(' ':45);
Gotoxy(04,22); write(Aceder,' Tentativa, Introduzir Password -> ');
Password:=P1+P2+P3+P4+P5;
Aceder:=Aceder+1
until (Codigo=Password) or (Aceder=4);
end;
{******************************Bloco Principal*********************************}
begin
repeat
inicio:clrscr;
Moldura(black);
Palavrapass;
Trabalho:clrscr;
TRABP_VCSAEC_18DEZ
Página 43 de 50
IntDados_Viga(L,b,K,E,MI,Alfa,Beta,Omega);
clrscr;
IntDados_Carga(L,x,NSEQ,a,P,NCP);
TRABP_VCSAEC_18DEZ
Página 44 de 50
if Fx[i]*Fx[i+1]<0 then
Calculo_Zeros(Beta,Alfa,a[j],P[j],x[i],x[i+1],Erro,MaxIteracoes);
Readln;
end; end;
Resultados(L,b,K,E,MI,x,P,a,NSEQ,NCP,Soma_Flecha);
Graf(MaxPx,MaxPy);
Grafico(MaxPx,MaxPy,x,soma_flecha,NSEQ,L);
readln;
CloseGraph;
end;
repeat
writeln('Deseja repetir o programa? (S/N)');
abandonar:=readkey;
abandonar:=upcase(abandonar);
until abandonar in ['S','N'];
textbackground(black)
until abandonar='N';
fim:clrscr;
end.
TRABP_VCSAEC_18DEZ
Página 45 de 50
12. ANEXO2
Cálculo da flecha
Escrever resultados
Escrever resultados
Escrever resultados
Guardar em ficheiro os valores obtidos no cálculo da flecha e os pontos onde a flecha é nula
(zeros)
TRABP_VCSAEC_18DEZ
Página 46 de 50
O gráfico é desenhado
TRABP_VCSAEC_18DEZ
Página 47 de 50
13. ANEXO3
TRABP_VCSAEC_18DEZ
Página 48 de 50
14. ANEXO4
Linda
36600 36600@alunos.isel.pt
Sousa 915244528
Serranheira
Bárbara da
36508 Costa Leite 36508@alunos.isel.pt 963610111
Meyrelles
Margarida
Filipa
36510 36510@alunos.isel.pt 969889336
Esteves
Mendes
TRABP_VCSAEC_18DEZ
Página 49 de 50