material de apoio C

download material de apoio C

of 301

Transcript of material de apoio C

  • 8/7/2019 material de apoio C

    1/301

    Linguagem CValter Schastai

  • 8/7/2019 material de apoio C

    2/301

    Introduo

  • 8/7/2019 material de apoio C

    3/301

    Programa x Algoritmo Um Programa a formalizao de um

    algoritmo, utilizando alguma ferramenta,

    capaz de permitir que o computador

    possa entender a seqncia de aes.

  • 8/7/2019 material de apoio C

    4/301

    Linguagem do Computador A nica linguagem que o computador

    entende chama-se linguagem de mquina

    Portanto, todos os programas que secomunicam com o computador devem estarem linguagem de mquina

  • 8/7/2019 material de apoio C

    5/301

    Compiladores e Interpretadores A forma como os programas so traduzidos

    para a linguagem de mquina classifica-seem duas categorias:Interpretados

    Compilados

  • 8/7/2019 material de apoio C

    6/301

    Interpretadores L uma instruo, faz consistncia da

    sintaxe e se no houver erro converte-a paralinguagem de mquina para finalmenteexecut-la

    Segue para a prxima instruo, repetindo o

    processo at que a ltima instruo sejaexecutada, ou algum erro seja encontrado

  • 8/7/2019 material de apoio C

    7/301

    Compiladores L uma instruo, faz consistncia da

    sintaxe e se no houver erro converte-a paralinguagem de mquina e, em vez deexecut-la segue para a prxima instruorepetindo o processo at que a ltima

    instruo seja atingida ou algum erro sejaencontrado

  • 8/7/2019 material de apoio C

    8/301

    Compiladores No havendo erros na compilao gerado

    um programa .OBJ

    A partir desse momento, entre em cena olinkeditor, que far a associao entre oprograma .OBJ e a biblioteca padro docompilador

    O produto final criado pelo linkeditor oexecutvel (arquivo com extenso .EXE)

  • 8/7/2019 material de apoio C

    9/301

    Interpretadores x Compiladores

    O interpretador precisa estar presente todas asvezes que um programa executado

    Sendo assim, se uma parte do programanecessitar ser executada muitas vezes, oprocesso ser feito o mesmo nmero de vezes

    Na execuo de um programa compilado, ocompilador no precisa estar presente

  • 8/7/2019 material de apoio C

    10/301

    Interpretadores x Compiladores Programas compilados (arquivos .EXE),

    no permitem alterao, o que protege o

    cdigo fonte A linguagem que utilizaremos nesse curso,

    linguagem C, gera programas compilados

  • 8/7/2019 material de apoio C

    11/301

    A Linguagem C Criada por Dennis M. Ritchie e Ken

    Thompson em 1972

    C uma linguagem muito utilizada naprogramao de qualquer tipo de sistema(clculos matemticos, estruturas de dados,sistemas operacionais, etc)

    Como por exemplo, o sistema operacionalUNIX desenvolvido em C

  • 8/7/2019 material de apoio C

    12/301

    A Linguagem C C suficientemente estruturada para

    encorajar bons hbitos de programao

    Por exemplo, programas em C podem serdesenvolvidos em partes separadas porpessoas distintas e depois unidas em um

    programa final

  • 8/7/2019 material de apoio C

    13/301

    Como Criar um Programa

    Executvel em C Escrever o programa em qualquer editor de texto e

    salv-lo em um arquivo com o sufixo .c (o arquivo

    deve ser salvo no modo texto) Compilar o fonte seguindo as instrues do seu

    compilador (isso criar o arquivo .EXE)

    Atualmente, a maioria dos compiladores possuemuma interface que disponibiliza entrada do cdigofonte (editor prprio) e funes para compilao(por exemplo, ctrl+F9, no Turbo C++ 4.0)

  • 8/7/2019 material de apoio C

    14/301

    O Compilador que Utilizaremos No nosso curso utilizaremos o compilador

    da borland Turbo C++ 4.0

  • 8/7/2019 material de apoio C

    15/301

  • 8/7/2019 material de apoio C

    16/301

    Algumas Funes Bsicas da

    Interface do Compilador Compilar: F9

    Compilar e Executar: Ctrl + F9

    Help Especfico: Cursor na palavra e Ctrl +F1

  • 8/7/2019 material de apoio C

    17/301

    Primeiro Programa

    #include #include

    void main(){

    printf("Primeiro Programa!");getch();

    }

    Escreve na Tela

    Pegar um caractere do Teclado

    arquivo que contm a sub-rotina printf() arquivo que contm a sub-rotina getch()

  • 8/7/2019 material de apoio C

    18/301

    A Estrutura Bsica de um

    Programa C Um programa C consiste em uma ou vriasfunes

    Forma Geral: cabealho;void main(){

    instrues;}

    tipo outras_funes(){

    instrues;}

  • 8/7/2019 material de apoio C

    19/301

    A Estrutura Bsica de um

    Programa C A funo main() a primeira funo a ser

    executada no cdigo (tambm obrigatria)

    O identificador void indica que a funono retorna qualquer valor

    A seo cabealho usada para a definio

    das bibliotecas que sero utilizadas noprograma (por exemplo, #include )

  • 8/7/2019 material de apoio C

    20/301

    A Estrutura Bsica de um

    Programa C Alm da funo main() outras funes podem

    ser colocadas no programa, essas novas

    funes devem possuir um tipo de retorno (ouvoid) e um nome identificando-as

    Na seqncia do curso, falaremos mais sobre

    definio de funes

  • 8/7/2019 material de apoio C

    21/301

    Tipos de Dados e Variveis

  • 8/7/2019 material de apoio C

    22/301

    Tipos de Dados

    Um tipo de dado define a quantidade dememria necessria para alojar o dado, aabrangncia de valores possveis (escala) e

    o tipo de operaes que podem serexecutadas com este dado Definir um tipo de dado, significa informar

    ao compilador de que forma este dado deveser interpretado e de como ele deve sergerenciado na memria

  • 8/7/2019 material de apoio C

    23/301

    Tipos BsicosTIPO DESCRIO BYTES FAIXA

    int Inteiro com sinal 2 -32768 a 32767

    float Real com sinal 4 3.4 x 10 -38 at 3.4 x 10 38 (+ e -)

    char Um ou mais caracteres 1 1 caractere

    Caso voc necessite de faixas maiores de valores,existem modificadores de tipos bsicos (unsigned,por exemplo) e tambm outros tipos de dados,como por exemplo, long e double

  • 8/7/2019 material de apoio C

    24/301

    Variveis Uma varivel um espao da memria,

    reservado quando da declarao da varivel

    e que ser ocupado por um tipo de dadoonde o valor do dado ir variar ao longo davida til do bloco de instrues ao qual a

    varivel pertence

  • 8/7/2019 material de apoio C

    25/301

    Variveis

  • 8/7/2019 material de apoio C

    26/301

    Declarando Variveis

    A declarao de variveis consiste eminformar ao compilador o tipo de dado e onome da varivel que ir ocupar uma certaquantidade de memria

    Por enquanto, iremos declarar nossasvariveis apenas no interior da funomain() (chamadas variveis locais)

    tipo nome_da_varivel;

    Sintaxe:

  • 8/7/2019 material de apoio C

    27/301

    Nomes de Variveis O primeiro caractere deve ser uma letra ou um

    sublinhado _

    Os demais caracteres podem ser letras, nmerosou sublinhados

    Apenas os primeiros 31 caracteres sosignificativos

    O nome da varivel deve ser nico no programa

    Vale ressaltar que a linguagem C Case Sentive

  • 8/7/2019 material de apoio C

    28/301

    Atribuindo Valores s Variveis

    Para atribuir um valor (dado) a uma variveldeve ser utilizado o operador de atribuio=

    Podemos atribuir o valor a uma varivelquando da sua declarao, ou aps a suadeclarao

    Exemplo:int quantidade_produto = 15;quantidade_produto = 15;

  • 8/7/2019 material de apoio C

    29/301

    Exerccio Sabendo que duas variveis a e b, possuem

    respectivamente os valores 5 e 10, construa

    um programa em C para trocar os valoresdestas variveis, ou seja, no final doprograma a deve possuir o valor 10 e b o

    valor 5.

  • 8/7/2019 material de apoio C

    30/301

    Soluo

    void main()

    { int a = 5, b = 10, c;c = a;a = b;b = c;

    }

  • 8/7/2019 material de apoio C

    31/301

    Sada de Dados

  • 8/7/2019 material de apoio C

    32/301

    Introduo Toda sada de dados manipulada por

    funes

    Para incluir estas funes em nossosprogramas temos que dizer ao compiladorem que biblioteca de arquivos headerestas funes esto contidas

    Para a funo de sada de dados queusaremos a biblioteca stdio.h ser suficiente

  • 8/7/2019 material de apoio C

    33/301

    printf()

    Sintaxe:printf(expresso de controle, lista de argumentos);

  • 8/7/2019 material de apoio C

    34/301

    printf() Expresso de Controle

    A expresso de controle pode conter caracteres

    que sero exibidos na tela Tambm podem ser inseridos manipuladores de

    controle e cdigos de formatao que indicam oformato em que os argumentos devem serimpressos

  • 8/7/2019 material de apoio C

    35/301

    printf()Alguns Manipuladores de Controle

    \n Nova linha

    \xN Imprime caractere ASCII (N em hexa)

    \ Imprime aspas

    \\ Imprime barra

  • 8/7/2019 material de apoio C

    36/301

    printf()Alguns Cdigos de Formatao

    %c char

    %d int

    %f float

    %s string

    %ld long%lf double

  • 8/7/2019 material de apoio C

    37/301

    printf() Lista de argumentos:

    A lista de argumentos pode conter qualquer

    quantidade de argumentos Cada argumento deve ser separado por vrgula

  • 8/7/2019 material de apoio C

    38/301

    printf()

    #include #include

    void main(){char sexo = 'F';int idade = 15;float altura = 1.75;

    printf("Escrevendo um caractere: %c \n",sexo);printf("Escrevendo um inteiro: %d \n",idade);printf("Escrevendo um real: %f ",altura);getch();

    }

  • 8/7/2019 material de apoio C

    39/301

    printf()#include #include

    void main()

    {char sexo = 'F';int idade = 15;float altura = 1.75;

    printf("Escrevendo um caractere: %c \n",sexo);

    printf("Escrevendo um inteiro: %d \n",idade);printf("Escrevendo um real: %5.2f ",altura); // _1.75getch();

    }

    Quantidade total de caracteres exibidos.

    Caso o argumento tenha uma quantidademaior, no haver truncamento. Caso sejamenor sero colocados brancos a esquerda

    Quantidade de casas decimais com arredondamento

  • 8/7/2019 material de apoio C

    40/301

    printf()#include #include

    void main()

    {char sexo = 'F';int idade = 15;float altura = 1.75;

    printf("Escrevendo um caractere: %c \n",sexo);

    printf("Escrevendo um inteiro: %5.3d \n",idade); //__015printf("Escrevendo um real: %f ",altura);getch();

    }

    Quantidade total de caracteres exibidos.Caso seja menor ser complementado combrancos a esquerda

    Nmero de caracteres do argumento, caso seja menor sercomplementado com 0s esquerda

  • 8/7/2019 material de apoio C

    41/301

    putchar() A funo putchar() mais uma das funes

    de sada existentes na biblioteca stdio.h

    Esta funo permite escrever na tela apenasum caractere

    Sintaxe:

    putchar(caractere);

  • 8/7/2019 material de apoio C

    42/301

    Entrada de Dados

  • 8/7/2019 material de apoio C

    43/301

    Introduo

    Assim como a sada de dados tratada comfunes da biblioteca stdio.h, tambm a

    entrada de dados tratada dessa forma

  • 8/7/2019 material de apoio C

    44/301

    scanf()

    A funo scanf() para entrada de dados oque a funo printf() para sada de dados

    A funo scanf() utiliza os mesmos cdigos

    para formatar dados, porm agora, paraentrada de dados

    Vale ressaltar que os argumentos de scanf()

    devem ser endereos de variveis O endereo de uma varivel dado pelooperador & antes do nome da varivel

  • 8/7/2019 material de apoio C

    45/301

    scanf()

    Sintaxe:

    scanf(expresso de controle,lista de argumentos);

  • 8/7/2019 material de apoio C

    46/301

    scanf()#include #include

    void main(){

    float anos, dias;printf("Digite sua idade em anos: ");scanf("%f",&anos);

    dias = anos * 365;printf("Sua idade em dias e' = %.0f ",dias);getch();

    }

  • 8/7/2019 material de apoio C

    47/301

    getche() e getch() Essas duas funes esto definidas na

    biblioteca conio.h e so utilizadas para ler

    um caractere no instante em que datilografado, sem esperar [enter] A funo getche() l o caractere do teclado

    e permite que seja impresso na tela

    Esta funo no aceita argumentos edevolve o caractere lido para a funo que achamou

  • 8/7/2019 material de apoio C

    48/301

    getche() e getch()

    A funo getch() l o caractere do teclado eno permite que seja impresso na tela

    Como getche(), esta funo no aceitaargumentos e devolve o caractere lido paraa funo que a chamou

  • 8/7/2019 material de apoio C

    49/301

    getche() e getch()#include #include

    void main()

    {char c;printf("Pressione uma tecla : ");c = getche();printf("\nLeitura feita com getche()");

    printf("\nPressione novamente uma tecla: ");c = getch();printf("\nLeitura feita com getch()");getch();

    }

  • 8/7/2019 material de apoio C

    50/301

    Operadores

  • 8/7/2019 material de apoio C

    51/301

    Operadores Matemticos

    Para efetuar clculos envolvendo valoresnumricos podem ser utilizados os seguintes

    operadores matemticos+ : Adio- : Subtrao* : Multiplicao

    / : Diviso% : Retorna o resto de uma diviso

  • 8/7/2019 material de apoio C

    52/301

    Operadores de Incremento e

    Decremento++ : Incrementa de 1 seu operando

    -- : Decrementa de 1 seu operando

    Os dois operadores trabalham de doismodos:Pr-fixado: O operador aparece antes do nome

    da varivelPs-fixado: O operador aparece seguindo o

    nome da varivel

  • 8/7/2019 material de apoio C

    53/301

    Operadores de Incremento e

    Decremento Em ambos os casos a varivel alterada, no

    entanto, no modo pr-fixado a varivel

    incrementada antes de seu valor seu usado eno modo ps-fixado a varivel incrementada depois de seu valor ser usado

  • 8/7/2019 material de apoio C

    54/301

    Operadores de Incremento e

    Decremento Exemplo:

    n = 5;x = n++;

    // x = 5

    // n = 6

    n = 5;x = ++n;

    // x = 6

    // n = 6

  • 8/7/2019 material de apoio C

    55/301

    Operadores Aritmticos de

    Atribuio Estes operadores simplificam a definio de

    operaes aritmticas

    Eles inicialmente realizam a operaomatemtica envolvida e em seguidaatribuem o resultado a uma varivel

    Exemplo:x = x + 10;pode ser substitudo por:x += 10;

  • 8/7/2019 material de apoio C

    56/301

    Operadores Aritmticos de

    Atribuio+= : Soma os operandos e o resultado atribui

    varivel esquerda

    -= : Diminui os operandos e o resultadoatribui varivel esquerda

    *= : Multiplica os operandos e o resultadoatribui varivel esquerda

    /= : Divide os operandos e o resultadoatribui varivel esquerda

  • 8/7/2019 material de apoio C

    57/301

  • 8/7/2019 material de apoio C

    58/301

    Operadores Relacionais

    Os operadores relacionais so muitoutilizados nas tomadas de decises

    == : igual!= : diferente> : maior que< : menor que>= : maior ou igual que

  • 8/7/2019 material de apoio C

    59/301

    Operadores Lgicos

    Utilizados normalmente junto com osoperadores relacionais

    && : lgico E|| : lgico OU

    ! : lgico de negao

  • 8/7/2019 material de apoio C

    60/301

    Precedncia dos Operadores

    Operadores Precedncia

    ! maior (1)

    * / % 2+ - 3

    > < >= =< 4

    == != 5

    && 6

    || menor (7)

  • 8/7/2019 material de apoio C

    61/301

    Exerccios

    #include #include

    void main(){

    int a,b,c;printf("Digite 3 numeros: \n");scanf("%d %d %d",a,b,c);

    printf("\n %d %d %d",a,b,c);getch();}

    Qual o erro lgico do programa abaixo ?

  • 8/7/2019 material de apoio C

    62/301

    Exerccios

    Faa um programa para ler a base e a alturade um tringulo. Em seguida, escreva a rea

    do mesmo.Lembre: rea = ( Base * Altura ) / 2

  • 8/7/2019 material de apoio C

    63/301

    Soluo#include #include

    void main()

    { float base, altura, area;printf("\nEntre com a base do triangulo: ");scanf("%f",&base);printf("\nEntre com a altura do triangulo: ");scanf("%f",&altura);area = (base * altura) / 2;printf("\nA area do triangulo e %f",area);getch();

    }

  • 8/7/2019 material de apoio C

    64/301

    Introduo a Manipulao de

    Strings

  • 8/7/2019 material de apoio C

    65/301

    Introduo

    String uma das mais teis e importantesformas de dados em C e usada para

    armazenar e manipular textos comopalavras, nomes e sentenas

    Em C, string um vetor unidimensional do

    tipo char, terminada pelo caractere null(\0)

  • 8/7/2019 material de apoio C

    66/301

    Introduo

    Cada caractere de uma string pode seracessado individualmente, o que

    proporciona uma grande flexibilidade aosprogramas que processam texto

  • 8/7/2019 material de apoio C

    67/301

    Declarando uma String

    O tipo char deve ser usado antes do nomedado para a varivel string

    Aps o nome da varivel string declara-se otamanho da string entre colchetes

    Por exemplo:

    char nome[50];

  • 8/7/2019 material de apoio C

    68/301

    Lendo Strings com scanf()

    Para ler uma string podemos fazer uso dafuno scanf(%s,&string)

    Porm essa funo quando encontra ocaractere branco ou espao encerra aleitura

    Portanto muitas vezes no a funo idealpara leitura de strings

  • 8/7/2019 material de apoio C

    69/301

  • 8/7/2019 material de apoio C

    70/301

    Exemplo

    #include #include

    void main(){

    char nome[50];printf("Entre com um nome: ");gets(nome);printf("O nome que voce digitou foi %s",nome);getch();

    }

  • 8/7/2019 material de apoio C

    71/301

    Inicializando Strings

    Uma string pode ser inicializada nomomento em que declarada

    Exemplo:

    char nome[] = Marta;

  • 8/7/2019 material de apoio C

    72/301

    Acessando Posies Individuais

    de uma String Muitas vezes necessrio manipular

    caracteres individuais em uma string

    A linguagem C possui uma forma todaespecial de permitir tal operao, atravs douso de colchetes ( [ ] ) logo aps o nome da

    varivel do tipo string, e o nmero docaractere que se deseja manipular entre oscolchetes.

  • 8/7/2019 material de apoio C

    73/301

    Acessando Posies Individuais

    de uma String A primeira posio de uma string em C

    acessada pelo ndice 0, a segunda pelo

    ndice 1, e assim por diante Exemplo:

    char curso[] = LPI

    L PIcurso[0]

    curso[1]

    curso[2]

  • 8/7/2019 material de apoio C

    74/301

    Exerccio

    Construa um programa para ler uma stringque represente uma data no seguinte

    formato: dd/mm/aaaa. Aps lida a string,escreva o dia, ms e ano (em nmeros) dadata entrada pelo usurio.

  • 8/7/2019 material de apoio C

    75/301

    Soluo

    #include #include #include

    void main(){char data[9];printf("Entre com uma data no formato dd/mm/aaaa: ");gets(data);printf("\nO dia e %c%c",data[0],data[1]);

    printf("\nO mes e %c%c",data[3],data[4]);printf("\nO ano e %c%c%c%c",data[6],data[7],data[8],data[9]);

    getch();}

  • 8/7/2019 material de apoio C

    76/301

    Comandos de Seleo nica

  • 8/7/2019 material de apoio C

    77/301

    Introduo

    Na linguagem C temos comandos paraavaliar expresses e selecionar aquela ou

    aquelas que forem verdadeiras Mais precisamente isto significa executar o

    bloco de comandos que est subordinado

    expresso que resultou em verdadeiro

  • 8/7/2019 material de apoio C

    78/301

    if Sem Alternativa

    Sintaxe:

    if(condio){

    instrues;}

  • 8/7/2019 material de apoio C

    79/301

    if Sem Alternativa

    Neste tipo de avaliao condicional h umaexpresso sendo avaliada e caso ela resulte

    em verdadeiro o bloco de instrues que asegue executado Caso resulte em falso o bloco saltado Os delimitadores de bloco de instrues { e

    } somente so obrigatrios caso o blocotenha mais que uma instrues

  • 8/7/2019 material de apoio C

    80/301

    Exemplo#include #include

    void main()

    {int a,b;printf("Entre com dois numeros: \n");scanf("%d %d",&a,&b);if(a == b)

    { printf("Os Numeros sao Iguais");}getch();

    }

  • 8/7/2019 material de apoio C

    81/301

    if Com Alternativa

    Sintaxe:

    if(condio){instrues;

    }else

    {instrues

    }

  • 8/7/2019 material de apoio C

    82/301

    if Com Alternativa

    Nesta seleo h uma expresso de teste,que se a expresso resultar em verdadeiro

    executado o bloco de instrues que segue oif, caso contrrio, executado o bloco quesegue o else

    E l

  • 8/7/2019 material de apoio C

    83/301

    Exemplo#include

    #include

    void main(){

    int a,b;printf("Entre com dois numeros: \n");

    scanf("%d %d",&a,&b);if(a == b){

    printf("Os Numeros sao Iguais");}

    else{printf("Os Numeros sao Diferentes");

    }getch();

    }

    if M i C di

  • 8/7/2019 material de apoio C

    84/301

    if Mais que uma Condio

    Sintaxe: if(condio){instrues;

    }else if(condio){

    instrues;}else if(condio){

    instrues;}

    ....else{

    instrues;}

    E l

  • 8/7/2019 material de apoio C

    85/301

    Exemplo#include

    #include

    void main(){

    int a,b;printf("Entre com dois numeros: \n");scanf("%d %d",&a,&b);

    if(a > b){printf("O primeiro e maior que o segundo");

    }else if (a < b){

    printf("O primeiro e menor que o segundo");

    }else{

    printf("Os numeros sao iguais");}getch();

    }

  • 8/7/2019 material de apoio C

    86/301

    Operador Ternrio ? :

    Sintaxe:

    Expresso_de_teste ?Expresso_executada_se_verdadeiro :Expresso_executada_se_falso;

  • 8/7/2019 material de apoio C

    87/301

    Operador Ternrio ? :

    Um comando idntico ao comando deseleo onde h uma expresso de teste com

    uma alternativa (if-else) o operador ? : Este operador prefervel quando fornecessrio utilizar uma expresso de testemais sinttica

    Este operador denominado de ternriopois requer trs operandos

  • 8/7/2019 material de apoio C

    88/301

    Exemplo#include #include

    void main(){

    int a,b;

    printf("Entre com dois numeros: \n");scanf("%d %d",&a,&b);

    a == b ? printf("Iguais") : printf("Diferentes");

    // tambem poderiamos fazer

    // printf("%s", a == b ? "Iguais" : "Diferentes");

    getch();}

  • 8/7/2019 material de apoio C

    89/301

    Outro Exemplo

    int a,b,maior;

    printf("Entre com dois numeros: \n");scanf("%d %d",&a,&b);

    maior = a > b ? a : b;printf("\n Maior = %d",maior);

    maiorrecebe o valor de a ou de b

  • 8/7/2019 material de apoio C

    90/301

    Exerccios

    Construa um programa capaz de informar seum nmero inteiro par ou impar

  • 8/7/2019 material de apoio C

    91/301

    Soluo

    #include #include

    void main(){

    int numero;printf("Entre com um numero: ");scanf("%d",&numero);

    if((numero % 2) == 0)printf("Numero par");

    else printf("Numero impar");

    // (numero % 2) == 0 ? printf("Par") : printf("Impar");getch();

    }

  • 8/7/2019 material de apoio C

    92/301

    Exerccio

    Complemente o programa feito paracalcular a mdia de um aluno do curso de

    programao de computadores, adicionandouma sada para o usurio da situao doaluno (aprovado, reprovado ou final)

  • 8/7/2019 material de apoio C

    93/301

    Soluo

    .

    .

    .

    if(media >= 7)printf("Aprovado");

    else if (media >= 4)printf("Final");

    else printf("Reprovado");...

  • 8/7/2019 material de apoio C

    94/301

    Comandos de Seleo Mltipla

  • 8/7/2019 material de apoio C

    95/301

    switch ... case

    Sintaxe:

    switch(expresso) {case constante1: {bloco de instrues; break;}case constante2: {bloco de instrues; break;}...case constante3: {bloco de instrues; break;}[default {bloco de instrues;}]

    }

  • 8/7/2019 material de apoio C

    96/301

    switch ... case

    O comando switch...case testasucessivamente o valor de uma expresso

    em relao a uma srie de constantes Quando o teste resultar na igualdade de

    valores, os comando subordinados

    constante (int ou char) so ento executados

    Exemplo

  • 8/7/2019 material de apoio C

    97/301

    Exemplo#include #include

    void main(){

    float num1, num2;char operador;

    printf("Digite: Primeiro Numero, Operador, Segundo Numero:\n");scanf("%f %c %f",&num1,&operador,&num2);

    switch(operador){

    case '+': {printf("\nResultado: %f",num1 + num2); break;}

    case '-

    ': {printf("\nResultado: %f",num1-

    num2); break;}case '*': {printf("\nResultado: %f",num1 * num2); break;}case '/': {printf("\nResultado: %f",num1 / num2); break;}

    }getch();

    }

  • 8/7/2019 material de apoio C

    98/301

    Exerccio

    Faa um programa que leia um nmero querepresente um determinado ms do ano.

    Aps a leitura escreva por extenso qual oms lido. Caso o nmero digitado no estejana faixa de 1..12 escreva uma mensageminformando o usurio do erro da digitao.

    Soluo

  • 8/7/2019 material de apoio C

    99/301

    Soluo#include

    #include

    void main(){

    int mes;printf("Digite um numero entre 1 e 12: ");scanf("%d",&mes);

    switch(mes){

    case 1: {printf("\nJaneiro"); break;}case 2: {printf("\nFevereiro"); break;}case 3: {printf("\nMarco"); break;}// ...case 12: {printf("\nDezembro"); break;}default: {printf("\nNumero Invalido");}

    }getch();

    }

  • 8/7/2019 material de apoio C

    100/301

    Comandos de Repetio de

    Blocos

  • 8/7/2019 material de apoio C

    101/301

    Introduo

    Os comandos de repetio de blocos emlinguagens de programao, tambm so

    conhecidos como comandos de iterao, oucomandos de lao ou ainda loop deinstrues

    Estes comandos executam os blocos de

    instrues subordinados enquanto umadeterminada condio permanecer comoverdadeira

  • 8/7/2019 material de apoio C

    102/301

    Comando - for

    O comando for o mais utilizado quandodevemos repetir a execuo de um ou mais

    blocos de instrues, um determinadonmero de vezes

  • 8/7/2019 material de apoio C

    103/301

    Comando - for

    Sintaxe:

    for(inicializao; teste; incremento){instrues;

    }

  • 8/7/2019 material de apoio C

    104/301

    Comando - for

    A primeira expresso utilizada para ainicializao, onde normalmente

    inicializada uma varivel contadora A inicializao executada somente umavez, no momento em que o lao ativado

    O teste, normalmente uma expresso

    relacional, que testa a validade de novaexecuo do lao

  • 8/7/2019 material de apoio C

    105/301

    Comando - for

    O incremento, modifica o valor da varivelutilizada para controle do lao

    Normalmente um incremento de 1 novalor da varivel

  • 8/7/2019 material de apoio C

    106/301

    Exemplo#include #include

    void main(){

    int i;for(i=1;i

  • 8/7/2019 material de apoio C

    107/301

    Exemplos Flexibilidade - for

    #include #include

    void main(){

    int x,y;for(x=0,y=0; x+y

  • 8/7/2019 material de apoio C

    108/301

    Exemplos Flexibilidade - for

    #include #include

    void main(){

    char c;for( ; (c=getch()) != 's'; )

    { printf("\n%c",c);}

    }

  • 8/7/2019 material de apoio C

    109/301

    Exerccio

    Faa um programa que leia uma string doteclado e aps isso escreva ela invertida na

    tela do usurio

    Soluo

  • 8/7/2019 material de apoio C

    110/301

    Soluo#include

    #include #include

    void main(){

    char str[50];int i;printf("Entre com uma palavra: ");gets(str);

    for(i=(strlen(str)-1);i>=0;i--)

    {printf("%c",str[i]);

    }getch();

    }

  • 8/7/2019 material de apoio C

    111/301

    Exerccio

    Fazer um programa, usandoobrigatoriamente a estrutura for, que

    calcule escreva o valor de S onde:

    S! 1

    1

    3

    2

    5

    3

    7

    4

    99

    50...

    Soluo

  • 8/7/2019 material de apoio C

    112/301

    Soluo#include

    #include

    void main(){

    int num, den;

    float s=0;

    for(num=1,den=1;num

  • 8/7/2019 material de apoio C

    113/301

    Exerccio

    Faa um programa que leia 20 valores reaise escreva seu somatrio (use a estrutura for)

    S l

  • 8/7/2019 material de apoio C

    114/301

    Soluo#include #include

    void main(){

    int num,i, s=0;

    printf("Entre com 5 numeros\n");

    for(i=1;i

  • 8/7/2019 material de apoio C

    115/301

    Comando - while

    Comando normalmente utilizado quando necessrio repetir um bloco de instrues

    sem saber de antemo quantas vezes estebloco dever ser executado

  • 8/7/2019 material de apoio C

    116/301

    Comando - while

    Sintaxe:

    while(condio){instrues;

    }

  • 8/7/2019 material de apoio C

    117/301

    Comando - while

    Quando precisamos testar uma condioantes mesmo de iniciar a execuo de um

    bloco de instrues devemos ento utilizar ocomando while com teste no incio

    E l

  • 8/7/2019 material de apoio C

    118/301

    Exemplo

    #include #include

    void main()

    {int i=1;while(i

  • 8/7/2019 material de apoio C

    119/301

    Exerccio

    Faa um programa para calcular um valor Aelevado a um expoente B. Os valores A e B

    devero ser lidos, onde a > 0, b >= 0

    Sol o

  • 8/7/2019 material de apoio C

    120/301

    Soluo

    #include #include

    void main(){

    int a, b, resultado = 1;printf("Entre com a base e o expoente: \n");scanf("%d %d",&a,&b);while(b > 0){

    resultado = resultado * a;

    b--;}printf("Resultado: %d",resultado);getch();

    }

  • 8/7/2019 material de apoio C

    121/301

    Exerccio

    Faa um programa para calcular N!, ondeN >= 0.

    Soluo

  • 8/7/2019 material de apoio C

    122/301

    #include

    #include

    void main(){

    long int n, resultado=1;printf("Entre com um numero: \n");scanf("%ld",&n);

    while(n > 0){

    resultado = resultado * n;

    n--;}printf("O fatorial eh igual a %ld",resultado);getch();

    }

  • 8/7/2019 material de apoio C

    123/301

    Comando do ... while

    Para executar um bloco de instrues,subordinado a um lao de repetio, pelo

    menos uma vez, temos o comandodo...while

  • 8/7/2019 material de apoio C

    124/301

    Comando do ... while

    Sintaxe:

    do{

    instrues;}while (condio);

    Exemplo

  • 8/7/2019 material de apoio C

    125/301

    Exemplo

    #include #include

    void main(){

    int i=1;

    do{

    printf("\n %d",i);i++;

    }while(i

  • 8/7/2019 material de apoio C

    126/301

    Exerccios

    Faa um programa para calcular a srieFibonacci at o vigsimo termo. A srie tem

    a seguinte forma: 1,1,2,3,5,8,13,21,34,(use obrigatoriamente a estrutura do...while)

    Soluo

  • 8/7/2019 material de apoio C

    127/301

    #include

    #include

    void main(){

    int ant=1, prox=1, novo, cont=2;printf("%d, %d",ant,prox);

    do{

    novo = ant + prox;printf(, %d",novo);ant = prox;

    prox = novo;cont++;}while(cont

  • 8/7/2019 material de apoio C

    128/301

    Exerccios

    Faa um programa para ler um valor X ecalcular Y = X+2X+3X+4X+5X++20X

    (use a estrutura do...while)

    Soluo

  • 8/7/2019 material de apoio C

    129/301

    #include

    #include

    void main(){

    int x, y=0, i=1;

    printf("Entre com um valor para x: ");scanf("%d",&x);

    do{

    y = y + (i * x);

    i++;}while(i

  • 8/7/2019 material de apoio C

    130/301

    Comandos de Desvio de

    Execuo Muitas vezes necessrio interromper o

    fluxo normal de processamento de um lao

    de repetio, independente deste lao tersido implementado com for ou while

    Para fazer isso, temos dois comandos dedesvio: o break e o continue

  • 8/7/2019 material de apoio C

    131/301

    O Comando break;

    O comando break desvia o fluxo deprocessamento para fora do comando de

    repetio Mais precisamente, para a primeira linha

    aps o trmino do comando de repetio

  • 8/7/2019 material de apoio C

    132/301

    O Comando continue;

    O comando continue transfere o fluxo deprocessamento para o teste do comando de

    repetio Usando o continue com o for, antes do teste

    de associado ao for ser verificado ocorre oincremento das variveis na seo deincremento do for

    void main(){

    float idade, total_idade=0, total_pessoa=0;h

  • 8/7/2019 material de apoio C

    133/301

    char resp;while(1){

    printf("\nIDADE: ");scanf("%f",&idade);if(idade

  • 8/7/2019 material de apoio C

    134/301

    Exerccio

    Altere o programa que calcula o fatorial deum nmero, de maneira que seja perguntado

    ao usurio se ele deseja calcular ou no ofatorial de um prximo nmero.

    void main(){

    double n resultado;

  • 8/7/2019 material de apoio C

    135/301

    double n, resultado;char c;

    while(1){

    resultado = 1;printf("Entre com um numero: \n");scanf("%lf",&n);

    while(n > 0)

    {resultado = resultado * n;n--;

    }printf("O fatorial eh igual a %lf \n",resultado);printf("\nDeseja Continuar(s/n)? ");c = getch();

    if(c == 's')continue;

    else break;clrscr();

    }}

  • 8/7/2019 material de apoio C

    136/301

    Funes Definidas pelo Usurio

  • 8/7/2019 material de apoio C

    137/301

    Introduo

    Funes dividem grandes tarefas de computaoem tarefas menores

    Em C, uma funo uma unidade de cdigo deprograma autnoma desenhada para cumprir umatarefa particular

    Provavelmente a principal razo da existncia de

    funes impedir que o programador tenha deescrever o mesmo cdigo repetidas vezes

  • 8/7/2019 material de apoio C

    138/301

    Sintaxe

    tipo nome_funo(parmetros com tipos)

    {instrues;

    }

    i d

  • 8/7/2019 material de apoio C

    139/301

    Tipo de uma Funo

    O tipo de uma funo determinado pelo tipo devalor que ela retorna e no pelo tipo de seusargumentos

    Os tipos possveis de retorno de uma funo sotodos os tipos que o C suporta

    Para que um valor seja retornado pela funodeve-se utilizar o comando return(valor), onde

    valor o dado que se deseja retornar Quando uma funo no retorna um valor deve-se

    declarar a palavra reservada void no lugar do tipo

    d

  • 8/7/2019 material de apoio C

    140/301

    Parmetros de uma Funo

    Em C, a maioria dos argumentos de funesso passados por valor

    Isto significa que funo chamada dadauma cpia dos valores dos argumentos, eela cria outras variveis temporrias paraarmazenar estes valores

    Para todos os parmetros da funo necessrio definir seu tipo de dado

    P i d F

  • 8/7/2019 material de apoio C

    141/301

    Prottipos de Funo

    Prottipo de funo significa declarar aocompilador o formato das funes que serocriadas por voc programador

    Isto feito, normalmente aps a definiodo cabealho do programa (includes)

    Apenas a primeira linha da funo deve ser

    declarada e adicionalmente deve sercolocado o smbolo de ponto e vrgula (;)

    Exemplo 1

  • 8/7/2019 material de apoio C

    142/301

    void linha(); // prottipo da funo

    void main(){

    linha();printf("\xDB PROGRAMA EM C \xDB\n");linha();getch();

    }

    void linha() // funo propriamente dita{

    int j;for(j=1;j

  • 8/7/2019 material de apoio C

    143/301

    float potencia(float b, float e);

    void main(){

    float base, expoente;printf("Entre com a base e o expoente: \n");scanf("%f %f",&base,&expoente);printf("Resultado = %f",potencia(base,expoente));getch();

    }

    float potencia(float b, float e){

    int resultado = 1;while(e > 0)

    {resultado = resultado * b;e--;

    }return(resultado);

    }

    V i i L i Gl b i

  • 8/7/2019 material de apoio C

    144/301

    Variveis Locais e Globais

    Locais: Variveis que so declaradas dentro de funes

    Seu escopo de visibilidade somente para afuno a qual ela pertence

    Globais: Variveis declaradas fora de qualquer funo

    Este tipo de varivel pode ser acessada portodas as funes que fazem parte do cdigofonte

    Exemplo

  • 8/7/2019 material de apoio C

    145/301

    float valor_dolar, real; // variveis globais

    void converte(float qtd_dolar);

    void main(){

    float montante;printf("Digite o valor do Dolar em Reais: ");

    scanf("%f",&valor_dolar);printf("Digite um montante em Dolar: ");scanf("%f",&montante);converte(montante);printf("\nMontante em Reais = %f",real);getch();

    }

    void converte(float qtd_dolar){

    real = qtd_dolar * valor_dolar;}

    E i

  • 8/7/2019 material de apoio C

    146/301

    Exerccios

    Um nmero primo qualquer inteiropositivo que divisvel apenas por si

    prprio e por 1. Escreva uma funo querecebe um inteiro positivo e, se este nmerofor primo, retorna 1, caso contrrio, retorna0.

  • 8/7/2019 material de apoio C

    147/301

    E i

  • 8/7/2019 material de apoio C

    148/301

    Exerccios

    Construa um programa para calcular:

    !17

    1 nn!

    Obs.: Use funes

    int fat(int numero);

    void main(){

  • 8/7/2019 material de apoio C

    149/301

    {float somatorio=0;

    int i;for(i=1;i=1;i--

    ){resultado_fat = resultado_fat * i;

    }return(resultado_fat);

    }

  • 8/7/2019 material de apoio C

    150/301

    O Pr-Processador C

  • 8/7/2019 material de apoio C

    151/301

    I t d

  • 8/7/2019 material de apoio C

    152/301

    Introduo

    Ele atua antes da compilao de umprograma, fazendo pesquisa e substituiono cdigo fonte antes de iniciar acompilao

    Como j dito, a substituio basea-se emdiretivas definidas no corpo do cdigo fonte

    As diretivas em sempre iniciam com ocaracter #

    Introd o

  • 8/7/2019 material de apoio C

    153/301

    Introduo

    Algumas das principais diretivas dalinguagem C so as seguintes: #include #define #error #ifdef

    #undef entre outras

    A diretiva #define

  • 8/7/2019 material de apoio C

    154/301

    A diretiva #define

    Com a diretiva #define definimos umidentificador (escrito em maisculo) quedever ser localizado

    Em seguida, aps pelo menos um espaoem branco, definimos o texto resultante quesubstituir o identificador localizado

    A operao toda (definio mais pesquisa esubstituio) denominada de macro

    Exemplo

  • 8/7/2019 material de apoio C

    155/301

    #include #include

    #define PI 3.14159

    float area(float r);

    void main()

    {float raio;printf("Digite o raio da esfera: ");scanf("%f",&raio);printf("A area da esfera eh %f",area(raio));getch();

    }

    float area(float r){

    return(4 * PI * r * r);}

    Por Que Usar #define ?

  • 8/7/2019 material de apoio C

    156/301

    PorQue Usar #define ?

    Talvez voc se pergunte o que ganhamossubstituindo, no programa anterior, PI por 3.14159

    Suponhamos que voc tenha um programa em quea constante 3.14159 aparea muitas vezes

    Suponha, ainda, que agora voc queira umapreciso maior e queira trocar 3.14159 por

    3.141592

    Por Que Usar #define ?

  • 8/7/2019 material de apoio C

    157/301

    PorQue Usar #define ?

    Voc dever ir passo a passo atravs doprograma e trocar cada ocorrncia que

    encontrar da constante Entretanto, se voc tiver definido 3.14159como sendo PI na diretiva #define, vocdever somente fazer uma troca

    Outro Exemplo

  • 8/7/2019 material de apoio C

    158/301

    Outro Exemplo

    #include #include

    #define SOMA(x,y) (x+y)

    void main(){

    printf("Resultado: %d",SOMA(3,5));

    getch();}

    Outro Exemplo

  • 8/7/2019 material de apoio C

    159/301

    Outro Exemplo#include #include

    #define ERRO printf("\nERRO: NUMERO INVALIDO")

    void main(){

    int i;printf("Digite um numero de 0 a 100: ");scanf("%d",&i);

    if( (i100))ERRO;

    getch();}

    Exerccios

  • 8/7/2019 material de apoio C

    160/301

    Exerccios

    Torne o cdigo abaixo interpretvel pelocompilador C

    algoritmoinicio

    escreva("teste");espere;

    fim

  • 8/7/2019 material de apoio C

    161/301

  • 8/7/2019 material de apoio C

    162/301

    Classes de Armazenamento

    Introduo

  • 8/7/2019 material de apoio C

    163/301

    Introduo

    Todas as variveis em C tm dois atributos: umtipo e uma classe de armazenamento

    Os tipos ns j conhecemos, e as classe dearmazenamento que veremos sero as seguintes: auto

    extern

    static register

    Classe auto

  • 8/7/2019 material de apoio C

    164/301

    C asse auto

    A maioria das variveis que declaramos atagora esto confinadas nas funes que asusam

    Isto , so visveis somente s funesonde esto declaradas Tais variveis so chamadas locais ou

    automticas, so criadas quando a funo chamada e destrudas quando a funotermina a sua execuo

    Classe auto

  • 8/7/2019 material de apoio C

    165/301

    Classe auto

    As variveis declaradas dentro de umafuno so automticas por default

    Variveis automticas so as mais comunsdentre as quatro classes

    A classe de variveis automticas pode ser

    explicitada usando-se a palavra auto

    Classe auto

  • 8/7/2019 material de apoio C

    166/301

    Classe auto

    void main(){

    auto int n;}

    EQUIVALENTE A

    void main()

    { int n;}

    Classe extern

  • 8/7/2019 material de apoio C

    167/301

    Todas as variveis declaradas fora dequalquer funo tm a classe dearmazenamento extern

    Variveis com este tipo de atributo seroconhecidas por todas as funes declaradasdepois dela

    A declarao de variveis externas feita damesma maneira como declaramos variveisdentro do bloco de uma funo

    Classe extern

  • 8/7/2019 material de apoio C

    168/301

    Classe extern

    #include #include

    int n=10;

    void main(){

    extern n;

    printf("%d",n);getch();

    }

    Classe extern

  • 8/7/2019 material de apoio C

    169/301

    Classe extern

    A palavra extern indica que a funo usaruma varivel externa

    Este tipo de declarao, entretanto, no obrigatria se a definio original ocorre nomesmo arquivo fonte

    Lembre-se que variveis externas retm

    seus valores durante toda a execuo doprograma

    Classe static

  • 8/7/2019 material de apoio C

    170/301

    Classe static

    Variveis static de um lado se assemelhams automticas, pois so conhecidas

    somente as funes que as declaram e deoutro lado se assemelham s externas poismantm seus valores mesmo quando afuno termina

    Classe static

  • 8/7/2019 material de apoio C

    171/301

    Classe static

    Usa-se variveis declaradas como staticnormalmente para permitir que variveis

    locais guardem seus valores mesmo aps otrmino da execuo do bloco onde sodeclaradas

    Classe static

  • 8/7/2019 material de apoio C

    172/301

    void soma();

    void main(){

    soma();soma();soma();getch();

    }

    void soma(){

    static int i=0;i++;printf("i = %d \n",i);

    }

    Classe register

  • 8/7/2019 material de apoio C

    173/301

    Classe register

    A classe de armazenamento register indicaque a varivel associada deve ser guardadafisicamente numa memria de acesso

    chamada registrador Um registrador da mquina um espao

    onde podemos armazenar um int ou um char

    Cada mquina oferece um certo nmero deregistradores que podem ser manuseadospelos usurios

    Classe register

  • 8/7/2019 material de apoio C

    174/301

    Classe register

    Basicamente variveis register so usadaspara aumentar a velocidade de

    processamento Fortes candidatas a este tratamento so asvariveis de laos

    Segue a seguir um exemplo:

    #include

    void main(){

  • 8/7/2019 material de apoio C

    175/301

    {int i, j;register int m,n;long t;

    t = time(0);for(j=0;j

  • 8/7/2019 material de apoio C

    176/301

    Entrada e Sada com cin e cout

    Introduo

  • 8/7/2019 material de apoio C

    177/301

    Introduo

    Os objetos cin e cout so usados somenteem compiladores orientados a objetos

    Esses objetos no funcionam quando ocompilador no suporta orientao a objetos

    Se o compilador suporta orientao aobjetos necessrio incluir a biblioteca

    cout

  • 8/7/2019 material de apoio C

    178/301

    cout

    O objeto cout est associado sada devideo

    um dispositivo de sada que distingue otipo de dado

    Portanto no necessrio declarar o tipo aser enviado a sada, como necessariamenteo , quando trabalhamos com o C

    cout

  • 8/7/2019 material de apoio C

    179/301

    cout

    Sintaxe:

    cout

  • 8/7/2019 material de apoio C

    180/301

    e p o

    #include #include #include

    void main(){

    cout

  • 8/7/2019 material de apoio C

    181/301

    O objeto de dados cin um dispositivo queenvia o valor recebido para uma varivel

    O objeto cin est associado ao teclado um dispositivo de entrada de dados que

    distingue o tipo de dado

    cin

  • 8/7/2019 material de apoio C

    182/301

    Sintaxe:

    cin >> Varivel

    Exemplo

  • 8/7/2019 material de apoio C

    183/301

    #include #include #include

    void main(){

    int numero;cout > numero;cout

  • 8/7/2019 material de apoio C

    184/301

    Altere o programa feito para dizer se umnmero primo, de maneira que ele utilize

    apenas os comandos cin e cout para entradae sada de dados

    #include int primo(int numero);void main(){

    int entrada;//printf("Digite um numero: ");

  • 8/7/2019 material de apoio C

    185/301

    cout > entrada;if(primo(entrada))

    //printf("\nNumero Primo");cout

  • 8/7/2019 material de apoio C

    186/301

    Variveis Compostas

    Homogneas

    Introduo

  • 8/7/2019 material de apoio C

    187/301

    Uma varivel do tipo composta homognea usada para representar uma certaquantidade de valores homogneos

    Imagine o seguinte problema: Guardar na memria do computador 50 notas

    de prova. Calcular e mostrar a mdia dessas

    notas.

    Introduo

  • 8/7/2019 material de apoio C

    188/301

    Pelo que conhecemos at o momento dalinguagem C, a nica forma para resolvereste problema declararmos 50 variveis e

    atribuir as 50 notas a essas variveis evidente que precisamos de outra maneira

    para referenciar tais colees de dados

    similares

    Introduo

  • 8/7/2019 material de apoio C

    189/301

    Para tanto, foi criado um novo conceito paraalocao de memria sendo, desta forma,tambm criado uma nova maneira de definirvariveis, a qual foi denominada de varivelindexada.

    Introduo

  • 8/7/2019 material de apoio C

    190/301

    Uma varivel indexada corresponde a umaseqncia de posies de memria, a qualdaremos nico Nome, sendo que cada umadestas pode ser acessada atravs do queconhecemos por ndice.

    O ndice corresponde normalmente a um

    valor nmerico

    Introduo

  • 8/7/2019 material de apoio C

    191/301

    Cada uma das posies de memria de umavarivel indexada pode receber valores nodecorrer do programa como se fosse umavarivel comum, a nica diferena reside nasintaxe de utilizao desta varivel.

    Variveis Indexadas

  • 8/7/2019 material de apoio C

    192/301

    Unidimensionais Tambm conhecida por Vetor

    Unidimensional

    Um vetor unidimensional aquele em que oacesso a um de seus componentes feitoatravs de um nico ndice

    Declarando um VetorUnidimensional

  • 8/7/2019 material de apoio C

    193/301

    Sintaxe:Tipo Nome[tamanho];

    Onde: Tipo: Declara o tipo de dado que cadaelmento ir conter

    Nome: Identificador do Vetor

    Tamanho: Define quantos elementosconter o vetor

    Referenciando Elementos do

  • 8/7/2019 material de apoio C

    194/301

    Vetor Uma vez declarado o vetor, precisamos deum modo de referenciar seus elementosindividualmente

    Isto feito atravs de um ndice entrecolchetes seguindo o nome do vetor

    Vetor[ndice]

    Referenciando Elementos do

  • 8/7/2019 material de apoio C

    195/301

    Vetor Atribuindo valores as posies do vetorNomeVetor[ndice] = Valor;

    Lendo valores do vetor

    printf(%d,NomeVetor[ndice]);Variavel = NomeVetor[ndice];

    Exemplo#define NUM_NOTAS 50

  • 8/7/2019 material de apoio C

    196/301

    void main(){float nota[NUM_NOTAS];float soma=0;int i;for(i=0;i

  • 8/7/2019 material de apoio C

    197/301

    Em C a inicializao de um vetor pode serfeita em tempo de compilao

    Exemplo:

    float nota[3] = {0,0,0};

    Exerccio

  • 8/7/2019 material de apoio C

    198/301

    Faa um programa que leia, via teclado, 200valores do tipo inteiro e os guarde namemria. Aps isso: Emita um relatrio com todos os nmeros pares

    que voc leu.

    Determine qual o menor e o maior nmero do

    vetor Determine a somatria dos elementos do vetor

    Soluo

  • 8/7/2019 material de apoio C

    199/301

    int vetor[TAM];int i,soma=0,maior,menor;for(i=0;i

  • 8/7/2019 material de apoio C

    200/301

    [ ];

    menor = vetor[0];for(i=1;i maior)maior = vetor[i];

    if(vetor[i] < menor)menor = vetor[i];

    }printf("\nMaior = %d, Menor = %d",maior,menor);

    printf("\nSomatoria: ");for(i=0;i

  • 8/7/2019 material de apoio C

    201/301

    Faa um programa para ler uma seqnciade 40 notas e mostrar quais as notas maioresque a mdia dessas notas

  • 8/7/2019 material de apoio C

    202/301

    Variveis Indexadas

  • 8/7/2019 material de apoio C

    203/301

    Bidimensionais Tambm conhecida por Matriz

    Um vetor bidimensional aquele em que o

    acesso a um de seus componentes feitopor meio de dois ndices (comumentechamados de linha e coluna)

    Declarando uma Matriz

    Sintaxe:

  • 8/7/2019 material de apoio C

    204/301

    Sintaxe:

    Tipo NomeMatriz[QtdLinhas][QtdColunas];

    Onde:

    Tipo: Declara o tipo de dado que cadaelemento ir conter

    NomeMatriz: Identificador da Matriz

    QtdLinha e QtdColunas: Define quantoselementos conter a matriz (linha x coluna)

    Referenciando Elementos da

  • 8/7/2019 material de apoio C

    205/301

    Matriz Uma vez declarada a matriz, precisamos deum modo de referenciar seus elementosindividualmente

    Isto feito atravs de dois ndices entrecolchetes seguindo o nome do vetor

    Matriz[linha][coluna]

  • 8/7/2019 material de apoio C

    206/301

    Exemplo#define TAM 3void main(){

  • 8/7/2019 material de apoio C

    207/301

    int matriz[TAM][TAM];int linha, coluna;for(coluna=0;coluna

  • 8/7/2019 material de apoio C

    208/301

    Em C a inicializao de uma matriz tambmpode ser feita em tempo de compilao

    Exemplo:int matriz[3][3] = {{0,0,0},

    {0,0,0},

    {0,0,0}};

  • 8/7/2019 material de apoio C

    209/301

    #define TAM 4void main(){

    int matriz[TAM][TAM] = {{0,1,2,3},{1,0,1,2},{2,1,0,5},{3,2,5,0}};

    int linha, coluna, simetrica=1;

  • 8/7/2019 material de apoio C

    210/301

    for(linha=0;linha

  • 8/7/2019 material de apoio C

    211/301

    Dada uma matriz 3x4, faa um programaque determine sua transposta e a imprima

    Soluo#define TAML 3

  • 8/7/2019 material de apoio C

    212/301

    #define TAML 3

    #define TAMC 4void main(){

    int matriz[TAML][TAMC] = {{0,1,2,3},{1,0,1,2},{2,1,0,5}};

    int linha, coluna;for(coluna=0;coluna

  • 8/7/2019 material de apoio C

    213/301

    Dadas duas matrizes 4x4, faa um programaque some as duas e gera uma terceira matrizcom o resultado.

  • 8/7/2019 material de apoio C

    214/301

    Exerccio

  • 8/7/2019 material de apoio C

    215/301

    Dadas duas matrizes de ordem 3x2 e 2x3,faa um programa que calcule o produtodessas matrizes e o imprima para o usurio.

    Exemplo:

    3 12 0

    4 6

    2 0 3

    7 5 8

    (3 * 2) + (1 * 7) (3 * 0) + (1 * 5) ...

    (2 * 2) + (0 * 7)

    void main(){

    int m1[3][2] = {{0,1},{1,0},{2,1}};int m2[2][3] = {{0,1,2},{1,0,1}};int lm1 cm2 i r;

  • 8/7/2019 material de apoio C

    216/301

    int lm1, cm2, i, r;

    for(lm1=0;lm1

  • 8/7/2019 material de apoio C

    217/301

    Dada uma matriz (NxN) de inteiros,construa um programa para solicitar umnmero do usurio e verifique se estenmero pertence a matriz

    Vetores como Argumentos deFunes

  • 8/7/2019 material de apoio C

    218/301

    Temos visto exemplos de passagem de

    vrios tipos de variveis como argumentos

    C permite tambm passar uma matriz parauma funo

    Vejamos o seguinte exemplo:

    int max(int vet[]);void main(){

    int vetor[TAM];int i = 0;do

  • 8/7/2019 material de apoio C

    219/301

    {printf("Entre com um numero: ");scanf("%d",&vetor[i]);i++;

    }while(i

  • 8/7/2019 material de apoio C

    220/301

    A parte crtica a ser considerada aqui

    como foi passada a matriz para a funo

    Para tanto, usa-se unicamente o nome damatriz

    O nome de uma matriz desacompanhado decolchetes equivalente ao endereo damatriz

  • 8/7/2019 material de apoio C

    221/301

    Exerccio

  • 8/7/2019 material de apoio C

    222/301

    Construa uma funo em C para copiar umasub-string de uma string. A funo devepossuir os seguintes parmetros: String de origem

    Posio para inicio da cpia

    Quantidade de caracteres a serem copiados

    String que conter a sub-string copiada

    void substr(char str_origem[], int i, int qtdade, char sub_str[]);

    void main(){

    char str[10] = "Faculdade";

  • 8/7/2019 material de apoio C

    223/301

    char parte_str[10];substr(str,0,2,parte_str);printf("%s",parte_str);getch();

    }

    void substr(char str_origem[], int i, int qtdade, char sub_str[]){

    int nc;for(nc=0;nc

  • 8/7/2019 material de apoio C

    224/301

    A passagem de uma matriz para uma funo

    similar passagem de um vetor

    O mtodo de passagem do endereo damatriz para a funo idntico, noimportando quantas dimenses tem amatriz, visto que sempre passamos o

    endereo da matriz

    Matrizes como Argumentos deFunes

  • 8/7/2019 material de apoio C

    225/301

    Entretanto, a declarao da matriz na funo

    diferente

    necessrio informar o nmero de colunasda matriz que funo receber

    void qualquer_funcao(int matriz[][TAMC])

    {}

    Exerccio

  • 8/7/2019 material de apoio C

    226/301

    Construa uma funo para mostra atransposta de uma matriz (passe a matrizcomo argumento da funo)

    Soluo

  • 8/7/2019 material de apoio C

    227/301

    void transposta(int m_origem[][TAMC]){

    int linha, coluna;for(coluna=0;coluna

  • 8/7/2019 material de apoio C

    228/301

    Manipulao de Strings :Funes para Manipulao

    A Funo strcmp()

  • 8/7/2019 material de apoio C

    229/301

    Analisemos o seguinte problema:

    Void main()

    {char str_a[10], str_b[10];

    if(str_a == str_b)printf(Iguais);

    }

    A Funo strcmp()

  • 8/7/2019 material de apoio C

    230/301

    Este programa no trabalhar corretamente,pois str_a e str_b so endereos

    Sendo assim, a expresso str_a == str_b nopergunta se as strings so iguais, mas sim seseus endereos so iguais

    Uma comparao de strings deve sempre

    ser feita por meio da funo strcmp()

    A Funo strcmp()

  • 8/7/2019 material de apoio C

    231/301

    A funo retorna 0 se as strings so iguais eoutro nmero qualquer caso contrrio

    void main(){

    char str_a[10]="teste", str_b[10]="teste";

    if(strcmp(str_a,str_b) == 0)printf("Iguais");

    getch();}

    A Funo strcat()

  • 8/7/2019 material de apoio C

    232/301

    A funo strcat() concatena duas strings,isto , junta uma string ao final de outra

    Ela toma dois endereos de string comoargumento e copia a segunda string no finalda primeira e esta combinao gera umanova primeira string

    A segunda string no alterada

    A Funo strcat()

  • 8/7/2019 material de apoio C

    233/301

    void main(){

    char str_a[10]="Teste", str_b[10]=" de LPI";strcat(str_a,str_b);printf("%s",str_a);getch();

    }

    A Funo strcpy()

  • 8/7/2019 material de apoio C

    234/301

    A funo strcpy() copia uma string em outrastring

    void main(){

    char str_a[10]="LPI", str_b[10];strcpy(str_b,str_a);

    printf("%s",str_b);getch();}

    Exerccio

  • 8/7/2019 material de apoio C

    235/301

    Encontre no help do seu compilador C asfunes para tornar um texto todo em letrasminsculas e para tornar um texto todo emmaisculas. Aplique essas funes emalgum programa em C.

  • 8/7/2019 material de apoio C

    236/301

    Soluo

  • 8/7/2019 material de apoio C

    237/301

    int num_vogal(char v, char str[]){

    int cont = 0, i;

    for(i=0;i

  • 8/7/2019 material de apoio C

    238/301

    Dado um vetor com 50 elementos inteiros,faa um programa que verifique se um dadovalor existe neste vetor. Use uma funoonde o retorno deve ser a posio donmero procurado no vetor ou 1 caso onmero no exista.

    Soluo

  • 8/7/2019 material de apoio C

    239/301

    int procura(int num, int vet[]){

    int i;

    for(i=0;i

  • 8/7/2019 material de apoio C

    240/301

    Os Argumentos da Funomain()

  • 8/7/2019 material de apoio C

    241/301

    argc e argv

  • 8/7/2019 material de apoio C

    242/301

    Voc usa dois argumentos intrnsecos argv e argc para receber os argumentos dalinha de comando

    Estes so os nicos argumentos que main()pode ter

    O parmetro argc contm o nmero de

    argumentos na linha de comando e uminteiro

    argc e argv

  • 8/7/2019 material de apoio C

    243/301

    Ele ser pelo menos 1, porque o nome doprograma se qualifica como o primeiroargumento

    O parmetro argv um ponteiro para umvetor de strings

    Assim sendo, todos os argumentos entrados

    por linha de comando so consideradosstrings

    Exemplo entrada.cpp

  • 8/7/2019 material de apoio C

    244/301

    #include #include

    int main(int argc, char *argv[]){

    if(argc != 2)printf("Voce esqueceu de digitar seu nome!");

    else printf("Hello, %s", argv[1]);getch();

    }

    argc e argv

  • 8/7/2019 material de apoio C

    245/301

    Os argumentos passados para o programadevem ser separados por espaos

    A linguagem C, no considera a vrgula, oponto-e-vrgula e outros como separadores

    Exemplo soma.cpp

  • 8/7/2019 material de apoio C

    246/301

    #include #include #include

    int main(int argc, char *argv[]){

    printf("%d", atoi(argv[1]) + atoi(argv[2]));getch();

    }

  • 8/7/2019 material de apoio C

    247/301

  • 8/7/2019 material de apoio C

    248/301

    Exerccio

  • 8/7/2019 material de apoio C

    249/301

    Construa um programa que receba a entradade um nmero passado como argumento ecalcule o fatorial deste nmero

    Soluo#include

    void main(int argc char *argv[])

  • 8/7/2019 material de apoio C

    250/301

    void main(int argc, char *argv[]){

    if(argc < 2)printf("Voce esqueceu o numero!");

    else{

    int resultado = 1, n;n = atoi(argv[1]);while(n > 0){

    resultado = resultado * n;n--;

    }printf("O fatorial eh igual a %d",resultado);}getch();

    }

    Exerccio

  • 8/7/2019 material de apoio C

    251/301

    Construa um programa que receba a entradade uma string passada como argumento emostre o nmero de vogais existentes na

    string

    Soluovoid main(int argc, char *argv[]){

    int i cont=0;

  • 8/7/2019 material de apoio C

    252/301

    int i, cont=0;for(i=0;i

  • 8/7/2019 material de apoio C

    253/301

    Operaes com Arquivos emDisco

    Introduo

  • 8/7/2019 material de apoio C

    254/301

    Operaes em discos so executadas ementidades chamadas arquivos

    Um arquivo uma coleo de bytesreferenciados por um nome nico

    O acesso ao arquivo (leitura ou gravao)pode ser feito tanto em modo texto como

    binrio

    Introduo C oferece um pacote de funes de biblioteca que

    it i d t d

  • 8/7/2019 material de apoio C

    255/301

    nos permite acessar arquivos de quatro modosdiferentes

    CARACTERE (modo texto): getc() e putc()

    STRING (modo texto): fgets() e fputs()

    FORMATADA (modo texto): fscanf() e fprintf()

    REGISTRO (modo binrio): fread() e fwrite()

  • 8/7/2019 material de apoio C

    256/301

  • 8/7/2019 material de apoio C

    257/301

  • 8/7/2019 material de apoio C

    258/301

    A Funo fopen()

    A funo fopen() utilizada para abrir umarq i o do disco (carregar a estr t ra FILE)

  • 8/7/2019 material de apoio C

    259/301

    arquivo do disco (carregar a estrutura FILE) Ela retorna um ponteiro para a estrutura

    FILE

    A funo fopen() possui como primeiroparmetro uma string que indica o caminhoe nome do arquivo a ser aberto

    O segundo parmetro da funo fopen() omodo que arquivo ser aberto (veja os tipospossveis no slide seguinte)

    A Funo fopen()

    M d b t d i

  • 8/7/2019 material de apoio C

    260/301

    Modos para abertura de arquivo: r : Abrir um arquivo texto para leitura. O arquivo

    deve estar presente no disco. w : Abrir um arquivo texto para gravao. Se o

    arquivo estiver presente ele ser destrudo ereinicializado. Se no existir, ele ser criado.

    a : Abrir um arquivo texto para gravao. Os dadossero adicionados ao fim do arquivo existente, ou umnovo arquivo ser criado.

    r+, w+ e a+ : Como a descrio dos anteriores,porm ambas, leitura ou gravao podem ser utilizadas

    A Funo fopen()

    l

  • 8/7/2019 material de apoio C

    261/301

    Exemplo:

    FILE *fptr;fptr = fopen(arq.txt,w);

    A Funo fclose()

    Q d i

  • 8/7/2019 material de apoio C

    262/301

    Quando terminamos as operaes em umarquivo precisamos fech-lo

    Fechar um arquivo provoca dois efeitos:Qualquer coisa que permanece no buffer

    gravada

    Libera a estrutura FILE para que seja utilizada

    para abertura de outro arquivo

    A Funo fclose()

    E l

  • 8/7/2019 material de apoio C

    263/301

    Exemplo:

    FILE *fptr;fptr = fopen(arq.txt,w);// Operaes com o arquivofclose(fptr);

  • 8/7/2019 material de apoio C

    264/301

    Operaes com Arquivos emDisco

    Gravando e Lendo um ArquivoCaractere a Caractere

    Exemplo

    #include

  • 8/7/2019 material de apoio C

    265/301

    #include #include

    void main()

    { FILE *fptr;char ch;fptr = fopen("arqtext.txt","w");while((ch=getche()) != '\r')

    putc(ch,fptr);fclose(fptr);

    }

    A Funo putc()

    A f t () t

  • 8/7/2019 material de apoio C

    266/301

    A funo putc() grava um caractere em umarquivo

    No exemplo, putc() toma um caractere(desde que este no seja o ) e ograva no arquivo cuja estrutura FILE apontada por fptr (ponteiro para o arquivo)

    Exemplo

    #include #include

  • 8/7/2019 material de apoio C

    267/301

    #include conio.h#include

    void main(){

    FILE *fptr;int ch;fptr = fopen("arqtext.txt","r");while((ch=getc(fptr)) != EOF)

    printf("%c",ch);fclose(fptr);getch();

    }

  • 8/7/2019 material de apoio C

    268/301

    Exerccio

    C t t

  • 8/7/2019 material de apoio C

    269/301

    Construa um programa que conte aquantidade de caracteres do interior de umaarquivo texto

    Soluo#include

    #include

  • 8/7/2019 material de apoio C

    270/301

    #

    void main(){

    FILE *fptr;int cont=0;fptr = fopen("arqtext.txt","r");while(getc(fptr) != EOF)

    cont++;

    fclose(fptr);printf("%d",cont);getch();

    }

    Exerccio

    Complemente o programa anterior para

  • 8/7/2019 material de apoio C

    271/301

    Complemente o programa anterior paracontar apenas as vogais

    Soluovoid main(){

    FILE *fptr;int ch, cont=0;

  • 8/7/2019 material de apoio C

    272/301

    int ch, cont 0;fptr = fopen("arqtext.txt","r");while((ch = getc(fptr)) != EOF)

    switch (ch){

    case 'a' : {cont++;break;}case 'e' : {cont++;break;}case 'i' : {cont++;break;}case 'o' : {cont++;break;}case 'u' : {cont++;break;}

    }fclose(fptr);printf("%d",cont);getch();

    }

  • 8/7/2019 material de apoio C

    273/301

    Operaes com Arquivos emDisco

    Gravando e Lendo um Arquivo Linhaa Linha

    Exemplo#include

    #include #include

  • 8/7/2019 material de apoio C

    274/301

    #include

    void main(){

    FILE *fptr;char string[51];fptr = fopen("arqtext.txt","w");while(strlen(gets(string))>0){

    fputs(string,fptr);

    fputs("\n",fptr);}fclose(fptr);

    }

    A Funo fputs()

    A funo fputs() grava uma string em um

  • 8/7/2019 material de apoio C

    275/301

    A funo fputs() grava uma string em umarquivo

    No exemplo, fputs() grava o contedo davarivel string no arquivo que apontadopor fptr (ponteiro para o arquivo)

    Vale ressaltar que a funo fputs() no

    coloca, automaticamente, o caractere denova-linha no fim de cada linha

    Exemplo

    #include

    #include #include

  • 8/7/2019 material de apoio C

    276/301

    #include

    void main(){

    FILE *fptr;char string[51];fptr = fopen("arqtext.txt","r");while(fgets(string,51,fptr) != NULL)

    printf("%s",string);fclose(fptr);getch();

    }

    A Funo fgets()

    A funo fgets() o complemento de

  • 8/7/2019 material de apoio C

    277/301

    A funo fgets() o complemento defputs(), isto , fgets() l uma linha por vezde um arquivo texto

    No exemplo, fgets() faz a leitura de umastring, do arquivo texto, de tamanho 51 eadiciona o contedo na varivel string

    fgets() retorna NULL quando chega ao finaldo arquivo

    A Funo fgets()

    A funo fgets() inclui o caractere de nova

  • 8/7/2019 material de apoio C

    278/301

    A funo fgets() inclui o caractere de novalinha e o caractere de fim de string ao finalda string

  • 8/7/2019 material de apoio C

    279/301

    Operaes com Arquivos emDisco

    Gravando um Arquivo de FormaFormatada

    Exemplovoid main()

    { FILE *fptr;

  • 8/7/2019 material de apoio C

    280/301

    char titulo[51];float preco;fptr = fopen("arqtext.txt","w");do

    {printf("\nDigite o titulo e preco: ");scanf("%s %f",titulo,&preco);fprintf(fptr,"%s %f",titulo,preco);printf("Continua s/n");

    } while (getche()!= 'n');fclose(fptr);}

    A Funo fprintf()

    Com a funo fprintf() torna-se possvel

    formatar dados de vrias maneiras,i l i l d i l

  • 8/7/2019 material de apoio C

    281/301

    formatar dados de vrias maneiras,inclusive escrever um valor de uma varivelnumrica em um arquivo

    No exemplo, fprintf() foi utilizada paraescrever no arquivo o contedo de duasvariveis, uma do tipo string e outra do tipofloat

    fprintf() assemelha-se muito a funoprintf()

    A Funo fprintf()

    Vale ressaltar que os dados escritos por

  • 8/7/2019 material de apoio C

    282/301

    Vale ressaltar que os dados escritos porfprintf() so todos (independente do tipo)gravados como caracteres

    Exemplo

    void main()

  • 8/7/2019 material de apoio C

    283/301

    void main(){

    FILE *fptr;char titulo[51];

    float preco;fptr = fopen("arqtext.txt","r");while(fscanf(fptr,"%s %f",titulo,&preco) != EOF)

    printf("%s %f \n",titulo,preco);fclose(fptr);getch();

    }

  • 8/7/2019 material de apoio C

    284/301

  • 8/7/2019 material de apoio C

    285/301

    Soluo

    void main(){

  • 8/7/2019 material de apoio C

    286/301

    FILE *fptr;char string[61];int cont=0;fptr = fopen("arqtext.txt","r");

    while(fgets(string,61,fptr) != NULL){

    cont++;printf("%s",string);

    }fclose(fptr);printf("\nNumero Linhas = %d",cont);getch();

    }

    O A i

  • 8/7/2019 material de apoio C

    287/301

    Operaes com Arquivos emDisco

    Gravando um Arquivo na FormaRegistro

    Introduo

    Ns j vimos como nmeros podem ser

  • 8/7/2019 material de apoio C

    288/301

    Ns j vimos como nmeros podem sergravados usando as funes de leitura egravao formatada: fscanf() e fprintf()

    Entretanto, guardar nmeros nos formatosoferecidos por estas funes pode tomar umgrande espao em disco, pois cada dgito

    armazenado como um caractere

    Introduo

    Estas funes apresentam ainda um outro

  • 8/7/2019 material de apoio C

    289/301

    Estas funes apresentam ainda um outroproblema: no a maneira direta de ler eescrever tipos de dados complexos como

    vetores, matrizes e estruturas Matrizes e estruturas so manuseadas

    ineficientemente escrevendo cada elemento

    da matriz um por vez

    Introduo

    O modo registro grava nmeros em

  • 8/7/2019 material de apoio C

    290/301

    g garquivos em disco no formato binrio

    Dessa forma, inteiros so gravados em dois

    bytes, nmeros em ponto flutuante emquatro bytes, etc Tambm: vetores, matrizes e estruturas

    podem ser gravadas com uma simplesinstruo

    void main(){

    struct {char titulo[30];int codigo;float preco;

    } livro;

    char numstr[81];

  • 8/7/2019 material de apoio C

    291/301

    char numstr[81];FILE *fptr;fptr = fopen("livros.dat","wb");do{

    printf("\nDigite o titulo: ");

    gets(livro.titulo);printf("\nDigite o codigo: ");gets(numstr);livro.codigo = atoi(numstr);printf("\nDigite o preco: ");gets(numstr);livro.preco = atof(numstr);fwrite(&livro,sizeof(livro),1,fptr);printf("\nOutro livro (s/n)?");

    }while(getche() == 's');fclose(fptr);

    }

    A Funo fwrite() A funo fwrite() toma 4 argumentos

    O primeiro o endereo do dado (estrutura)

  • 8/7/2019 material de apoio C

    292/301

    p ( )a ser gravado

    O segundo argumento um nmero inteiro

    que indica o tamanho do tipo de dado a sergravado O terceiro argumento um nmero inteiro

    que informa a fwrite() quantos itens do

    mesmo tipo sero gravados O quarto o ponteiro para a estrutura FILE

    void main(){

    struct {char titulo[30];int codigo;

    float preco;} livro;

  • 8/7/2019 material de apoio C

    293/301

    char numstr[81];FILE *fptr;fptr = fopen("livros.dat","rb");

    while(fread(&livro,sizeof(livro),1,fptr) == 1){

    printf("\nTitulo: %s",livro.titulo);printf("\nCodigo: %d",livro.codigo);printf("\nPreco: %f \n",livro.preco);

    }fclose(fptr);getch();

    }

    A Funo fread()

    A funo fread() toma 4 argumentos

  • 8/7/2019 material de apoio C

    294/301

    () g O primeiro o endereo para o qual os

    dados lidos sero armazenados

    O segundo indica a quantidade de bytes dotipo de dado a ser lido

    O terceiro indica a quantidade de itens aserem lidos

    O quarto o ponteiro para a estrutura FILE

    Exerccio

    Faa um programa para ler do teclado uma

  • 8/7/2019 material de apoio C

    295/301

    p g pmatriz de dimenso (5x5) e gravar ela emum arquivo

    void main(){

    int matriz[5][5];int l,c;FILE *fptr;fptr fopen("matriz dat" "wb");

  • 8/7/2019 material de apoio C

    296/301

    fptr = fopen("matriz.dat","wb");for(l=0;l

  • 8/7/2019 material de apoio C

    297/301

    q gexerccio anterior

    void main(){

    int matriz[5][5];int l,c;FILE *fptr;fptr = fopen("matriz.dat","rb");fread(matriz sizeof(matriz) 1 fptr);

  • 8/7/2019 material de apoio C

    298/301

    fread(matriz,sizeof(matriz),1,fptr);for(l=0;l

  • 8/7/2019 material de apoio C

    299/301

    Cuidados ao Abrir Arquivos

    PorQue um Arquivo Pode NoSer Aberto ?

    Razes:

  • 8/7/2019 material de apoio C

    300/301

    No exista mais espao em disco

    Arquivo no exista (caso da leitura)

    Para tratar isso deve-se verificar o retornoda funo fopen()

    Se o arquivo no pode ser aberto, a funo

    fopen() devolve o valor NULL

    Exemplo

    void main(){

  • 8/7/2019 material de apoio C

    301/301

    {FILE *fptr;if( (fptr = fopen("matriz.dat","rb")) == NULL){

    printf("ERRO ao abrir o arquivo! ");getch();exit(0);