Вы находитесь на странице: 1из 102

Tcnico em Informtica Estrutura de Dados Reviso de C

Alex Helder Cordeiro de Oliveira


Instituto Federal de Braslia - Campus Braslia

2o semestre de 2012

Alex Helder (IFB)

EDD - Reviso de C

2012/2

1 / 81

Objetivo da Aula

Relembrar aos alunos sobre: As caractersticas do C ANSI; Algoritmos estruturados; Sintaxe de programao da linguagem C.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

2 / 81

Sumrio
1 2 3 4

Caractersticas da Linguagem C Processo de Desenvolvimento de Aplicaes em C Dicas para o uso do NetBeans para compilar programas em C Apresentando ou Coletando Informaes Apresentando informaes Colentando informaes Outras Entradas e Sadas de Console Comentrios Variveis Operadores Controle de Fluxo Funes
Alex Helder (IFB) EDD - Reviso de C 2012/2 3 / 81

5 6 7 8 9

Caractersticas da Linguagem C

Caractersticas da Linguagem C

Alex Helder (IFB)

EDD - Reviso de C

2012/2

4 / 81

Caractersticas da Linguagem C

Histrico

Inspirado na linguagem B (sucessora da linguagem BCPL);

Alex Helder (IFB)

EDD - Reviso de C

2012/2

5 / 81

Caractersticas da Linguagem C

Histrico

Inspirado na linguagem B (sucessora da linguagem BCPL); Desenvolvida por Dennis Ritchie e Ken Thompson em 1972;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

5 / 81

Caractersticas da Linguagem C

Histrico

Inspirado na linguagem B (sucessora da linguagem BCPL); Desenvolvida por Dennis Ritchie e Ken Thompson em 1972; Aplicvel em PCs, o que popularizou o uso da linguagem;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

5 / 81

Caractersticas da Linguagem C

Histrico

Inspirado na linguagem B (sucessora da linguagem BCPL); Desenvolvida por Dennis Ritchie e Ken Thompson em 1972; Aplicvel em PCs, o que popularizou o uso da linguagem; Padronizado pelo ANSI em 1989.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

5 / 81

Caractersticas da Linguagem C

Porque o C se popularizou

Permite grande controle sobre o computador;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

6 / 81

Caractersticas da Linguagem C

Porque o C se popularizou

Permite grande controle sobre o computador; Se assemelha a um assembly no qual o programador no precisa fazer tudo.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

6 / 81

Caractersticas da Linguagem C

Caractersticas da Linguagem C

Programao Estruturada;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

7 / 81

Caractersticas da Linguagem C

Caractersticas da Linguagem C

Programao Estruturada; Programao Imperativa;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

7 / 81

Caractersticas da Linguagem C

Caractersticas da Linguagem C

Programao Estruturada; Programao Imperativa; Programao Procedural;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

7 / 81

Caractersticas da Linguagem C

Caractersticas da Linguagem C

Programao Estruturada; Programao Imperativa; Programao Procedural; Tem caractersticas de alto e baixo nvel.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

7 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento de Aplicaes em C

Alex Helder (IFB)

EDD - Reviso de C

2012/2

8 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;


Atravs de uma IDE (DevC++; KDevelop; Borland C; . . . );

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;


Atravs de uma IDE (DevC++; KDevelop; Borland C; . . . ); Atravs de editores de texto simples (Notepad; Kate; VI).

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;


Atravs de uma IDE (DevC++; KDevelop; Borland C; . . . ); Atravs de editores de texto simples (Notepad; Kate; VI).

Compilao do cdigo fonte;

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;


Atravs de uma IDE (DevC++; KDevelop; Borland C; . . . ); Atravs de editores de texto simples (Notepad; Kate; VI).

Compilao do cdigo fonte;


Necessita de um compilador (pode estar embutido na IDE).

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Processo de Desenvolvimento

Escrita do cdigo fonte;


Atravs de uma IDE (DevC++; KDevelop; Borland C; . . . ); Atravs de editores de texto simples (Notepad; Kate; VI).

Compilao do cdigo fonte;


Necessita de um compilador (pode estar embutido na IDE).

Execuo

Integrated Development Environment.


Alex Helder (IFB) EDD - Reviso de C 2012/2 9 / 81

Processo de Desenvolvimento de Aplicaes em C

Demonstrao Edio em editor de texto simples

Alex Helder (IFB)

EDD - Reviso de C

2012/2

10 / 81

Processo de Desenvolvimento de Aplicaes em C

Demonstrao Compilao e execuo no console

Alex Helder (IFB)

EDD - Reviso de C

2012/2

11 / 81

Processo de Desenvolvimento de Aplicaes em C

Demonstrao IDE (Integrated Development Environment)

Alex Helder (IFB)

EDD - Reviso de C

2012/2

12 / 81

Processo de Desenvolvimento de Aplicaes em C

Cdigo Fonte
Por padro, o cdigo fonte escrito em C ter extenso .c; Os executveis, em windows tero extenso .exe, mas no tero extenso padro em ambiente linux; importante lembrar que o compilador diferencia maiscula de minscula; A ordem na qual esto escritos os comandos dentro da funo implica na ordem em que sero executados; Todo comando deve ser encerrado com ;; O ponto de partida para qualquer aplicao em C a funo main();

main() { }
Encontrado no exemplo: menor_possivel.c. No faz nada, mas o menor programa que pode ser escrito em linguagem C. Alex Helder (IFB) EDD - Reviso de C 2012/2 13 / 81

Uso do NetBeans

Dicas para o uso do NetBeans para compilar programas em C

Alex Helder (IFB)

EDD - Reviso de C

2012/2

14 / 81

Uso do NetBeans

Instalao

Se for baixar no site http://netbeans.org , baixe a verso com suporte a C/C++ ou a verso completa. Se voc j tiver o netbeans instalado, pode acessar o menu Ferramentas Plug-ins; na aba Plug-ins disponveis selecionar C/C++ e clicar em Instalar. Se estiver usando ambiente linux, o NetBeans congura automaticamente o caminho para o compilador de C (gcc); Se estiver usando ambiente Windows, voc ter de baixar um compilador (MingW, por exemplo) e congurar o Netbeans para encontr-lo pelo menu FerramentasOpes, na opo C/C++.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

15 / 81

Uso do NetBeans

Instalao: Congurando caminhos do compilador de C

Alex Helder (IFB)

EDD - Reviso de C

2012/2

16 / 81

Uso do NetBeans

Criando um projeto em C no NetBeans

Em IDEs avanadas como o NetBeans, comum ser necessrio a criao do projeto para podermos compilar um cdigo fonte. Para criar o projeto em C no NetBeans:
1 2

Clique no menu Arquivo Novo Projeto; Na categoria, escolha C/C++; em Projetos, escolha Aplicativo de C/C++; ento clique em Prximo; D um nome ao projeto; determine a localizao do projeto; d um nome ao arquivo principal (onde estar a funo main()). Em frente ao arquivo principal, selecione a opo C. Clique em Finalizar. Aps criado o projeto, o arquivo principal pode ser encontrado na aba Projeto em Arquivos de cdigo-fonte ou na aba Arquivos.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

17 / 81

Uso do NetBeans

Criando um projeto em C no NetBeans

Alex Helder (IFB)

EDD - Reviso de C

2012/2

18 / 81

Uso do NetBeans

Criando um projeto em C no NetBeans

Alex Helder (IFB)

EDD - Reviso de C

2012/2

19 / 81

Uso do NetBeans

Criando um projeto em C no NetBeans

Alex Helder (IFB)

EDD - Reviso de C

2012/2

20 / 81

Uso do NetBeans

Criando um projeto em C no NetBeans

Alex Helder (IFB)

EDD - Reviso de C

2012/2

21 / 81

Uso do NetBeans

Compilando e executando
O NetBeans preenche o arquivo principal com um esqueleto de cdigo . O arquivo criado pode ser totalmente sobrescrito pelo cdigo que deseje colocar no arquivo. Para compilar o arquivo, clique no boto cujo cone um martelo com uma vassoura. Para executar, clique no boto cujo cone uma seta verde para a direita. A sada do programa aparecer no Netbeans, na caixa de Sada, abaixo do cdigo fonte.
Para que no aparea a mensagem EXECUTAR FALHOU, deixe, ao nal da funo main, o comando return (EXIT_SUCCESS); ou return (0); .
composto pela incluso das bibliotecas stdio.h e stdlib.h; o mtodo main com parmentros argc e argv e retorno do tipo int; uma nica linha de cdigo: return (EXIT_SUCCESS); e algumas linhas de comentrios. Voc pode apagar e escrever um novo do zero.
Alex Helder (IFB) EDD - Reviso de C 2012/2 22 / 81

Uso do NetBeans

Compilando

Alex Helder (IFB)

EDD - Reviso de C

2012/2

23 / 81

Uso do NetBeans

Compilando e executando

Alex Helder (IFB)

EDD - Reviso de C

2012/2

24 / 81

Uso do NetBeans

Executando

Alex Helder (IFB)

EDD - Reviso de C

2012/2

25 / 81

Uso do NetBeans

Acrescentando arquivos ao projeto

1 2 3 4

Clique com o boto direito do mouse sobre o nome do projeto; Clique em Novo; Clique em Arquivo de cdigo-fonte C... ; D um nome ao arquivo e clique em Finalizar. importante observar que cada projeto s pode ter uma nica funo main().

Alex Helder (IFB)

EDD - Reviso de C

2012/2

26 / 81

Uso do NetBeans

Acrescentando arquivos ao projeto

Alex Helder (IFB)

EDD - Reviso de C

2012/2

27 / 81

Uso do NetBeans

Acrescentando arquivos ao projeto

Alex Helder (IFB)

EDD - Reviso de C

2012/2

28 / 81

Uso do NetBeans

Mais informaes

Conguraes e tutoriais sobre como usar o netbeans para programar em C: http://netbeans.org/kb/trails/cnd.html . Foruns diversos na Internet.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

29 / 81

Apresentando ou Coletando Informaes

Apresentando ou Coletando Informaes

Alex Helder (IFB)

EDD - Reviso de C

2012/2

30 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Apresentando informaes

Atravs da funo printf(); necessrio incluir a biblioteca stdio.h.

#include <stdio.h> main() { printf("Ol mundo!"); }

Encontrado no exemplo: ola_mundo.c. Para melhor visualizao da execuo, execute-o em console ou na IDE. Alex Helder (IFB) EDD - Reviso de C 2012/2 31 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Apresentando informaes - Mantendo a janela aberta


Se rodarmos o exemplo anterior em modo texto, veremos a resposta do programa na tela; mas se o formos executar em ambiente grco do Windows, o programa executar e fechar rapidamente, no sendo possvel visualizar a resposta do programa. Para manter a janela aberta no Windows e visualizarmos o resultado do programa em um ambiente grco, podemos usar o comando system("pause") ao m do programa; necessrio incluir a biblioteca stdlib.h.

#include <stdio.h> #include <stdlib.h> main() { printf("Ol mundo!"); system("pause"); }

Encontrado no exemplo: ola_mundo_pause.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 32 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Caracteres especiais
Cdigo \b \f \n \r \t \" \ \0 \\ \v \a \N \xN

Signicado Retrocesso Alimentao de formulrio Nova linha Retorno de carro Tabulao horizontal Aspas duplas Aspas simples Nulo Barra invertida Tabulao vertical Alerta (beep) Constante ocal (onde N uma constante octal) Constante hexadecimal (onde N uma constante hexadecimal)

Algumas demonstraes: caracteres_especiais.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 33 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Apresentando Informaes
Apresentao de valores de variveis:
Usando % seguido do cdigo do formato.

# include <stdio.h> main() { int a = 2; int b = 3; int c = a + b; printf("A soma de %d com %d : %d", a, b, c); }

Exemplo: imprimindo_variaveis.c.
Alex Helder (IFB) EDD - Reviso de C 2012/2 34 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Formatos especcos
Cdigo %c %d %i %e %E %f %g %G %o %s %u %x %X %p %n %%

Formato Caractere Inteiro decimal com sinal Inteiro decimal com sinal Notao cientca (e minsculo) Notao cientca (E maisculo) Ponto utuante decimal Usa %e ou %f, o que for mais curto Usa %E ou %f, o que for mais curto Octal sem sinal String de caracteres Inteiro decimal sem sinal Hexadecimal sem sinal (letras minsculas) Hexadecimal sem sinal (letras maisculas) Apresenta um ponteiro O argumento recebe a quantidade de caracteres que foram escritos Smbolo %
EDD - Reviso de C 2012/2 35 / 81

Algumas demonstraes: formatos_especificos.c.


Alex Helder (IFB)

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Largura mnima: Se faz pela inserso de um nmero inteiro entre o % e o cdigo do formato. Faz com que a representao do nmero tenha pelo menos esta quantidade de caracteres (til para tabelas) .

Exemplo: modificador_largura_minima.c. Exemplo: modificador_precisao.c. Exemplo: modificador_alinhamento.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 36 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Largura mnima: Se faz pela inserso de um nmero inteiro entre o % e o cdigo do formato. Faz com que a representao do nmero tenha pelo menos esta quantidade de caracteres (til para tabelas) . Se o modicador de largura mnima comear com 0, o espao a ser preenchido o ser com o algarismo 0.

Exemplo: modificador_largura_minima.c. Exemplo: modificador_precisao.c. Exemplo: modificador_alinhamento.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 36 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Largura mnima: Se faz pela inserso de um nmero inteiro entre o % e o cdigo do formato. Faz com que a representao do nmero tenha pelo menos esta quantidade de caracteres (til para tabelas) . Se o modicador de largura mnima comear com 0, o espao a ser preenchido o ser com o algarismo 0. Preciso: Se faz pela inserso de um ponto seguido de um nmero inteiro entre o % e o cdigo do formato .

Exemplo: modificador_largura_minima.c. Exemplo: modificador_precisao.c. Exemplo: modificador_alinhamento.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 36 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Largura mnima: Se faz pela inserso de um nmero inteiro entre o % e o cdigo do formato. Faz com que a representao do nmero tenha pelo menos esta quantidade de caracteres (til para tabelas) . Se o modicador de largura mnima comear com 0, o espao a ser preenchido o ser com o algarismo 0. Preciso: Se faz pela inserso de um ponto seguido de um nmero inteiro entre o % e o cdigo do formato . Alinhamento: Se a largura do campo for maior que a largura do contedo, por padro ele ser alinhado direita. Para alinhar esquerda, coloca-se um sinal de negativo - logo aps o % .

Exemplo: modificador_largura_minima.c. Exemplo: modificador_precisao.c. Exemplo: modificador_alinhamento.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 36 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Tamanho de String: Podemos usar dois modicadores a uma string. O primeiro indica a quantidade mnima de caracteres, o segundo especica a quantidade mxima de caracteres. Os dois argumentos sero separados por um ponto .

Exemplo: modificador_tamanho_string.c. Exemplo: modificador_octal_hexadecimal.c. Exemplos: modificador_argumento_constante.c e modificador_argumento_variavel.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 37 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Tamanho de String: Podemos usar dois modicadores a uma string. O primeiro indica a quantidade mnima de caracteres, o segundo especica a quantidade mxima de caracteres. Os dois argumentos sero separados por um ponto . #: Aplicado a formatos de ponto utuante ou notao cientca garante o aparecimento do ponto decimal. Se aplicado a formato octal, exibe um zero esquerda. Se aplicado a formato hexadecimal, exibe 0x esquerda .

Exemplo: modificador_tamanho_string.c. Exemplo: modificador_octal_hexadecimal.c. Exemplos: modificador_argumento_constante.c e modificador_argumento_variavel.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 37 / 81

Apresentando ou Coletando Informaes

Apresentando informaes

Modicadores de formato
Tamanho de String: Podemos usar dois modicadores a uma string. O primeiro indica a quantidade mnima de caracteres, o segundo especica a quantidade mxima de caracteres. Os dois argumentos sero separados por um ponto . #: Aplicado a formatos de ponto utuante ou notao cientca garante o aparecimento do ponto decimal. Se aplicado a formato octal, exibe um zero esquerda. Se aplicado a formato hexadecimal, exibe 0x esquerda . *: Podemos tambm fornecer os modicadores como argumento do printf. Para isso, usamos o marcador * no lugar do modicar e colocamos o argumento na ordem de apario dentro dos argumentos do printf .
Exemplo: modificador_tamanho_string.c. Exemplo: modificador_octal_hexadecimal.c. Exemplos: modificador_argumento_constante.c e modificador_argumento_variavel.c.
Alex Helder (IFB) EDD - Reviso de C 2012/2 37 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Coletando informaes
Atravs da funo scanf(); Tambm necessrio incluir a biblioteca stdio.h; Valor recebido sempre associado a uma varivel;
fundamental o uso do & antes do nome da varivel .

necessrio a identicao do formato do valor coletado.

#include <stdio.h> main() { char s[50]; scanf("%s", &s); }


Posteriormente ser explicado porque necessrio o seu uso. Encontrado no exemplo: coletando_informacoes.c.
Alex Helder (IFB) EDD - Reviso de C 2012/2 38 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Formatos especcos
Cdigo %c %d %i %e %f %g %o %s %u %x %p %n %[ ] Formato Caractere Inteiro decimal Inteiro decimal Ponto utuante Ponto utuante Ponto utuante Octal String de caracteres Inteiro decimal sem sinal Hexadecimal L um ponteiro O argumento recebe a quantidade de caracteres que j foram lidos Busca por um conjunto de caracteres (Scanset)

Algumas demonstraes: coletando_formatos_especificos.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 39 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Formatos especcos Scanset

Podemos denir o conjunto de caracteres que desejamos coletar com o scanf.

Algumas demonstraes: scanset.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 40 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Formatos especcos Scanset

Podemos denir o conjunto de caracteres que desejamos coletar com o scanf. Usamos %[conjunto de caracteres].

Algumas demonstraes: scanset.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 40 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Formatos especcos Scanset

Podemos denir o conjunto de caracteres que desejamos coletar com o scanf. Usamos %[conjunto de caracteres]. O scanf coletar todos os caracteres pertencentes a este conjunto at que encontre um caractere diferente e os armazenar na string correspondente.

Algumas demonstraes: scanset.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 40 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Formatos especcos Scanset

Podemos denir o conjunto de caracteres que desejamos coletar com o scanf. Usamos %[conjunto de caracteres]. O scanf coletar todos os caracteres pertencentes a este conjunto at que encontre um caractere diferente e os armazenar na string correspondente. Se o primeiro caractere do conjunto de caracteres for um acento circunexo , sero coletados todos os caracteres exceto os listados no conjunto.

Algumas demonstraes: scanset.c.


Alex Helder (IFB) EDD - Reviso de C 2012/2 40 / 81

Apresentando ou Coletando Informaes

Colentando informaes

Limpeza de buer de teclado


Um problema muito comum em coleta de informaes do teclado o buer, que muitas vezes armazena um caractere de nova linha ou at mesmo um conjunto de caracteres digitados mas no capturados. Enquanto estes caracteres no forem coletados ou retirados, permanecero no buer para serem coletados. Isso atrapalha a coleta de novas informaes. Para limpar o buer, utilize o comando fflush(stdin);. main() { char a, b; scanf("%c", &a); fflush(stdin); scanf("%c", &b); }

Devido a pressionarmos o boto ENTER para conrmarmos a entrada de dados. Encontrado no exemplo: limpando_buffer.c.
Alex Helder (IFB) EDD - Reviso de C 2012/2 41 / 81

Apresentando ou Coletando Informaes

Outras Entradas e Sadas de Console

Outras Entradas e Sadas de Console

Funo getchar() getche() getch() putchar() gets() puts()

Operao L um caractere do teclado; espera o retorno de carro. L um caractere com eco; no espera o retorno de carro. L um caractere sem eco; no espera o retorno de carro. Escreve um caractere na tela. L uma string do teclado. Escreve uma string na tela.

Exemplo: Exemplo: Exemplo: Exemplo:

ex_getchar.c ex_getche.c ex_getch.c ex_gets_puts.c


EDD - Reviso de C 2012/2 42 / 81

Alex Helder (IFB)

Comentrios

Comentrios

Alex Helder (IFB)

EDD - Reviso de C

2012/2

43 / 81

Comentrios

Comentrios

Pode ser feito de duas formas: // utilizando duas barras inclinadas // antes do comentrio

ou /* utilizando barra inclinada com astersco em torno do comentrio */

Alex Helder (IFB)

EDD - Reviso de C

2012/2

44 / 81

Comentrios

Comentrios

Pode ser usado para duas nalidades:


Correo de Erros; Documentao de Cdigo.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

45 / 81

Comentrios

Comentrios

Pode ser usado para duas nalidades:


Correo de Erros; Documentao de Cdigo.

Comentrios na Correo de Erros:


Comenta-se um bloco suspeito e verica se o erro deixa de acontecer sem aquele bloco.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

45 / 81

Comentrios

Documentao de Cdigo

Se faz atravs de comentrios; til para que o programador se lembre qual o funcionamento do bloco de cdigo implementado; Muito til para que outros programadores compreendam o que estava sendo feito no programa; Extremamente importante para programao em equipes.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

46 / 81

Comentrios

Indentao

a utilizao de diferentes recuos esquerda, de acordeo com os laos onde as linhas se encontram. importante para facilitar na identicao de incio ou m de laos ou funes, correo de bugs, e compreenso do cdigo por parte de outros programadores. A regra bsica de indentao a seguinte:
a cada vez que se abre parenteses, as linhas seguintes passam a ser alinhadas 4 espaos mais direita; a cada vez que se fecha parenteses, as linhas seguintes voltam 4 espaos esquerda.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

47 / 81

Variveis

Variveis

Alex Helder (IFB)

EDD - Reviso de C

2012/2

48 / 81

Variveis

Tipos de Variveis

Tipo char short int long float double

tamanho 8 16 16 ou 32 32 32 64

Extenso -128 a 127 -32768 a 32767 -32768 a 32767 ou -2147483648 a 2147483647 -2147483648 a 2147483647 1.238 a 3.438 com 7 dgitos de preciso 2.2308 a 1.8308 com 19 dgitos de preciso

Depende da plataforma onde eles se encontram. Atualmente s encontramos int com 32 bits. Alex Helder (IFB) EDD - Reviso de C 2012/2 49 / 81

Variveis

Tipos de Variveis Outras variaes


int : char : unsigned char; signed char; short : unsigned short; signed short; short int; unsigned short int; signed short int; long : unsigned long; signed long; long int; unsigned long int; signed long int; unsigned int; signed int; unsigned; signed;

Alex Helder (IFB)

EDD - Reviso de C

2012/2

50 / 81

Variveis

Tipos de Variveis Tipos alternativos

Os dois tipos seguintes so referenciados por alguns autores como tipos vlidos, mas no funcionam com todos os compiladores: long long int : inteiro de 64 bits. long double : ponto utuante de 80 bits.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

51 / 81

Variveis

Tipos de variveis

Caracteres:
Associados com char; Denidos atravs de aspas simples;

char c = z; Texto:
Associados com char[]; Denidos atravs de aspas duplas;

char s[5] = "texto";

Alex Helder (IFB)

EDD - Reviso de C

2012/2

52 / 81

Variveis

Variveis
Declarao:
Tipo da varivel seguido pelo nome:

int var; Inicializao:


Nome da varivel seguido de = e do valor:

var = 5; Variveis podem ser declaradas e inicializadas simultaneamente: int var = 5; Variveis no inicializadas permanecem com o valor presente no espao de memria alocado no momento de inicializao at que lhe seja atribuda um valor (valor no controlado).
Alex Helder (IFB) EDD - Reviso de C 2012/2 53 / 81

Operadores

Operadores

Alex Helder (IFB)

EDD - Reviso de C

2012/2

54 / 81

Operadores

Operadores

Operadores de comparao:
== != > < >= <=

Alex Helder (IFB)

EDD - Reviso de C

2012/2

55 / 81

Operadores

Operadores

Operadores Aritmticos:
+ * / %

Operao de mdulo, = de porcentagem


Alex Helder (IFB) EDD - Reviso de C 2012/2 56 / 81

Operadores

Operadores

Operadores de incremento e decremento:


++ - esquerda, realiza incremento (ou decremento), depois continua a operao; direita, realiza a outra operao com a varivel, depois incrementa (ou decrementa).

Alex Helder (IFB)

EDD - Reviso de C

2012/2

57 / 81

Operadores

Operadores

Operadores Lgicos (Bit a bit):


& | << >>

Alex Helder (IFB)

EDD - Reviso de C

2012/2

58 / 81

Operadores

Operadores

Atribuio:
= += -= *= /= %= &= |= = <<= >>=

Alex Helder (IFB)

EDD - Reviso de C

2012/2

59 / 81

Operadores

Operadores

Operadores Lgicos (simplicados):


&& || !

Aplicam-se a valores booleanos; Se um fator da operao determinar o resultado, ele no calcula o segundo fator.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

60 / 81

Controle de Fluxo

Controle de Fluxo

Alex Helder (IFB)

EDD - Reviso de C

2012/2

61 / 81

Controle de Fluxo

Condicionais - if else
Uma linha: if (comparao) instruo; Um bloco: if (comparao) { instrues; } Um bloco if else: if (comparao) { instrues; } else { outras instrues; }
Alex Helder (IFB) EDD - Reviso de C 2012/2 62 / 81

Controle de Fluxo

Condicionais - if else

Um bloco if else if else: if (comparao) { instrues; } else if(outra comparao) { outras instrues; } else if(nova comparao) { novas instrues; } else { mais outras instrues; }

Alex Helder (IFB)

EDD - Reviso de C

2012/2

63 / 81

Controle de Fluxo

Expresses Condicionais

Realizada atravs do operador ternrio ?; Mesma funo do if else. e1?e2:e3 z = (a>b) ? a : b Se a condio e1 for verdadeira, ser retornado o valor e2; se e1 for falsa, ser retornado o valor e3.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

64 / 81

Controle de Fluxo

Condicionais - switch
Simula o uso de vrias instrues if.
int opcao = 5; switch(opcao) { case 1: iniciaJogo(); break; case 2: abreAjuda(); break; case 4: salvaJogo(); case 7: saiJogo(); break; default: pausaJogo(); }
Alex Helder (IFB) EDD - Reviso de C 2012/2 65 / 81

Controle de Fluxo

Loops - while

Adequado quando no se sabe quantas vezes o bloco deve ser repetido. int cont = 0; while(x < y) { x++; y--; cont++; } Dependendo do resultado da condio testada, o corpo do loop pode no ser executado.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

66 / 81

Controle de Fluxo

Loops - do while

Adequado quando o loop precisa ser executado pelo menos uma vez, porque a condio testada sempre depois do loop. int idade; do { idade = perguntaIdadeUsuario(); } while(idade < 0);

Alex Helder (IFB)

EDD - Reviso de C

2012/2

67 / 81

Controle de Fluxo

Loops - for

Adequado quando se sabe quantas vezes o loop dever ser executado. A declarao possui 3 partes principais (no obrigatrios):
Condio inicial; Teste condicional; Expresso de iterao.

int somatorio; for(i = 0; i <= 10; i++) { somatorio += i; }

Alex Helder (IFB)

EDD - Reviso de C

2012/2

68 / 81

Controle de Fluxo

Loops
break : Utilizados dentro de loops ou switch; Encerra a execuo do loop, continuando a execuo aps o bloco do loop. continue : Utilizado dentro de loops; Encerra a iterao atual do loop e inicia a prxima iterao caso a condio booleana seja atendida. for(i = 0; i< 20; i++) { if (i % 2 == 0) continue; printf("%d par.", i); }

Alex Helder (IFB)

EDD - Reviso de C

2012/2

69 / 81

Controle de Fluxo

goto
No recomendvel; Dene saltos para rtulos denidos no cdigo. for(...) { for(...) { ... if(desastre) { goto erro; } } } ... erro: /* comandos para recuperao e correo */

Alex Helder (IFB)

EDD - Reviso de C

2012/2

70 / 81

Funes

Funes

Alex Helder (IFB)

EDD - Reviso de C

2012/2

71 / 81

Funes

Funes

Modularizam o cdigo; Podem ser usadas para transformar um grande trabalho em diversos trabalhos pequenos; teis tambm para reuso de cdigo.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

72 / 81

Funes

Estrutura de uma funo

Composta por quatro itens:


Nome; Tipo de retorno; Argumentos de Entrada; Corpo.

retorno nome(arg1, arg2, ...){ corpo; }

Alex Helder (IFB)

EDD - Reviso de C

2012/2

73 / 81

Funes

Exemplo

#include <stdio.h> int soma(int a, int b) { int c = a + b; return c; } main() { int x = 6; int y = 2; int z = soma(x, y); printf("%d", z); }

Alex Helder (IFB)

EDD - Reviso de C

2012/2

74 / 81

Funes

Argumentos de Funes

Declara-se o tipo e o nome para cada argumento; Podem haver quantos argumentos forem necessrios; Pode no ter nenhum;
Recomendvel que se indique com a palavra-chave void.

Os argumentos podem ser de qualquer tipo.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

75 / 81

Funes

Retorno de Funes

Declara-se apenas o tipo do retorno; O retorno pode ser de qualquer tipo; S pode ser retornado apenas uma varivel; Caso no tenha nada para retornar, recomendvel que se utilize a palavra-chave void. Se tiver sido declarado um retorno, importante que haja um comando return no m da funo.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

76 / 81

Funes

Comando return
Retorna o valor como resultado da funo. int simples() { int v = 4; return v; } main() { int k = simples(); // k recebe valor 4 } Se a funo no tiver tipo de retorno, o comando return, se houver, no deve trazer nenhum argumento; Quando o comando return executado, a funo se encerra e a execuo volta ao ponto aps a chamada da funo.
Alex Helder (IFB) EDD - Reviso de C 2012/2 77 / 81

Funes

Funes
importante que haja uma declarao da funo que ser utilizada antes de sua chamada. #include<stdio.h> int somatorio(int n); main() { int i = 4; printf("%d %d", i, somatorio(i)); } int somatorio(int n) { int soma = n; while(n != 0) { soma += --n; } return soma; }
Alex Helder (IFB) EDD - Reviso de C 2012/2 78 / 81

Funes

Funes

Funes que no esto no mesmo arquivo precisam da incluso de biblioteca, atravs do comando #include. Bibliotecas padro do C usam < >. Arquivos desenvolvidos por ns mesmos usam " " .

Alex Helder (IFB)

EDD - Reviso de C

2012/2

79 / 81

Funes

Variveis Locais e Globais

Variveis locais so variveis denidas dentro de uma funo;


No so vistas de outros pontos do programa.

Variveis globais so denidas fora de funo;


Todas as funes do arquivo podem us-las.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

80 / 81

Funes

Passagem de Parmetros

Por valor : a forma padro de passar parmetros em C. Alteraes na varivel recebida em uma funo no altera o valor da varivel na funo original. Por referncia : Feita usando ponteiros. Alteraes feita na varivel dentro da funo implica em alterao no valor dentro da funo original.

Alex Helder (IFB)

EDD - Reviso de C

2012/2

81 / 81

Вам также может понравиться