Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-07-2013
Novatin Novatin is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 61
Poder: 12
Novatin Va por buen camino
Thumbs up Ayuda con Variables Globales y Locales en Pascal

Que tal Amigos,
Estoy aprendiendo los conceptos de programacion básicos de Pascal, aunque debo decir que aprendí a programar en Turbo C++... hasta acá todo bien, sin embargo hay algo que no puedo pasar el codigo de C++ a Pascal... siento que algo le falta a Pascal

Tengo el siguiente codigo en Turbo C++ que usa una variable global y una variable local

Código:
...
int varGlobal;
int main()
{
   int varLocal;
   varGlobal=10;
   varLocal=10;
   printf("%d",varGlobal+varLocal);
   getch();
}
E intento pasar el codigo a Pascal así:

Código:
var
   varGlobal : Integer;

begin
var
   varLocal : Integer;
   varGlobal:=10;
   varLocal:=10;
   WriteLn(varGlobal+varLocal);
   ReadKey;
   
end.
Pero no me funciona...!
en realidad la idea es no "abusar" del uso de variables globales.. pero Pascal me obliga a declarar todas mis variables de la funcion "main" como globales??

O tengo algun problema al traducir el codigo??

Última edición por Novatin fecha: 30-07-2013 a las 01:21:53.
Responder Con Cita
  #2  
Antiguo 30-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Novatin.

Te pongo un código de ejemplo que te puede clarificar el ámbito de las variables en Pascal:
Código Delphi [-]
...
var
  varGlobal: Integer; // Global

function Funcion: Integer;
var
  Local: Integer; // Local a la función
begin
  varGlobal := 10; // Correcto
  Local     := 5;  // Correcto obviamente
  varLocal  := 10; // ¡¡ Error !! no accecible por Funcion
  Funcion   := Local;
end;

var
  varLocal: Integer; // Local a main, desconocida por todo el código que está encima.
                     // A diferencia de C/C++, Pascal no permite la inclusión de código 
                     // despues de finalizado el cuerpo principal del programa (.)
begin
  varGlobal := 10;  // Correcto
  varLocal  := 10;  // Correcto obviamente
  Local     := 15;  // ¡¡ Error !! no accesible
  WriteLn(varGlobal+varLocal);
  Readln;
end.
En el caso que utilices unidades, las variables declaradas en la sección de interface serán accesibles desde cualquier otra unidad que las incluya y las declaradas en la sección de implementation, privadas a la unidad.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 30-07-2013
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Este codigo hace uso de un Form con un boton y un memo. Usa los nombres por defecto y el evnto OnClick del Boton.


Código Delphi [-]
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    varGlobal: integer;  //Declaro una variable Global
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  varLocal: integer;
  otraVarLocal : integer;
begin
  varGlobal := 10;
  varLocal := 10;
  otraVarLocal := varGlobal + varLocal; //Suma aritmetica
  memo1.lines.add(IntToStr(varGlobal) + IntToStr(varLocal)); //Concatenacion de cadenas
  memo1.Lines.Add (inttostr(otravarlocal));
end;

end.

Al parecer tu estas haciendo un programa de terminal, no debe de variar demasiado.

Saludos y cuentanos si resuelves tus dudas.
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #4  
Antiguo 30-07-2013
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Despues de postear mi anterior mensaje vi que Eficsa (Salve maestro!) te habia contestado. Asi que hice esto para clarificar mi conocimiento jejej

Código Delphi [-]
program Terminal;

//Aqui declaro variables globales o alguna otra cosa
var
  varGlobal: Integer; // Global


//declaramos procedimientos y funciiones que pueden ser usados por main
function SumaEnteros(A,B: Integer):integer;
var
  Local: Integer; // Local a la función
begin
  Local := A + B;
  result := Local;
end;

//Aqui inicia Main

var
  varLocal: Integer; // Local a main, desconocida por todo el código que está encima.
                       // A diferencia de C/C++, Pascal no permite la inclusión de código
                       // despues de finalizado el cuerpo principal del programa (.)
  otraLocal:integer;
begin
  varGlobal := 10;  // Correcto
  varLocal  := 10;  // Correcto obviamente
  //Local     := 15;  // ¡¡ Error !! no accesible

  otraLocal := SumaEnteros(varGlobal, varLocal);  //La forma larga
  WriteLn(otraLocal);

  WriteLn(SumaEnteros(varGlobal, varLocal)); //La forma corta

  Readln;
end.

end.
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #5  
Antiguo 30-07-2013
Novatin Novatin is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 61
Poder: 12
Novatin Va por buen camino
Se me aclaro todo en el acto...

Creo que mi confusion surgió de los "Tontoriales" de pascal que lei.. , todos ellos indican una sola seccion de "VAR"... y no se me ocurrio incluir otra seccion "VAR" justo antes de main... yo me figuraba que debia estar dentro de BEGIN (principal)...

Menos mal que acá siempre puedo contar con Uds... Gracias por sus respuestas..

Un saludo.
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
Variables Globales Abel Garcia Firebird e Interbase 5 11-11-2011 07:06:42
variables globales pulpin C++ Builder 2 03-04-2008 04:09:28
Ayuda con Variables "Globales" zombira OOP 2 29-06-2007 01:19:54
variables globales henrygale Varios 9 06-04-2007 00:47:05
Declarar variables Locales en Delphi?? JELIRM Varios 6 09-07-2005 01:22:54


La franja horaria es GMT +2. Ahora son las 15:51:04.


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