Você está na página 1de 28

CURSO: CET/DPM DISCIPLINA: Intro.

Programao ANO LECTIVO: 2011/2013

CET/DSAS {IntroProg}
Joel Carvalho - 03.11.2011 Captulo 5 Variveis
Mod.AFTEBI.P-052.rev02

FORMAO TECNOLGICA

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Sntese
i. O que so variveis ii. Utilizao de variveis iii.Tipos de dados

FORMAO TECNOLGICA

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

i. O que so Variveis
Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

O que so variveis?
Na programao, uma varivel um objecto (uma posio, frequentemente localizada na memria) capaz de reter e representar um valor ou expresso.
in wikipdia.

Mod.AFTEBI.P-052.rev02

As variveis so identificadas por um nome e representam/armazenam dados que podem variar ao longo do tempo/execuo. Em C as variveis so tipificados pelo que uma varivel inteira apenas poder armazenar valores inteiros, etc.

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Variveis Vs Constantes
Alm das variveis tradicionais ainda existe o conceito de constante. Em linguagem C, as constantes so declaradas de forma anloga s variveis mas com a utilizao da palavra reservada const. As constantes no podem ser alteradas aps a sua declarao! Exemplo de declaraes: Varivel: int v = 0; Constante: const int c = 0; ou int const c = 0;
Mod.AFTEBI.P-052.rev02

No caso dos exemplos anteriores no decorrer do programa possvel fazer v=1; ou outra atribuio, mas no possvel fazer c=1;

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

iii. Tipos de Dados


Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Tipos de Dados
Simples Inteiros: 123456789 Reais: 123456789,123456789 Booleanos: True, False Caracteres: 'a', 'b','c', 'd', 'e', 'f', 'g',.... Cadeias de caracteres: abcdefghijkl mnopqrstuvw xyz _ ;... (estes podem ser complexos dependendo da linguagem). Compostos Matrizes 2D e 3D; Listas; Filas; Pilhas; rvores; ...

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Tipos de Dados Simples


Um tipo de dados simples (primitivo, nativo ou bsico) fornecido por uma linguagem de programao como um bloco de construo bsico. Dependendo da implementao da linguagem, os tipos primitivos podem ou no possuir correspondncia directa com objectos na memria. Em Linguagem C, os tipos de dados simples so: char 1byte char c = 'a'; int 4bytes int i = 10; float 4bytes float f = 1.02; double 8bytes double d = 1.02; void 0bytes void factorial(int i){ .; return();}

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Tipos de Dados Simples


Nalgumas linguagens (como nas funcionais), os tipos de dados simples mais sofisticados incluem tuplos, listas ligadas, nmeros complexos, tabelas de hash, entre outros. Na linguagem C existe ainda os modificadores de tipos de dados: signed (com sinal) unsigned (sem sinal, no tem nmeros negativos mas permite armazenar valores positivos de maior dimenso) long short Exemplos: unsiged int x = 0; long int c = 0; ...

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Tipos de Dados Compostos


Os tipos de dados compostos so tipos de dados que na sua constituio podem conter um ou mais tipos de dados simples. Por exemplo, em C uma estrutura um tipo composto, mas uma matriz e uma string tambm. Atravs das estruturas possvel representar, listas, rvores, pilhas, etc. struct Conta { int numero; char nome; int [30] notas; float altura; };

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exerccios
Representa em Pseudo-Cdigo e em Fluxograma trs programas cujos critrios de paragem so: 1.1 Definidos pelo programador. 1.2 Definidos pelo utilizador no critrio de paragem. 1.3 Definidos pelo utilizador no incremento / decremento da varivel.
Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exerccios
Representa em Pseudo-Cdigo e em Fluxograma um programa que: Imprima no ecr os 100 primeiros nmeros pares superiores a um valor introduzido pelo utilizador. Analise se para esta situao, o nmero de execues do bloco iterativo fixo ou varivel. Receba n nmeros do teclado e os some todos, por fim escreva a soma deles dividida por n (mdia). Nota: suponha que o valor de n pedido inicialmente ao utilizador.

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

ii. Utilizao de Variveis


Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Conceitos
Declarar a varivel inteira v: int v; Instanciar a varivel inteira v a zero: int v = 0; Atribuir o valor 1 a v: v=1; Incrementar a varivel v ou incrementar o valor de v: v++; ++v; v=v+1;
Mod.AFTEBI.P-052.rev02

Decrementar a varivel v ou decrementar o valor de v: v--; --v; v=v-1;

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Incremento/Decremento
Colocar o operador de incremento/decremento antes do nome da varivel ou depois tem algumas diferenas: int x=0, v=0; x=v++; No fim destas instrues, x=1 e v=0 v incrementado depois da operao de atribuio ser realizada. int x=0, v=0; x=++v; No fim destas instrues, x=1 e v=1 v incrementado antes da operao de atribuio ser realizada.

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Matrizes
Em matemtica, uma matriz mXn (m por n) uma tabela de m linhas e n colunas de smbolos sobre um conjunto, representada sob a forma de um quadro.

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Matrizes em C
As matrizes em C so caracterizadas por possurem um determinado tamanho (geralmente predefinido) e armazenarem vrios dados mas todos do mesmo tipo. Por exemplo uma matriz inteira poder ser declarada do seguinte modo: int m1[10]; (1 dimenso 1D ou Vector com 10 elementos) int m2[10][15]; (2 dimenses 2D de 10x15) As matrizes podem ser tanto unidimensionais (vectores) como multi-dimensionais, no caso anterior foi declarada uma matriz de dimenso dois e um. Exemplo de matriz de dimenso 3: int m3[5][10][10];

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Matrizes em C
Como aceder ao elemento de uma matriz de uma dimenso ou a um vector (vector=matriz 1D)? vec
10 15 2 3 78 4

x=vec[5]; Resultado: x=4 x=vec[6]; Resultado: Erro

x=vec[0]; Resultado: x=10 vec[0]=5; Resultado: Altera o valor 10 para 5


Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Matrizes em C
Como aceder ao elemento de uma matriz de duas dimenses? matriz x=matriz[0][0]; Resultado: x=10 x=matriz[3][3]; Resultado: Erro matriz[0][2]=3;
Mod.AFTEBI.P-052.rev02

10 24 14

1 42 87

2 4 48

Resultado: Altera o elemento da linha 0, coluna 2 para 3c

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Fluxograma e Pseudo-cdigo
Para utilizar matrizes em pseudo-cdigo e em fluxogramas procede-se exactamente da mesma forma que em C. declarar vector vec:
vec[100]

Atribuir a x o valor do elemento da posio 49 do vector vec:


x=vec[49]

Mod.AFTEBI.P-052.rev02

E em pseudo-cdigo: vec[100]; x=vec[49];

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Dicas Trabalho
Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Operaes com caracteres


De modo a que o trabalho mantenha coerncia podem desde j utilizar funes que futuramente vo ter criar em linguagem C.
int str_tam(string) - devolve o tamanho da string. int str_comp(string1, string2) devolve 1 se string1 for igual a string2 e 0 no caso contrrio. string str_sub(string, int1, int2) devolve a substring da string que tem por ndice inicial o int1 e ndice final o int2. int str_ultimo(string, char) devolve a posio da ltima ocorrncia do char na string e -1 no caso de no encontrar. int str_primeiro(string, char) devolve a posio da primeira ocorrncia do char na string e -1 no caso de no encontrar.
Mod.AFTEBI.P-052.rev02

int str_existe(string1, string2) devolve 1 caso exista algum dos caracteres da string2 na string1 e zero no caso contrrio.

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exemplos de utilizao
int res=0; // instancia res a zero string var[2]={teste abc, teste 1231}, resv;
// instancia matriz 1D var com 2 elementos e declara string resv // var[0]=teste abc, var[1]=teste 1231

res=str_tam(var[1]); res=str_comp(var[0], var[1]); res=str_comp(var[0], var[0]); resv=str_sub(var[0], 2, 4); resv=str_sub(var[1], 6, str_tam(var[1])-1); ...

// res=10 // res=0 // res=1 // resv=ste // resv=1231


Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exemplos de utilizao
// resv=1231, var[0]=teste abc, var[1]=teste 1231 // res=4 // res=3 // res=-1 // res=0 // res=1 // res=0 // res=0
Mod.AFTEBI.P-052.rev02

res=str_tam(resv); res=str_ultimo(resv, '1'); res=str_ultimo(var[0], '1'); res=str_primeiro(resv, '1') ; res=str_existe(var[1], 0123456789); res=str_existe(var[1], -); res=str_existe(var[0], fgh); res=str_ultimo(var[0], 'f');

// res=-1

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Perguntas?

{Obrigado e Bom Trabalho!}

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exerccios
Suponha que necessrio registar as classificaes dos alunos de uma turma do ensino bsico, composta por 15 alunos. Para tal foi decidido utilizar um vector com 15 posies. Desenhe fluxogramas de programas que respondam de forma conveniente a cada uma dos seguintes requisitos: a) Programa que receba o conjunto de 15 classificaes para o vector. Tenha em ateno que deve ser garantido que as notas introduzidas so vlidas ([0,20]). b) Programa que mostre os nmeros dos alunos com classificaes positivas. c) Programa que mostre a classificao mdia dos alunos aprovados.
Mod.AFTEBI.P-052.rev02

d) Programa que verifique se existem notas repetidas entre os alunos da turma.

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Exerccios
2) Repita o exerccio anterior mas agora para o caso de cada aluno ter trs notas (correspondentes a cada frequncia). Nota: Lembre-se que tem de obedecer ao que era pedido anteriormente, e que um aluno para ser aprovado tem de ter mdia positiva das trs frequncias. Nota: Para alnea d) faa a verificao para cada frequncia em separado. Exemplo de output: 1 Frequncia no houve notas repetidas. 2 Frequncia houve notas repetidas. 3 Frequncia no houve notas repetidas.

Mod.AFTEBI.P-052.rev02

CURSO: CET/DPM DISCIPLINA: Intro. Programao ANO LECTIVO: 2011/2013

Ipsa scientia potestas est


{O saber poder}

FORMAO TECNOLGICA

Mod.AFTEBI.P-052.rev02