Академический Документы
Профессиональный Документы
Культура Документы
2o semestre de 2012
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.
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
EDD - Reviso de C
2012/2
4 / 81
Caractersticas da Linguagem C
Histrico
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;
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;
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.
EDD - Reviso de C
2012/2
5 / 81
Caractersticas da Linguagem C
Porque o C se popularizou
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.
EDD - Reviso de C
2012/2
6 / 81
Caractersticas da Linguagem C
Caractersticas da Linguagem C
Programao Estruturada;
EDD - Reviso de C
2012/2
7 / 81
Caractersticas da Linguagem C
Caractersticas da Linguagem C
EDD - Reviso de C
2012/2
7 / 81
Caractersticas da Linguagem C
Caractersticas da Linguagem C
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.
EDD - Reviso de C
2012/2
7 / 81
EDD - Reviso de C
2012/2
8 / 81
Processo de Desenvolvimento
Processo de Desenvolvimento
Processo de Desenvolvimento
Processo de Desenvolvimento
Processo de Desenvolvimento
Processo de Desenvolvimento
Execuo
EDD - Reviso de C
2012/2
10 / 81
EDD - Reviso de C
2012/2
11 / 81
EDD - Reviso de C
2012/2
12 / 81
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
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++.
EDD - Reviso de C
2012/2
15 / 81
Uso do NetBeans
EDD - Reviso de C
2012/2
16 / 81
Uso do 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.
EDD - Reviso de C
2012/2
17 / 81
Uso do NetBeans
EDD - Reviso de C
2012/2
18 / 81
Uso do NetBeans
EDD - Reviso de C
2012/2
19 / 81
Uso do NetBeans
EDD - Reviso de C
2012/2
20 / 81
Uso do NetBeans
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
EDD - Reviso de C
2012/2
23 / 81
Uso do NetBeans
Compilando e executando
EDD - Reviso de C
2012/2
24 / 81
Uso do NetBeans
Executando
EDD - Reviso de C
2012/2
25 / 81
Uso do NetBeans
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().
EDD - Reviso de C
2012/2
26 / 81
Uso do NetBeans
EDD - Reviso de C
2012/2
27 / 81
Uso do NetBeans
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.
EDD - Reviso de C
2012/2
29 / 81
EDD - Reviso de C
2012/2
30 / 81
Apresentando informaes
Apresentando informaes
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 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)
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 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
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) .
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.
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 .
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 % .
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 .
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 .
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
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 .
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
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)
Colentando informaes
Colentando informaes
Podemos denir o conjunto de caracteres que desejamos coletar com o scanf. Usamos %[conjunto de caracteres].
Colentando informaes
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.
Colentando informaes
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.
Colentando informaes
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
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.
Comentrios
Comentrios
EDD - Reviso de C
2012/2
43 / 81
Comentrios
Comentrios
Pode ser feito de duas formas: // utilizando duas barras inclinadas // antes do comentrio
EDD - Reviso de C
2012/2
44 / 81
Comentrios
Comentrios
EDD - Reviso de C
2012/2
45 / 81
Comentrios
Comentrios
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.
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.
EDD - Reviso de C
2012/2
47 / 81
Variveis
Variveis
EDD - Reviso de C
2012/2
48 / 81
Variveis
Tipos de Variveis
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
EDD - Reviso de C
2012/2
50 / 81
Variveis
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.
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;
EDD - Reviso de C
2012/2
52 / 81
Variveis
Variveis
Declarao:
Tipo da varivel seguido pelo nome:
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
EDD - Reviso de C
2012/2
54 / 81
Operadores
Operadores
Operadores de comparao:
== != > < >= <=
EDD - Reviso de C
2012/2
55 / 81
Operadores
Operadores
Operadores Aritmticos:
+ * / %
Operadores
Operadores
EDD - Reviso de C
2012/2
57 / 81
Operadores
Operadores
EDD - Reviso de C
2012/2
58 / 81
Operadores
Operadores
Atribuio:
= += -= *= /= %= &= |= = <<= >>=
EDD - Reviso de C
2012/2
59 / 81
Operadores
Operadores
Aplicam-se a valores booleanos; Se um fator da operao determinar o resultado, ele no calcula o segundo fator.
EDD - Reviso de C
2012/2
60 / 81
Controle de Fluxo
Controle de Fluxo
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; }
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.
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.
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);
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.
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); }
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 */
EDD - Reviso de C
2012/2
70 / 81
Funes
Funes
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.
EDD - Reviso de C
2012/2
72 / 81
Funes
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); }
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.
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.
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 " " .
EDD - Reviso de C
2012/2
79 / 81
Funes
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.
EDD - Reviso de C
2012/2
81 / 81