150 likes | 300 Views
PROGRAMAÇÃO ou LINGUAGEM C?. Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo. TÓPICOS. 1. Introdução à Linguagem C 2. Operadores e Expressões 3. Estruturas de Controle 4. Entrada e Saída 5. Matrizes e strings 6. Funções
E N D
PROGRAMAÇÃO ou LINGUAGEM C? Centro Federal de Educação Tecnológica da ParaíbaCoordenação de InformáticaProfessor: Lafayette B. Melo
TÓPICOS 1. Introdução à Linguagem C 2. Operadores e Expressões 3. Estruturas de Controle 4. Entrada e Saída 5. Matrizes e strings 6. Funções 7. Ponteiros 8. Estruturas e Uniões 9. Arquivos Texto 10. Arquivos Binários
Matrizes e Strings O que são • Matrizes: conjunto de variáveis de mesmo tipo, referenciadas pelo mesmo nome. • Em C, matrizes são locações contíguas de memória. Podem ter uma ou mais dimensões. • Strings: conjunto de caracteres. Em C, não há o tipo string, então são usadas matrizes de caracteres Matrizes unidimensionais • Sintaxe: tiponome_var [tamanho]; • Em C, todas as matrizes usam zero como índice do primeiro elemento
Exemplo programa matriz simples main() { int x[10]; /* reserva 10 espaços de memória */ int t; for (t=0;t<0;++t) x[t]=t; } • Cálculo do tamanho de uma matriz total_em_bytes = sizeof(tipo)*comprimento • Matrizes permitem lidar com muitas variáveis relacionadas
Exemplo trabalho com várias variáveis - média de dez main() { int amostra[10], i, med; for (i=0;i<0;i++) { printf(“digite numero %d: “,i); scanf (“%d”,&amostra[i]); } med=0; for (i=0;i<10;i++)med=med+amostra[i]; printf (“A media e %d\n”,med/10); } • Verificação de limites: C não faz verificação de limites. Por que? • Veja a loucura!
Exemplo atribuindo valores além do limite da matriz main() { int erro[10], i; for (i=0;i<100;i++) erro[i]=1; } • Matrizes são listas Exemplo matrizes são listas main() { int i; for (i=0;i<7;i++) ch[i]=‘A’ + i; } ch[0] ch[1] ch[2] ch[3] ch[4] ch[5] ch[6] A B C D E F G E daí ?
Strings • Uso comum das matrizes unidimensionais • Em C, uma string pode ser entendida como uma matriz de caracteres terminada em zero • O zero é ‘/0’ • Em uma constante de strings não é preciso se preocupar com o zero. Ex.: “Linguagem”. Como fica “Vou embora” internamente? Lendo strings pelo teclado • Forma usual de ler uma string: função gets(). • Sintaxe: gets (nome_matriz)
Exemplo lendo a string main() { char str[80]; printf(“Digite seu nome:/n”); gets (str); printf(“Ola, %s!”,str); } • Funções de String: strcpy(), strcat(), strcmp(), strlen() • Função strcpy - Sintaxe: strcpy(destino,origem) Exemplo strcpy main() { char str[80]; strcpy(str,”vou embora”) } E se a string for maior do que a variável?
Função strcat - Sintaxe: strcat(string1,string2) Exemplo strcat main() { char primeiro[20], segundo[10]; strcpy(primeiro,”estou indo“); strccpy(segundo,”embora”); strcat(primeiro,segundo); printf(“Agora %s.”,primeiro); } • Função strcmp - Sintaxe:strcmp(string1,string2) • Retorna 0 se as strings são iguais • um número positivo se a string1 for maior do que a string2 e • um número negativo se string1 for menor do que a string2
Exemplo strcmp - senha senha() { char s[80]; printf (“digite a senha: “); gets(s); if (strcmp(s,”vou embora”)) { printf (“senha inválida\n”); return 0; } return 1; } • Se quiser que algo ocorra o que fazer? main() { char s[80]; for (;;) { printf(“: “); gets(s); if (!strcmp(“sair”,s)) break; } }
Função strlen - Sintaxe: strlen(string). Retorna comprimento. Exemplo strcat main() { char str[80]; printf(“digite um nome: “); gets(str); printf(“%d”,strlen(str)); } Exemplo imprimir de trás pra frente main() { char str[80]; int i; gets (str); for (i=strlen(str)-1;i>=0;i--) printf (“%c”,str[i]); }
Exemplo todas main() { char s1[80], s2[80]; gets (s1); gets (s2); printf(“comprimentos:%d e %d\n”,strlen(s1),strlen(s2)); if (!strcmp(s1,s2)) printf(“as strings são iguais\n”); strcat(s1,s2); printf (“%s\n”,s1); } • O terminador zero pode ter uso interessante!! Exemplo terminador zero string em maiúsculas main() { char str[80]; int i; strcpy(str,”estou indo embora”); for (i=0;str[i];i++) str[i]=toupper(str[i]); printf(“%s”,str); }
Variações de printf() Formato básico: printf(“%s”,nome_matriz) Posso usar apenas printf(nome_matriz)? Exemplo outro modo de ver o printf main() { char str[80]; strcpy(str,”Lafayette”); printf (str); } Matrizes bidimensionais • Forma mais simples da matriz multidimensional • Exemplo de declaração: int bidm[10][20]
Exemplo matrizes bidimensionais main() { int t, i; num[3][4]; for (t=0;t<3;++t) for(i=0;i<4;++i) num[t][i]=(t*4) + i +1; } • Cálculo do tamanho de uma matriz bytes = linhas*colunas*sizeof(tipo) • Matrizes de strings - uso comum. Para criar uma matriz de strings, é utilizada uma matriz bidimensional de caracteres. • Índice esquerdo = número de strings • Índice direito = comprimento máximo de cada string
Acesso a uma matriz particular • Exemplo: gets (matriz_str[2]) = gets (&matriz_str[2][0]); Exemplo matriz de string main() { register int t, i, j; char texto[100][80]; for (t=0;t<100;t++){ printf (“%d: “,t); gets(texto[t]); if (!*texto[t]) break; } for (i=0;i<t;i++) printf (“%s\n”,texto[i]); }