Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda, programa muy básico para encontrar areas (https://www.clubdelphi.com/foros/showthread.php?t=54361)

Ale89 15-03-2008 21:48:52

Ayuda, programa muy básico para encontrar areas
 
Hola a todos !
Me encuentro en este foro porque me interesa programar en Delphi, pero ahora tengo un problema:

Acabo de entrar a la Universidad y estoy en primer semestre de Ing. en Sistemas. La última clase empesamos a hacer programas y comensamos con uno que sirve para encontrar el area de algun poligono (en el curso fue un triangulo) pero creo que cometí el error de no tomar notas.. :confused: ahora que tengo Delphi 7 y quiero repetir el curso, no se como empesar... lo que recuerdo es que habian elementos como por ejemplo:

var Area_tri:real;
Area_tri:=b*a/2;
var b,a:real;

(habia un momento en el que se ponia function (...) y luego se presionaba Ctrl+Shift+c pero no me acuerdo cuando...)
(a: altura, b:base)

edit1.text (algo con floattostr, o strtofloat)
(lo mismo con edit2.text para b)


luego no se mas... ahora la razon por la que acudo a uds, es para que porfavor pierdan unos 2 minutos de su tiempo y porfavor me expliquen que es lo que tengo que hacer o el orden en el que tengo que hacer para tener un programilla que me saque el area de un triangulo :rolleyes:, gracias a todos de antemano...

ixMike 15-03-2008 22:19:34

Ay :rolleyes: ¿que no saliste el día anterior a la clase de juerga? :D

Veamos, veamos... tienes un Form, con un botón, dos Edits y un Label. En los dos Edits escribirás el valor de la base y la altura. Al darle al botón se calculará el área, y se mostrará en el Label, ¿ok?.

Bien, pues haz doble clic en el botón, te apareceré el editor de código algo así:

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Bien, pues ahora necesitas crear esas variables "a" y "b" que quieres. La declaración de las variables de debe hacer con la palabra reservada var y después todas las variables que quieras. Bien, para tenerlas en el ámbito del método Click del botón, colocaremos la declaración antes del begin:

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Base, Altura: Real;
begin

end;

Vale, yo las he llamado Base y Altura. Te recomiendo que llames siempre a las variables por un nombre que no vayas a olvidar, porque ahora son dos, pero después serán decenas, incluso centenas, y necesitan nombres claros ;)

Ok. Ahora necesitamos asignar a las variables los valores escritos en los Edits. Para ello necesitarás una función que transforme el texto a un número real, y esa es StrToFloat.

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Base, Altura: Real;
begin
  Base:=StrToFloat(EBase.Text);
  Altura:=StrToFloat(EAltura.Text);
end;

También he dado nombres a los Edits (en el inspector de objetos, en su propiedad Name) para facilitar las cosas.

Bien, ahora necesitamos almacenar el resultado. ¿Otra variable? Pues sí, bien:

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Area, Base, Altura: Real;
begin
  Base:=StrToFloat(EBase.Text);
  Altura:=StrToFloat(EAltura.Text);
  Area:=Base*Altura/2;
end;

Muy bien, y ahora sólo queda mostrar el resultado en el Label (en su propiedad Caption). Pero nos pasa lo inverso que con los Edits, ahora necesitamos convertir un número a texto. Pues nada, Delphi nos trae la genial FloatToStr:

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Area, Base, Altura: Real;
begin
  Base:=StrToFloat(EBase.Text);
  Altura:=StrToFloat(EAltura.Text);
  Area:=Base*Altura/2;
  lblResultado.Caption:=FloatToStr(Area);
end;

Y ya está, ya tienes el área :D

No obstante, y aunque ahora eso para ti no es importante, aquí ha habido un derroche de variables. Si empiezas a sustituir expresiones por las asignaciones antesriores vas obteniedo...
Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Area, Base, Altura: Real;
begin
  Base:=StrToFloat(EBase.Text);
  Altura:=StrToFloat(EAltura.Text);
  Area:=Base*Altura/2; //Valor de Area
  lblResultado.Caption:=FloatToStr(Area); //Se usa Area
end;

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
var
  Base, Altura: Real;
begin
  Base:=StrToFloat(EBase.Text); //Valor de Base
  Altura:=StrToFloat(EAltura.Text); //Valor de Altura
  lblResultado.Caption:=FloatToStr(Base*Altura/2); //Se usa Base y Altura
end;

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
begin
  lblResultado.Caption:=FloatToStr(StrToFloat(EBase.Text)*StrToFloat(EAltura.Text)/2);
end;

Y así es como uno se ahorra declarar variables y demás :D pero tiempo al tiempo, tú de momento empieza creando las cosas claras y amplias, y después ya intenta ser más abstracto ;)


Salu2.

marcoszorrilla 15-03-2008 22:24:59

Código Delphi [-]
Function Area_Triangulo(b: Double;h: Double): Double;
begin
Result:=b*h/2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=FloatToStr(Area_Triangulo(40,50));
end;

Un Saludo.

Ale89 15-03-2008 22:25:32

muchas gracias por responder con tanta rapidez, ahora mismo lo pondré en practica !!

gracias de nuevo ^^

Ale89 15-03-2008 22:42:58

Lo que llevé en la Universidad fue mas como lo explicó ixMike :) pero en vez de utilisar el label, utilisamos un tercer edit, y todavía me queda la duda de para que sirve
function ... (porque en algun momento (creo que al principio) usé esta opcion) y
Ctrl+Shift+C, que lo usamos despues de escribir la función.

si me pudieran explicar eso mas, fuera muy feliz !! jeje

pd: el programa segun la explicacion de ixMike marcha perfectamente y lo agradesco mucho, pero me en cantaria saber estas 2 ultimas cosillas para no tener ninguna duda.

gracias tambien a marcoszorrilla por el aporte, pero creo que es un poco avansado o no le entendi :S

saludos !

Ale89 15-03-2008 22:48:37

AH !
una cosa mas que tal vez deberia aclar es que antes de hacer nada en el "Form" escribimos function (y todo lo que viene que no se que es :S )(esto en los cursos de la U) y luego viene Ctrl+Shift+C, ahora, lo que no se es que es lo que viene despues de "function", que viene despues de function y para que sirve Ctrl+Shift+C

gracias por cualquier ayuda !

saludos

Lepe 15-03-2008 23:17:02

Partamos desde el principio.

Un procedimiento (procedure) es una forma de agrupar varias sentencias (órdenes) bajo un nombre. En princpio no devuelve ningún valor después de su ejecución.

Una función es un procedimiento que devuelve un valor como resultado de la ejecución de esas sentencias que agrupa.

Lo que viene después de la palabra "function" es el nombre que le queremos dar, y después tiene opcionalmente unos parámetros (valores de entrada que le podemos pasar a ese grupo de sentencias). Normalmente se define así:
Código Delphi [-]

function DameUnDouble: double;

// o bien dándole parámetros:
function AreaTriangulo(base : double; altura:double):double;

En el primer caso, el tipo de valor que debe devolver se especifica después de los dos puntos ":" (double es un número en coma flotante, que puede tener decimales, vamos).

El segundo caso es más complejo, le decimos esa función va a recibir dos valores. A un valor le llamaremos "base" y al otro "altura". Podrían ser cada uno de un tipo diferente, pero ahora nos conviene que ambos sean de tipo "double".

Toda función debe devolver un valor, y para ello puede utilizarse dos nomenclaturas totalmente equivalentes:
Código Delphi [-]
function DameUnDouble: double;
begin 
  Result := 3.2;
end;

function DameUnDouble:double;
begin
   DameUnDouble:= 3.2;
end;

Se usa el nombre de la propia función asignándole un valor, o bien la palabra "Result" que quizás es más intuitiva y que es lo que normalmente se usa.

Para ejecutar un procedimiento o función basta usar su nombre y darle los parámetros de entrada si los tiene, en el Onclic de un botón podemos poner:
Código Delphi [-]
procedure TForm1.ButtonClick(Sender:TObject);
var area :double;
begin
   DameUnDouble;
   area := AreaTriangulo(40,50);
   showMessage('el area es ' + floattostr(area));
end;
vale, lo he complicado usando dos funciones no explicadas, la ayuda de delphi puede aclararte algo sobre ellas. Ya va siendo hora que acudas a ella, será tu mejor aliado.

Ahora dale una vueltecita a la función de Marcos y quizás la comprendas mejor.

CTRL + SHIFT + C es lo que se llama "class completion", una mejora que tiene el IDE de delphi para ahorrarnos teclear código. Lo que hace es leer la declaración de nuestra clase y crear el esqueleto de dicha clase en la parte implementation.
Un ejemplo escribe esto en tu delphi:
Código Delphi [-]
type TForm1 = Class(TForm)
  public
     procedure Unproc;
     function AreaTriangulo(base:double; altura:double):double;
     procedure Dos;
     procedure Tres;
end;
y ahora pulsa la combinación de teclas, ve a la parte de abajo después de "implementation" verás pura magia ;).


Offtopic: mmm esto bien podría ser un wiki del estilo de ixMike jeje.

Saludos.

Ale89 15-03-2008 23:21:53

gracias !! xD

Lepe 15-03-2008 23:30:45

acabo de completarlo un poco más.... jeje, será mejor que lo releas ;)

Saludos

Ale89 15-03-2008 23:43:11

ow... creo que eso se sale un poco de mis conocimientos... pero gracias de todas formas, gracias a tu ayuda ahora me acorde lo que tenia que poner despues de function:

Código Delphi [-]
function Area_tri(b,a:real)real;
luego viene el famoso Ctrl+Shift+C ( que sigo sin saber que es lo que hace... creo que crea la funcion porque luego de hacer eso aparece:

Código Delphi [-]
function TForm1.Area_tri(b,a: real): real;
begin
    
end;

end.


y luego... bueno, estoy probando aver que sale !

gracias a todos por ayudarme !

sinceros saludos !

Ale

ixMike 16-03-2008 02:01:59

Cita:

Empezado por Lepe (Mensaje 273588)
Offtopic: mmm esto bien podría ser un wiki del estilo de ixMike jeje.

Se podría sacar bastante chicha para Función :)

Lepe 16-03-2008 13:00:29

Cita:

Empezado por Ale89 (Mensaje 273593)
Ctrl+Shift+C ( que sigo sin saber que es lo que hace... creo que crea la función

Exacto, por eso puse varios procedimientos en el ejemplo, para que vieras que los crea todos, todos.

Pero no se queda ahí, el autocompletado de clases va mucho más allá, quiero decir, que puede escribir mucho código por tí, aunque ahora mismo no pueda explicarlo a fondo, ya que te sonaría a chino.

Yo al principio tampoco lo usaba, porque realmente no sabía de antemano las funciones que necesitaba y lo hacía a mano. Cuando tomas experiencia empiezas a dedicar más tiempo al diseño y a los conceptos. El hecho de escribir código se convierte en una mera rutina, y aquí es cuando en apenas 1 minuto, puedes crear un archivo de código de 100 o 200 líneas con solo pulsar la combinación de teclas.

Saludos

Ale89 16-03-2008 16:27:04

Wow... espero poder hacer algo asi despues o incluso durante la universidad !!, eso que dices que me parecera chino, pues estoy deacuerdo ! jajaja apenas tengo 3 clases pasadas en introduccion a la programación !! pero lo que veo hasta el momento me encanta...

gracias a todos por ayudarme !!

saludos

Ale


La franja horaria es GMT +2. Ahora son las 06:36:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi