1.º passos na programação

[_Silence_] disse:
Tb ando numa de "aprender por si mesmo", e vou começar a ler uns tutorials de Pascal.
Para kem pouco ou nada percebe de programação fiz bem em escolher Pascal? De ferramentas apenas preciso dum compilador?

Um compilador e uns tutoriais e estás pronto a trabalhar....
 
Ya faz isso....usa o primeiro compilador, porque apesar do 2º ser da bloodshed e ser em ambiente windows, o primeiro é em ambiente DOS mas com funcionalidades Windows...De qualquer forma, faz download dos dois e escolhe o que te adapatares melhor

Cumps
 
Ontem e hoje andei a dar uma voltinha em tutorials de Pascal, e fikeime por um com bastantes exercicios. Um deles era este:

"4) Try to write a simple program that will solve the quadratic equation:
A*X^2+B*X+C=0. The program should accept the A,B and C values with the
types of 'Real' and give the two X values by using the well-known ABC
formula. Extend the program in such a way it will print out where the
maximum or minimum value is like 'Max(X=....)=....' or 'Min(X=....)=....'
with the correct values placed on the positions of the dots. You might use
the 'Sqrt' function for this. Look at the help-pages to get the information
of this 'Sqrt' function.
Try to make the program 'neat' and produce clear output to the user if
wrong input is given and hints on what kind of input is expected. Also make
use of comments and indents throughout the complete code...
Try the following input after your program is finished and watch carefully
what your program does:
A=1, B=2, C=3
A=0, B=3, C=8
A=-1, B=0, C=7"


Após ler e pensar uma beka saiume este código (n se riam poix nunca tokei em nada de programação :P)

Program FormulaResolvente;
var
A : real;
B : real;
C : real;
D : real; {o k ta dentro da raiz kuadrada da formula resolvente}
X : real; {coordenada X do vertice}
raiz1 : real;
raiz2 : real;

Begin

writeln( 'Introduz o valor de A:' );
readln( A );
writeln( 'Introduz o valor de B:' );
readln( B );
writeln( 'Introduz o valor de C:' );
readln( C );
d:= (b*b)-(4*a*c);
if d < 0 then
writeln('Raizes de nºs negativos nao existem :P')
else
raiz1:= (-b+sqrt(d))/(2*a);
raiz2:= (-b-sqrt(d))/(2*a);
BEGIN
writeln('1ª Raiz = ',raiz1);
writeln('2ª Raiz = ',raiz2);
END;
X:= (raiz1+raiz2)/2;
Begin
writeln('Coordenada X do vertice : ',X);
writeln('Coordenada Y do vertice : ',(A*sqr(x))+(B*X)+C);
end;
end.

Serve para resolver equações de 2º grau com a formula resolvente e diz-nos onde tá o vértice da parábola.

Exprimentem e digam-me os erros k tem sff (devem ser mts :S), e se alg souber como meter os resultados sem ser em notação cientifica tb era fixe =)

EDIT: Código alterado, o único erro k n consigo resolver é o cálculo da coordenada Y do vértice. A fórmula parece correcta, mas dáme um resultado errado =(

EDIT2: Axei o erro, tinha o A repetido na ultima expressão e n tinha lá o C :S K axam do prog pa kem nunca fez isto e só leu uns tutorials? :P

EDIT99999: Kuando as raizes dão negativas ele "diz" a msg k eu lá meti, mas dá um runtime error, o k será?
 
Última edição:
Ng sabe ajudar na cena do "runtime error"?

Btw agora no tutorial eles dão este exemplo:

Program Example3;
Uses DOS; { use DOS unit for timing... }
Const TestTimes = 100000;
Var LoopVar : Byte; { ***** }
TimedRecursion : Real;
TimedLoop : Real;
TemporaryTime : Array[ 1 .. 4 ] Of Word;
{ - - - - - - - - - - - - - ALL FUNCTIONS - - - - - - - - - - - }
{ Calculates the faculty of Nr through a loop method... }
Function FacultyLoop( Nr : Byte ) : Real;
Var LoopVar : Byte;
Faculty : Real;
Begin
Faculty := 1.0; { calculate the faculty Nr }
For LoopVar := 1 To Nr Do { by using the loop }
Faculty := Faculty * LoopVar; { notice if Nr < 1 the loop does nothing }
FacultyLoop := Faculty; { return the result }
End; { Function }
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
{ Calculates the faculty of Nr through recursion... }
Function FacultyRecursion( Nr : Byte ) : Real;
Begin
If( Nr < 1 ) Then
FacultyRecursion := 1.0 { if Nr is 1 or 0 then result is 1 }
Else { else result is Nr * (Nr-1)! }
FacultyRecursion := FacultyRecursion( Nr - 1 ) * Nr;
End; { Function }
{ - - - - - - - - - - - - - ALL PROCEDURES - - - - - - - - - - - }
{ Prints a result... }
Procedure PrintResult( Nr : Byte; Result : Real );
Begin
Write( 'Faculty of ', Nr, ' is : ', Result:9:0 );
End; { Procedure }
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
{ Prints a given timer... }
Procedure PrintTimer( TheTimer : Real );
Begin
Writeln( ' TIME: ', TheTimer:4:5 );
End; { Procedure }
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
{ Starts a given timer... }
Procedure StartTimer( Var TheTimer : Real );
Begin
GetTime( TemporaryTime[ 1 ], TemporaryTime[ 2 ], { store the current time globaly }
TemporaryTime[ 3 ], TemporaryTime[ 4 ] );
TheTimer := 0.0; { set specif. timer to 0 }
End; { Procedure }
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
{ Stops a given timer... }
Procedure StopTimer( Var TheTimer : Real );
Var Hours,
Minutes,
Seconds,
Hundr : Word;
TempTime : Real;
Begin
GetTime( Hours, Minutes, Seconds, Hundr ); { get current time }
TempTime := ( Hours - TemporaryTime[ 1 ] ); { and calculate time dif. from global value in hundr.
seconds }
TempTime := ( Minutes - TemporaryTime[ 2 ] ) + 60 * TempTime;
TempTime := ( Seconds - TemporaryTime[ 3 ] ) + 60 * TempTime;
TheTimer := TheTimer + 100 * TempTime + Hundr - TemporaryTime[ 4 ]; { return through pass-by-ref. }
End; { Procedure }
{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
{ Starts a loop test and a recusion test... }
Procedure StartFacultyTest( Nr: Byte );
Var NrOfTimes : LongInt;
Result : Real;
Begin
Write( 'RECURSION => ' ); { do the recursion test }
StartTimer( TimedRecursion );
For NrOfTimes := 1 To TestTimes Do
Result := FacultyRecursion( Nr );
StopTimer( TimedRecursion );
PrintResult( Nr, Result );
PrintTimer( TimedRecursion );
Write( 'LOOP => ' ); { now do the loop test }
StartTimer( TimedLoop );
For NrOfTimes := 1 To TestTimes Do
Result := FacultyLoop( Nr );
StopTimer( TimedLoop );
PrintResult( Nr, Result );
PrintTimer( TimedLoop );
End; { Procedure }
{ - - - - - - - - - - - - - MAIN PROGRAM - - - - - - - - - - - - }
Begin
For LoopVar := 1 To 15 Do { test for different values }
StartFacultyTest( LoopVar );
End. { Program }


Dão uma breve explicação dos comandos novos k eles usam (mas k n fikei a perceber mt bem) e pedem para fazermos isto:

1) Try to write a small program that calculates the determinant of a given
three by three matrix. Try to use a two dimensional array of reals for
this. Try to put the calculation of such a determinant into a function.
Also Write a string on the screen telling the user a given matrix is
'singular' or not. If the determinant is zero, the matrix is singular.

Tou uma beka à nora de como heide fazer isso, ng pa dar umas luzes?
Sei k sou xato, mas ando mm a ver se aprendo uma beka disto :P

Btw aki fika o .exe do meu 1º programa :P : http://pwp.netcabo.pt/orlandojdr/formula1.0.rar
 
Última edição:
akela decisao

poix, vou ser muito breve nakilo ao k eu penso ser o essencial.

Acho que a primeira aproximação á programacao deve ser feita em linguagem C, visto ser a base de linguagem mais usada a nivel mundial, em termos de software e sistemas operativos, podendo entao mais tarde evoluir ou nao para C++.
É tambem uma linguagem de fácil aprendizagem, e intuitiva na minha opiniao, e tambem é facil encontrar muita informaçao acerca desta linguagem.


Sei algumas linguagens de programaçao, e akredita k acho k a melhor para começar é C.

por isso dou apenas o meu simples parecer.

cumpzz
 
Aconselho Python. :)

Python é bom. Python é fácil. Python introduz bons métodos de programação. Open-source. Multi-plataforma. E extremamente poderoso.

Python ao poder! :D
 
Tb já partilhei da ideia de que VB é uma linguagem para amadores... talvez porque tb comecei por C -> C++ -> PHP, mas agora que programo há mais de meio ano em VB.NET não vejo que a diferença para o C# seja assim tão grande, e ainda è mais fácil de programar. O .NET veio nivelar muito as linguagens de programação C, VB e C#
 
[_Silence_] disse:
Ontem e hoje andei a dar uma voltinha em tutorials de Pascal, e fikeime por um com bastantes exercicios. Um deles era este:




Após ler e pensar uma beka saiume este código (n se riam poix nunca tokei em nada de programação :P)



Serve para resolver equações de 2º grau com a formula resolvente e diz-nos onde tá o vértice da parábola.

Também já fiz isso em VB. Muito simples (lá:)).

Mas já agora porque continuam a dizer que VB é linguagem de amadores, linguagem de programação é liguangem de programação, tem sempre as suas dificuldades.....ou será que a verdadeira linguagem, a que realmente nao é para amadores é código binário?

pelos vossos comments é o que dá a entender.....

é a evolulação, as linguagens evoluem e são incorporadas funcionalidades nelas que facilitam a vida ao programadores, não é linguagem amadora ou profissional.....é uma linguagem! :004:
 
Ng me sabe tirar as dúvidas k tenhu postadas? Akilo do While not keypressed do; o runtime error e meter os resultados sem ser em notação cientifica? =)
 
[_Silence_] disse:
Ng me sabe tirar as dúvidas k tenhu postadas? Akilo do While not keypressed do; o runtime error e meter os resultados sem ser em notação cientifica? =)

Boas,

Acredita que já andei pelos foruns internacionais de programação a perguntar a tua duvida e ainda nada....Os tipos tem todos a mania que são experts, mas em Pascal não devem dar uma.... :mad: :mad: :mad:

Nem no Portugal-a-Programar nem aqui no Techzone te conseguiram responder, a ver vamos se nesse forum internacional conseguem...

Cumps
 
Última edição:
Back
Topo