sábado, 18 de abril de 2015

Variáveis globais

Em algumas ocasiões um programa em C pode exigir
o uso de uma variável global, que como sabemos 
estas variáveis podem ser usadas por todo o programa,
em qualquer bloco de código.
Estas variáveis estão aptas a manter seus valores
enquanto o programa estiver sendo executado.
Para criar uma variável global, basta declará-la 
fora de todas as funções do programa, de preferência 
no início, sendo que sua declaração pode ser feita
antes da função main(); desde que não seja usada
em alguma função do programa.
Devemos evitar que o nome de uma variável global 
seja o mesmo que de uma local, evitando assim conflitos
entre as duas onde a referência se dará a variável 
local anulando os efeitos da global.
Já que variáveis globais ocupam espaços na memória
durante todo tempo em que o programa está em execução,
elas devem ser evitadas, isto torna um desperdício de memória
procure sempre substituir por uma local  se possível.
Más o programa aqui proposto traz praticamente uma novidade,
inicializei um vetor de ponteiro para char na função copia_valores ( );
e fiz a cópia no vetor de ponteiro char *str [ 10 ];
que foi declarado como global, fiz o mesmo com o vetor de inteiro Vet [ 10 ];
também declarado nesta mesma função, fazendo a cópia no vetor global de inteiros,
de nome Vetor [ 10 ]. Note que o procedimento normal seria passá-los
como parâmetros para a função repr_matriz ( ); onde serão imprimidos por printf();
esta alternativa é bem válida principalmente quando já temos uma função com vários
parâmetros e precisamos passar outros valores, vindo tornar o código mais complicado.

Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:

#include <stdio.h>
#include <conio2.h>

char *str [ 10 ];
int Vetor [ 10 ];

void Janela5 ( ) {
    int lin, col;
    for ( lin = 0; lin <= 25; lin++ ) {
        for ( col = 0; col <= 80; col++ ) {
            gotoxy ( col, lin );
            if ( lin == 2 ) {
                textbackground ( LIGHTBLUE );
                printf ( " " );
            }
            if ( col == 1 ) {
                textbackground ( LIGHTBLUE );
                printf ( " " );
            }
            if ( lin == 25 ) {
                textbackground ( LIGHTBLUE );
            }
            if ( col == 80 ) {
                textbackground ( LIGHTBLUE );
                printf ( " " );
            }
        }
    }
    textbackground ( BLACK );
}

void repr_matriz ( ) {
    unsigned int i;
    textcolor ( LIGHTBLUE );
    gotoxy ( 205 );
    printf ( "Abaixo, a cópia do vetor de ponteiros para char" );
    textcolor ( LIGHTGREEN );
    for ( i = 0; i < strlen ( *str ); i++ ) {
        gotoxy ( 25, i + 7 );
        printf ( "%s", str [ i ] );
    }
    getche ( );
    textcolor ( LIGHTBLUE );
    gotoxy ( 2018 );
    printf ( "Abaixo, a cópia do vetor de inteiros" );
    textcolor ( LIGHTRED );
    gotoxy ( 2420 );
    for ( i = 0; i < 10; i++ ) {
        printf ( " %d ", Vetor [ i ] );
    }
    Sleep ( 1800 );
    textcolor ( WHITE );
    gotoxy ( 4511 );
    printf ( "Criado por:" );
    textcolor ( LIGHTRED );
    printf ( " Samuel Lima " );
    textcolor ( LIGHTRED );
    gotoxy ( 3623 );
    printf ( "MUITO OBRIGADO" );
    getche ( );
    exit ( 0 );
}

void copia_valores ( ) {
    unsigned int i;
    int a = 0, b = 0;
    int Vet [ 10 ] = { 9234867897 };
    for ( i = 0; i < 10; i++ ) {
        Vetor [ a ] = Vet [ i ];
        a++;
    }
    char *Nomes_Alunos [ 10 ] = { "Éder Costa""Humberto Gomes",
            "Dijalma Lacerda""Caroline Silva""Igor Gonçalves",
            "Bruna Carla ""Fábio Quadros""Geany Barros""Jaqueline Vega",
            "Ana Célia" };
    for ( i = 0; i < strlen ( *Nomes_Alunos ); i++ ) {
        //memcpy ( str, Nomes_Alunos , sizeof ( str ) );
        str [ b ] = Nomes_Alunos [ i ];
        b++;
    }
}

int main ( ) {
    system ( "title VARIÁVEIS GLOBAIS" );
    Janela5 ( );
    textcolor ( LIGHTRED );
    gotoxy ( 333 );
    printf ( "VARIÁVEIS GLOBAIS" );
    copia_valores ( );
    repr_matriz ( );
    getche ( );
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.