Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
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.. 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 , gracias a todos de antemano...
Responder Con Cita
  #2  
Antiguo 15-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Ay ¿que no saliste el día anterior a la clase de juerga?

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

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 pero tiempo al tiempo, tú de momento empieza creando las cosas claras y amplias, y después ya intenta ser más abstracto


Salu2.

Última edición por ixMike fecha: 15-03-2008 a las 22:23:04.
Responder Con Cita
  #3  
Antiguo 15-03-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
muchas gracias por responder con tanta rapidez, ahora mismo lo pondré en practica !!

gracias de nuevo ^^
Responder Con Cita
  #5  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
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 !
Responder Con Cita
  #6  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 15-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 15-03-2008 a las 23:30:06.
Responder Con Cita
  #8  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
gracias !! xD
Responder Con Cita
  #9  
Antiguo 15-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
acabo de completarlo un poco más.... jeje, será mejor que lo releas

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 15-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 16-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Offtopic: mmm esto bien podría ser un wiki del estilo de ixMike jeje.
Se podría sacar bastante chicha para Función
Responder Con Cita
  #12  
Antiguo 16-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Ale89 Ver Mensaje
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 16-03-2008
Ale89 Ale89 is offline
Registrado
 
Registrado: mar 2008
Posts: 7
Poder: 0
Ale89 Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programa para generar ayuda en chm o uso alternativo de pdf Nasca Varios 6 11-09-2007 14:00:29
Editor WYSIWYG básico para Delphi nachopro Varios 3 13-08-2007 18:42:36
Quiero encontrar un programa que me permita..... SerPan Tablas planas 5 04-07-2007 23:26:09
Ayuda En Login Y Pass Para Ingresar En un programa creado en Delphi Solojuegospc.tk Conexión con bases de datos 8 07-07-2005 03:18:28
¿ayuda para un programa para el msn kaiser_robert Internet 1 15-06-2005 20:52:07


La franja horaria es GMT +2. Ahora son las 18:41:50.


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
Copyright 1996-2007 Club Delphi