1 / 20

PROGRAMAÇÃO ou LINGUAGEM C?

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

ewa
Download Presentation

PROGRAMAÇÃO ou LINGUAGEM C?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROGRAMAÇÃO ou LINGUAGEM C? Centro Federal de Educação Tecnológica da ParaíbaCoordenação de InformáticaProfessor: Lafayette B. Melo

  2. 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

  3. Funções em detalhes • Funções são blocos de construção nos quais ocorrem todas as atividades dos programas • As funções em maiores detalhes possuem formas de modificar argumentos, regras de escopo, tempo de vida de variáveis, recursividade e especificidades da função main • Sintaxe: especificador_tipo nome_função(lista_parâmetros) declarações de parâmetros { corpo }

  4. Uma função simples main() { linha(); printf("\xDB UM PROGRAMA EM C \xDB\n"); linha(); getche(); } linha() { int j; for(j=1;j<=20;j++) printf("\xDB"); printf("\n"); } • A chamada é encerrada por “;”, mas a declaração não

  5. Variáveis locais: declaradas dentro de uma função ou de um bloco (existem durante a execução desse bloco de código) • Uso de variáveis locais func1() func2() { { int x; int x; x = 10; x = -199; } } • Mais uso de variáveis locais f() { char ch; printf (“continua (s/n)? :”); ch = getche(); if (ch == ‘s’) { char s[80]; printf (“digite nome:”); gets(s); } }

  6. Funções que retornam um valor – são a maioria e têm padrão o inteiro minusculo() { char ch; ch = getche(); if (ch >= 'A' && ch <= 'Z') ch+='a'-'A'; return(ch); } main() { char ch; printf("digite 'a' e depois 'b': "); ch=minusculo(); switch(ch) { case 'a': printf("\n vc pressionou 'a'."); break; case 'b': printf("\n vc pressionou 'b'" ); break; default: printf("\n vc escolheu algo desconhecido."); } }

  7. Comando return: faz com que haja uma saída da função e devolve valores • A função retorna com chave (}) e com return. • Usos: • Devolver valor e retornar para a próxima instrução • Causar uma saída imediata da função • Só retorna um valor a cada chamada Exemplos de uso de return potência(base, exp) int base, exp; { int t; if (exp<0) return; i = 1; for(;exp;exp--) i = base * i; printf (“a resposta é: %d: “,i); }

  8. C usa argumentos e passagem por valores Exemplo passando constante main() { printf (“%d %d %d\n”, abs(0),abs(-3),abs(10)); } abs(x) int x; { return((x < 0?-x:x); } Exemplo passando argumentos main() { int enpontos; while (1) { printf(“(0 para terminar) pontos = “); scanf(“%d”&enpontos); if (!enpontos) break; else bar(enpontos); } bar(pontos) int pontos; { int j; for (j=1;j<=pontos;j++) printf(“\xCD”); printf(“\n”); }

  9. Erro de uso de função swap (x,y) = 100; • Tipos de valores devolvidos: • Valores computacionais - devolve valores com base em uma operação. Ex.: sqrt() e sin() • Valores que indicam sucesso na operação. Ex: fwrite() • Valores não explícitos. Ex.: printf() • Valores podem não ser atribuídos: Exemplo de valores não atribuídos mul (a,b)---------> no main: z = mul(x,y) int a, b; printf(“%d”,mul(x,y)); { mul(x,y) return a*b; } • Regras de escopo: em c cada função é um bloco de código discreto. As variáveis podem ser locais, globais e parâmetros formais

  10. Parâmetros formais: variáveis que assumem valores dos argumentos Exemplo de uso de parâmetros formais esta_em(s,c)-------> alternativo esta_em(char*s, char c) char *s; char c; { while (*s) if (*s == c) return 1; else s++; return 0; } • Variáveis globais: conhecidas em todo o programa e declaradas fora de qualquer função mesmo que não seja antes do main.

  11. Variáveis globais int cont; main() { cont = 100; func1(); } func1() { int temp; temp = cont; func2(); printf(“%d”,cont); } func2() { int cont; for (cont=1;cont<10;cont++) printf(“.”); }

  12. Razões de se evitar as variáveis globais: • ocupam espaço de memória • pouca generalização • programação de erros • alteração acidental • Vantagem das variáveis globais: uso dos mesmos dados em várias funções no programa Ex. geral Ex. local mul(x,y) int x, y; int x, y; mul() { { return(x*y); return(x*y); } }

  13. Argumentos de funções: parâmetros formais dos mesmos tipos dos argumentos, podem ser feitas atribuições aos parâmetros formais ou pode ser usada dentro de uma função, são usadas como outra variável local • chamada por valor e por referência - em c é feita por valor • chamada por referência - é simulada Exemplos main() troca(x,y){ { int t = 10; int *x, *y; printf (“%d %d”,sqr(t),t); temp = *x; } *x = *y; sqr(x) *y = temp; int x; } { chamada: x = x*x; troca(&x,&y) return (x); }

  14. chamando funções com matrizes - 3 formas: • declarando o ponteiro como matriz Exemplo de funções com matrizes main() { int t[10], I; for(I=0;I<10;++I) t[I]=I; mostre(t); } mostre(num) int num[10]; { int I; for (I=0;I<10;I++) printf(“%d “,num[I]); } • especificar o parâmetro como uma matriz sem tamanho Exemplo de matriz sem tamanho mostre() int num[]; { int I; for (I=0;I<10;I++) printf(“%d “,num[I]);}

  15. especificar o parâmetro como um ponteiro Exemplo de matriz com ponteiro mostre() int *num; { int I; for (I=0;I<10;I++) printf(“%d “,num[I]);} • especificar o elemento de uma matriz Exemplo de especificar elemento de uma matriz main() { int t[10], i; for (I=0;I<10;I++) t[I] = I; for (I=0;I<10;I++) mostre(t[I]); } mostre(num) int num; { printf(“%d “,num); }

  16. Argumentos argc e argv: argumentos de linha de comando. Argc e argv são os únicos argumentos aceitos por main. • Argc - número de argumentos (int). No mínimo um. • Argv - ponteiro para uma matriz de ponteiros para caracteres. Cada elemento na matriz aponta para um argumento da linha de comando Exemplo de uso de argc e argv main(argc,argv) int argc; char *argv[]; { if (argc != 2) { printf(“esqueceu o nome\n”); exit(0); } printf(“alo %s”,argv[1]); }

  17. Outro exemplo de uso de argc e argv /* contagem regressiva */ main(argc,argv) int argc; char *argv[]; { int disp, cont; if (argc < 2) { printf(“faltou comprimento. Tente novamente.\n”); exit(0); } if (argc == 3 && !strcmp(argv[2],”display”)) disp = 1; else disp = 0; for(cont=atoi(argv[1]);cont;--cont) if (disp) printf (“%d “,cont); printf(“%c”,7); }

  18. Para se ter acesso a um caractere individual em uma das strings de comando acrescenta-se um segundo índice a argv. Exemplo caracteres individuais da linha de comando main(argc,argv) { int argc; char *argv[]; { int t, I; for (t=0;t<argc;++t) { I=0; while (argv[t][I]) { printf (“%c”,argv[t][I]); ++I; } printf(“ “); } }

  19. Funções que devolvem não inteiros - quando não é o valor default é necessário duas etapas: • 1) dar à função um especificador de tipo explicito; • 2) identificar o tipo da função antes de chamá-la pela primeira vez Exemplo funções não-inteiras float soma(); main() { float primeiro, segundo; primeiro = 123.13; segundo = 99.09; printf(“%f”,soma(primeiro,segundo)); } float soma(a,b) float a,b; { return a+b; }

  20. Funções void - padrão do unix (nenhum valor) • Protótipos - funções que se pode declarar o número e o tipo de argumentos - para grandes programas ou quando muitos programadores trabalham em um projeto Exemplo protótipo float func(int, float) /* prototipo */ main() { int x, y; x = 10; y =10; func(x,y); /* não coincide tipos */ } float func(x,y) int x; float y; { printf(“%f”,y/(float)x); }

More Related