6-Modulo5

Page 1

Curso Profissional de Informática de Gestão

Módulo 5: Tipo Estruturado - Tabelas

LINGUAGENS DE PROGRAMAÇÃO

Conteúdos 1. Noção de tabelas 1.

Tipos de dados definidos pelo utilizador – Tabela

2. Manipulação de elementos de uma tabela 3. Manipulação de Strings

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

2


Tabelas ou Vectores Frequentemente, existe a necessidade de trabalhar com

um número elevado de elementos de informação, todos do mesmo tipo. Neste caso, a utilização de uma variável diferente para cada elemento leva a muitas repetições desnecessárias de código e à incapacidade de generalização.

Um vector (array array) não é mais do que um

conjunto de elementos consecutivos, todos do mesmo tipo, que podem ser acedidos individualmente a partir de um único nome.

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

3

Declaração de vectores A declaração de um vector com uma única

dimensão obedece à seguinte sintaxe: tipo nome_variável[ [nº de elementos] ] tipo – corresponde ao tipo de dados de cada um dos elementos do vector. nome_variável – indica o nome pelo qual este vector será conhecido. nº de elementos – valor constante que indica quantos elementos tem o vector. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

4


Exemplos: int g[20]; /* g é um vector com 20 inteiros */

float renda[100]; /* renda é um vector com 100 reais*/

5

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

Vectores Todos os elementos de um vector podem ser identificados pelo mesmo nome, no entanto, para que se possa identificar cada um deles individualmente é necessário um índice), que indique qual a númer0 (índice sua posição no vector. Os elementos de um vector são armazenados em posições consecutivas da memória, iniciando os índices em zero.

nota[20] nota[0]

13

nota[1]

12

nota[2]

9

nota[3]

17 …

nota[19]

0 ?

Um vector é um exemplo de um tipo de dados

estruturados. Envolve dois conjuntos de valores e uma regra de estruturação. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

6


Exemplos: int vector[6]; Coloque o valor 123 na primeira posição de vector. vector[0] = 123; Coloque na última posição de vector o dobro do valor do primeiro elemento. vector[5] = vector[0] * 2; Coloque no terceiro elemento de vector a soma do primeiro com o último elemento. vector[2] = vector[0] + vector[5]; Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

7

Inicialização de vectores É possível inicializar todos os elementos de

um vector através da seguinte sintaxe: tipo var[n] = {valor1, valor2, …, valorn}

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

8


Exemplo Declare e inicialize um vector com todas as

vogais do alfabeto. char vogal[5] = {’a’, ’e’, ’i’, ’o’, ’u’ }; Evita-se assim escrever: char vogal[5]; vogal[0] = ’a’; vogal[1] = ’e’; vogal[2] = ’i’; vogal[3] = ’o’; vogal[4] = ’u’; Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

9

Algumas notas Num vector o n-ésimo elemento está sempre na posição n-1. Tal como as variáveis, os vectores quando são criados contêm valores aleatórios em cada uma das suas posições. Se um vector for declarado com n elementos e forem colocados apenas k valores (k<n) na inicialização , então os k primeiros elementos serão inicializados com os respectivos valores e os restantes serão inicializados com o valor ZERO. As posições de um vector só são inicializadas se a

declaração for seguida de ={valor … valor} Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

10


Passagem de vectores para funções Em C, dentro de uma função, não é possível

saber com quantos elementos foi declarado um vector que foi passado como argumento para essa função. Se for indicada qual a dimensão do vector no parâmetro da função, o número de elementos do vector é ignorado pelo compilador. À função apenas interessa saber qual o tipo dos elementos. A dimensão a considerar é da exclusiva responsabilidade do programador. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

11

Definição de Constantes Uma constante é um nome que corresponde

a um valor fixo. Estas devem, em principio, ser definidas fora de qualquer função de forma a serem visíveis ao longo de todo o programa. As constantes devem ser declaradas fora das

funções, de forma a serem visíveis por todo o código do programa. Normalmente a sua definição é realizada imediatamente a seguir às linhas dos #includes. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

12


Definição de constantes Através da palavra reservada const:

const tipo símbolo = valor; Através da directiva de pré-processamento

#define: #define símbolo valor

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

13

Diferenças entre const e #define Uma constante com const existe fisicamente

numa determinada posição de memória. Uma constante definida com #define não existe fisicamente em memória, sendo o seu valor substituído ao longo do programa na fase de pré-processamento (ainda antes da compilação). A palavra const faz parte das palavras reservadas do C.

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

14


Diferenças entre const e #define A palavra #define é uma directiva que indica ao pré-processador que o símbolo que se lhe segue, vai ficar com o valor que aparece a seguir ao símbolo. O pré-processador, antes de compilar o programa, substitui todas as ocorrências do Símbolo pelo valor com que este foi definido. Uma constante definida pela palavra const fica com o tipo que lhe foi colocado na definição. O tipo associado a uma constante definida com #define é o tipo que resulta da expressão que aparece na componente valor. Uma vez que o símbolo #define não faz parte da linguagem C, esta linha não é seguida de ponto e vírgula. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

15

As constantes definidas com o símbolo

Simbólicas #define chamam-se Constantes Simbólicas. Embora não seja obrigatório, habitualmente os programadores de C colocam as constantes simbólicas em maiúsculas.

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

16


Matrizes e vectores multidimensionais Até agora vimos como podíamos trabalhar com vectores com uma única dimensão. Vamos agora aprender como se podem usar vectores com mais do que uma dimensão. Não existe qualquer limite para ao número de dimensões que um vector pode conter. A declaração de vectores unidimensionais não é mais do que um caso particular da declaração de vectores com qualquer número de dimensões. A declaração de um vector com n dimensões é realizada através da seguinte sintaxe: tipo vector [dim1] [dim2] […] [dimn] Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

17

Exemplo Vamos observar como poderíamos

implementar o “Jogo do Galo” recorrendo a um vector como tabuleiro do jogo. Duas dimensões

X

O X O

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

18


Exemplo A declaração deverá ser realizada do seguinte

modo: #define DIM 3 … char Galo [DIM] [DIM] No caso anterior o que declaramos foi um

vector de 3 posições Galo[3], em que cada uma dessas posições é formada por um vector de 3 caracteres. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

19

Exemplo Assim: Galo

- É o vector de caracteres com duas

dimensões 3x3 Galo[i] - É um vector de 3 caracteres Galo[i][j] - Caracter presente na linha i e coluna j do vector Galo Se declararmos um vector

int v[3] [4]; v

- É um vector com 3 elementos (cada elemento é um vector de 4 inteiros) v[i] - É um vector de 4 inteiros v[i][j] - É o inteiro que está colocado na posição i,j do vector v Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

20


Exercício Escreva um programa que coloque o

tabuleiro do jogo do galo neste estado, depois de ter sido inicializado a espaços durante a declaração do mesmo. X

O X O

Em seguida mostre o tabuleiro no ecrã. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

21

#include<stdio.h> #define DIM 3 main( ) { char Galo [DIM] [DIM] = {{´ ´, ´ ´, ´ ´} , {´ ´, ´ ´, ´ ´} , {´ ´, ´ ´, ´ ´}}; int i, j; Galo[0][0]=’X’; Galo[1][1]=´X´; Galo[0][2]=´O´; Galo[2][2]=´O´; for (i=0; i<DIM; i++) { for(j=0; j<DIM; j++) printf(”%c %c”, Galo[i][j], j==DIM-1 ? ’ ’ : ’ | ’); if (i != DIM-1) printf (“\n--------\n”); } } Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

22


Strings e caracteres Uma string é um conjunto de caracteres

armazenados num vector. Em C, as strings são representadas utilizando aspas, enquanto os caracteres são representados por plicas. “Luís” “Bolo de chocolate com 1.2 Kg de peso” “A” ‘L’ ‘>’ ‘A’ Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

23

Strings Uma string não é mais do que um vector de

caracteres. O inverso é falso, isto é, um vector de caracteres pode não ser uma string. A declaração de strings obedece à sintaxe da declaração de vectores. Há, no entanto um problema: se num vector com 100 elemento apenas estiver armazenada a palavra “Zé” como saber quantos dos 100 caracteres estão a ser utilizados? A solução é colocar um marcador (um caracter)

que indique quando a string acaba. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

24


Strings terminador

Z

é

\0

v[0]

v[1]

v[2]

v[98]

v[99]

É este caracter que é universalmente

utilizado para terminar as strings em C. O programador deve sempre ter em atenção que na declaração de uma string tem que contar com o espaço para o caracter terminador. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

25

Inicialização de strings char char char char

nome[20] = ”André”; nome[20] = {’A’, ’n’, ’d’, ’r’, ’é’}; nome[] = ”André”; *nome = ”André”;

De notar que em qualquer dos casos

anteriores sempre que se faz a inicialização o compilador coloca automaticamente o terminador ’\0’. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

26


Leitura e escrita de Strings A escrita de strings é realizada por duas

funções: printf e puts puts. A função printf recebe como formato uma string que pode ser escrita directamente. No entanto uma string pode ser escrita como qualquer outra variável utilizando um formato próprio %s dentro da função printf. char NomeProprio[100] = ”Carla Marina”; char Apelido[50] = ”Silva”; printf (”Nome: %s, %s \n”, Apelido, NomeProprio); Nome: Silva, Carla Marina Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

27

Leitura e escrita de Strings A função puts permite, unicamente, a escrita

de strings, sejam elas constantes ou armazenadas em variáveis. O único aspecto a ter em atenção é que, depois de escrita a string, a função puts faz uma mudança automática de linha.

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

28


scanf A função scanf permite realizar a leitura de

strings utilizando o formato %s. No entanto a variável que recebe a string NÃO É PRECEDIDA de um &. #include <stdio.h> main() { char Nome[50], Apelido[100]; printf(”Introduza o nome: ”); scanf(”%s”, Nome); printf(”Introduza o apelido: ”); scanf(”%s”, Apelido); printf(”Nome completo: %s, %s \n”, Apelido, Nome); } Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

29

scanf A função scanf lê uma única palavra. A função lê todos os caracteres até encontrar

um <ESPAÇO>, <TAB> OU <ENTER>. Quando isto acontece, termina a leitura e coloca todos os caracteres lidos até essa altura na variável que lhe foi passada. Em seguida coloca o caracter terminador.

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

30


gets Permite colocar, na variável que recebe por

parâmetro, todos os caracteres introduzidos pelo utilizador. #include <stdio.h> main() { char Nome[50]; printf(”Introduza o nome completo: ”); gets(Nome); printf(”Nome completo: %s \n”, Nome); }

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

31

string.h strlen

Devolve o comprimento de uma string

strcpy

Copia uma string para outra

strcat

Concatenação de strings

strcmp

Comparação alfabética de strings

stricmp

Comparação de strings com ignore case

strchr

Procura um caracter numa string

strstr

Procura uma string dentro de outra

strlwr

Converte todos os caracteres de uma string para minúsculas

strupr

Converte todos os caracteres de uma string para maiúsculas

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

32


Bibliografia Damas, Luís; LINGUAGEM C; FCA; 2ª edição; Lisboa;

1999 Aguilar, Luis Joyanes; FUNDAMENTOS DE PROGRAMAÇÃO – Algoritmos, estruturas de dados e objetos; Mc Graw Hill; Tradução da 3ª edição; São Paulo; 2008 Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto http://www.eisnt.com/GPSI/programacao/Aula4C.pdf http://www.linhadecodigo.com.br/Artigo.aspx?id=425 http://www.criarweb.com/artigos/825.php http://deei.fct.ualg.pt/PI_flobo/teorica7.html http://www.di.ubi.pt/~fsilva/prog/Prog_Cap4.pdf (em 10/11/2008) Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

33

Bibliografia Damas, Luís; LINGUAGEM C; FCA; 2ª edição; Lisboa;

1999 Aguilar, Luis Joyanes; FUNDAMENTOS DE PROGRAMAÇÃO – Algoritmos, estruturas de dados e objetos; Mc Graw Hill; Tradução da 3ª edição; São Paulo; 2008 Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto Em 10/11/2008

http://www.eisnt.com/GPSI/programacao/Aula4C.pdf http://www.linhadecodigo.com.br/Artigo.aspx?id=425 http://www.criarweb.com/artigos/825.php http://deei.fct.ualg.pt/PI_flobo/teorica7.html http://www.di.ubi.pt/~fsilva/prog/Prog_Cap4.pdf

Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 5

34


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.