73
SISTEMAS DE PROGRAMAÇÃO I UNIDADE 2   PROGRAMAÇÃO BÁSICA EM C TURMA: º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti [email protected] www.sites.google.com/site/professorengpedro Cariacica (ES), Setembro de 2014.

SPI - Unidade 2

Embed Size (px)

DESCRIPTION

Conceitos básicos de Sistemas de Programação

Citation preview

  • SISTEMAS DE PROGRAMAO IUNIDADE 2 PROGRAMAO BSICA EM C

    TURMA: Perodo

    DISCIPLINA: Sistemas Embarcados I

    PROFESSOR: Pedro Pacheco Bacheti

    [email protected]

    www.sites.google.com/site/professorengpedro

    Cariacica (ES), Setembro de 2014.

  • COMANDOS E PALAVRAS RESERVADAS

    ________________________________________________________________________________

    A linguagem C possui um conjunto de 32 palavras reservadas que constituem os comandos e declaraes

    possveis dentro da linguagem e no podem ser redefinidas dentro do programa.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • ESTRUTURA BSICA DE UM PROGRAMA

    ________________________________________________________________________________

    A estrutura bsica de um programa em linguagem C pode ser exemplificada conforme listagem abaixo:

    // Incluso de arquivos externos

    // Declarao de variveis globais

    // Declarao de prottipos de funes

    // Funes

    // Funo principal [main]

    Qualquer programa em C deve possuir estas

    estruturas.

    A funo principal (main, em ingls) contm o

    corpo principal do programa e a primeira

    funo a ser executa quando o programa

    iniciado.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • ESTRUTURA BSICA DE UM PROGRAMA

    ________________________________________________________________________________

    EXEMPLO 1:

    void main (void)

    {

    char a, b, c;

    c = 0x41;

    a = 10; // comentrio 1

    b = a + 5; /* comentrio */

    c += b;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    A linguagem C dispes basicamente de 03 tipos de dados:

    - Inteiros: podem ser sinalizados (positivos ou negativos) ou no sinalizados (somente positivos).

    - Reais: podem representar tanto valores inteiros como fracionrios.

    - Nulos: (void) utilizado para declarao de funes que no retornam e / ou no recebem valores

    (parmetros) e tambm para declarao de ponteiros genricos.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    A linguagem C, prev ainda o uso de modificadores de tipo:

    - short: para reduzir a faixa de representao do tipo.

    - long: para ampliar a faixa de representao do tipo.

    - signed: para especificar a representao de valores sinalizados( utilizando o formato de complemento de

    dois).

    - unsigned: para especificar a representao de valores no sinalizados.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    O padro ANSI considera que um tipo de base sempre signed (com sinal), a no ser que seja expressamente

    declarado como unsigned (sem sinal).

    A exceo o tipo char, deixado em aberto pela norma ANSI.

    Em muitos compiladores, o tipo char , por padro, unsigned, a no ser que seja declarado como signed.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    TIPOS E SUBTIPOS BSICOS

    TIPO SUBTIPO FAIXA DE VALORES TAMANHO (Bytes)

    Inteiros

    Unsigned char, char 0 a 255 1

    Signed char -128 a 127 1

    Unsigned short int 0 a 65.535 2

    short int, signed short int -32.768 a 32.767 2

    Unsigned int, unsigned long int 0 a 4.294.967.295 4

    Int, signed int, long int, signed long int -2.147.483.648 a 2.147.483.647 4

    ReaisFloat 3,4 x 1038 (7 dgitos) 4

    Double 1,7x 10308 (15 dgitos) 8

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • DECLARAO DAS VARIVEIS

    ________________________________________________________________________________

    As variveis em C devem ser sempre declaradas no incio do programa, de uma funo ou de um bloco de

    programa.

    O identificador (nome) da varivel pode ter qualquer tamanho ( normalmente so reconhecidos os 31 primeiros

    caracteres) e deve obedecer s seguintes regras:

    - O identificador deve conter somente letras, nmeros e o caractere sublinhado _. Isso significa que no

    permitido utilizar smbolos ou acentos nos identificadores.

    - O identificador deve iniciar por uma letra ou sublinhado. _

    - Letras maisculas e minsculas so diferentes em linguagem C (isso significa que o identificador TESTE

    diferente do identificador teste)

    - Um identificador no pode ser igual a uma palavra reservada ou um nome de funo definida no programa.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    EXEMPLO 2:

    int teste; // declara uma varivel inteira chamada teste

    unsigned int minha_variavel; // declara uma varivel inteira sem sinal

    char primeiro, segundo; // declara duas variveis do tipo char

    float _resultado; // declara uma varivel real chamada _resultado

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ___________________________________________________________________

    EXERCICOS DE FIXAO

    1) Tomando como referncia o EXEMPLO 1

    e a tabela ASCII, qual o caractere presente

    na varivel c?

    EXEMPLO 1:

    void main (void)

    {

    char a, b, c;

    c = 0x41;

    a = 10; // comentrio 1

    b = a + 5; /* comentrio */

    c += b;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    EXERCICOS DE FIXAO

    2) Tomando como referncia o EXEMPLO 2 mostre a faixa de valores possveis e o tamanho necessrio a ser

    alocado para cada varivel.

    a) int teste

    b) unsigned int minha_variavel

    c) char primeiro, segundo

    d) float _resultado

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    EXERCICOS DE FIXAO

    3) Execute o cdigo abaixo e responda qual o tamanho de cada tipo de varivel nos itens de a a f.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

    CDIGO:

    #include "utility.h"

    #include "ansi_c.h"

    unsigned int _1, _2, _3, _4, _5, _6;

    char teste1;

    short int teste2;

    int teste3;

    long int teste4;

    float teste5;

    double teste6;

    void main(void)

    {

    _1 = sizeof(teste1); printf("\nchar = %u\n",_1);

    _2 = sizeof(teste2); printf("\nshort int = %u\n",_2);

    _3 = sizeof(teste3); printf("\nlint = %u\n",_3);

    _4 = sizeof(teste4); printf("\nlong int = %u\n",_4);

    _5 = sizeof(teste5); printf("\nfloat = %u\n",_5);

    _6 = sizeof(teste6); printf("\ndouble = %u\n",_6);

    }

  • TIPOS DE DADOS

    ________________________________________________________________________________

    EXERCICOS DE FIXAO

    3) Qual o tamanho de cada tipo de varivel?

    a) char

    b) short int

    c) int

    d) long int

    e) float

    f) double

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    OUTROS MODIFICADORES

    Alm dos modificadores de tipo j comentados, a linguagem C dispe de outros com caractersticas mais

    especficas:

    - auto: especifica uma varivel automtica ou local. Esse especificador j no mais utilizado, pois todas as

    variveis declaradas dentro de uma funo ou bloco de programa so consideradas locais, independente do

    seu uso.

    - const: utilizado para declarar uma constante (varivel cujo valor no pode ser alterado pelo programa). Tais

    variveis podem ser armazenadas na memria FLASH.

    - extern: utilizado para fazer referncias a variveis globais declaradas em outros mdulos do programa.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    OUTROS MODIFICADORES

    - register: solicita ao compilador que tente armazenar a varivel em um registrador da CPU, em vez de uma

    posio da memria RAM. Isso permite um incremento na velocidade de acesso varivel, porm esse

    especificador somente pode ser utilizado para variveis locais ou parmetros formais de uma funo.

    - static: utilizado para declarar variveis permanentes, ou seja, que n so destrudas aps a sada da funo

    ou bloco do programa em que foram declaradas: o seu contedo permanece inalterado e na prxima chamada

    da funo, ou execuo do bloco de comandos, o seu valor continuar o mesmo da ltima chamada. Esse

    especificador normalmente utilizado com variveis locais. No caso da declarao de uma varivel global, ela

    somente ser acessvel de dentro do mdulo (listagem) do programa em que foi declarada. Uma varivel

    declarada como static sempre inicializada com zero pelo compilador.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS

    ________________________________________________________________________________

    OUTROS MODIFICADORES

    - volatile: especifica uma varivel que pode ser alterada, por eventos externos sem conhecimento do

    compilador. Esse tipo de especificador deve ser utilizado para variveis que possam ser alteradas pelo

    hardware do sistema.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    Ainda possvel associar alguns operadores, originando novos operadores:

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    Para construir expresses, utilizamos um ou mais operadores.

    A ordem de avaliao da expresso da esquerda para direita.

    No entanto permitido que o compilador rearranje a expresso de forma a otimizar o cdigo gerado (desde que

    no se altere o resultado da expresso). Sendo assim, o programador no deve contar que a expresso ser

    processada exatamente na ordem em que foi escrita.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    * Ordem de prioridade

    no processamento

    de uma expresso.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    Outra caracterstica da linguagem C e que utilizada no processamento das expresses, a chamada promoo

    de tipo, e consiste num conjunto de regras aplicadas pelo compilador com o intuito de que todos os elementos da

    expresso sejam convertidos no mesmo tipo. Seguem abaixo as regras:

    - Numa expresso contendo 02 operandos de tipos diferentes, o tipo de menor tamanho convertido no tipo de

    maior tamanho. A ordem dos tipos, para efeitos de promoo de tipo (do menor para o maior): char, short,

    int, long, float, double.

    - Numa expresso contendo um tipo unsigned e outro signed, o signed convertido em unsigned.

    possvel tambm forar uma converso de tipo (typecast), utilizando o especificador do tipo desejado entre

    parnteses antes da varivel ou expresso que se deseja converter.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    EXERCICO DE FIXAO

    1) Escreva um cdigo utilizando a rotina principal main respeitando a estruturao aprendida para configurar

    uma varivel de 8 bits chamada REG_1 do tipo char , para que os bits das posies 4 e 5 sejam setados e os

    demais permaneam zerados, respeitando as seguintes condies:

    a) Utilizando somente a operao |=

    b) Utilizando somente as operaes &=, +=

    c) Utilizando somente a operao >>=

    d) Utilizando somente a operao

  • OPERADORES E EXPRESSES EM C

    ________________________________________________________________________________

    EXERCICO DE FIXAO

    2) Acrescente ao cdigo anterior o comando printf para mostrar na tela os valores referentes as operaes

    efetuadas. Justifique os resultados mostrados na tela.

    a) Utilizando somente a operao |=

    b) Utilizando somente as operaes &=, +=

    c) Utilizando somente a operao >>=

    d) Utilizando somente a operao

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    Alm dos tipos bsicos, a linguagem C permite tambm a construo de outros tipos de dados mais complexos.

    Seguem abaixo alguns deles:

    - Enumeraes

    - Ponteiros

    - Matrizes

    - Estruturas

    - Unies

    - Definies de tipos

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Enumeraes

    Enumerao um conjunto de constantes inteiras utilizado para especificar quais valores que uma varivel pode

    assumir.

    A declarao de uma enumerao feita geralmente da seguinte forma:

    enum nome_da_enumerao

    {

    lista_de_identificadores

    } variavel_enumerada

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Enumeraes

    Cada elemento da lista de identificadores separado do anterior por uma vrgula ,;

    Normalmente, o primeiro elemento da lista o de valor 0, o segundo o de valor 1 e assim por diante, porm

    possvel especificar a qualquer tempo o nmero de ordem do elemento, bastando utilizar o operador = seguido

    do valor de enumerao desejado.

    Repare que um elemento da lista recebe sempre o valor de enumerao do elemento anterior mais um. Sendo

    assim, se alterarmos o valor de enumerao de um dos elementos, os posteriores a ele tambm tero valores

    alterados.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Enumeraes

    Exemplo:

    int main ()

    {

    enum direcao_terra

    {

    norte,

    leste,

    sul,

    oeste,

    };

    enum direcao_terra minha_direcao;

    minha_direcao = oeste;

    return 0;

    }

    enum direcao_terra obter_direcao()

    {

    return sul;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Enumeraes

    Exemplo:

    int main()

    {

    int a;

    enum planetas

    {

    Mercurio,

    Vnus,

    Terra,

    Marte,

    Jupter,

    Saturno

    };

    enum planetas planeta_1, planeta_2;

    planeta_1 = Marte;

    planeta_2 = Terra;

    if(planeta_1 > planeta_2)

    {

    a = 1;

    }

    else

    {

    a = 0;

    }

    return 0;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Ponteiros

    Os ponteiros, ou apontadores, esto entre os grandes destaques que tornam a linguagem C mais poderosa e

    consistem simplesmente em variveis que armazenam endereos de memria onde , normalmente, encontram-

    se as variveis.

    Os operadores & e * so utilizados para as operaes bsicas dos ponteiros, onde:

    & retorna o endereo de uma varivel.

    * Retorna o contedo de um endereo especificado.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Ponteiros

    possvel declara variveis para guardar ponteiros, neste caso declara-se a varivel normalmente, mas

    utilizando o operador * antes do seu nome, conforme exemplo abaixo:

    char A; // varivel tipo char chamada A

    char *A; // varivel chamada A que aponta para um char

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Ponteiros

    possvel tambm utilizar os operadores de adio, subtrao, incremento e decremento com variveis ponteiro,

    no entanto o programador deve ter em mente que como um ponteiro deve sempre apontar para uma varivel do

    tipo para o qual foi declarado, as operaes sero sempre realizadas levando em conta o tamanho em bytes

    ocupado pelo tipo apontado pelo ponteiro, por exemplo: se um ponteiro para um ehar que aponta para o

    endereo x incrementado, o seu contedo passar a ser x+ 1. Se o ponteiro fosse para um int, o incremento

    resultaria no endereo x+2. Se o ponteiro fosse para um double, o incremento resultaria no endereo x-i-S. Isso

    tudo porque um char ocupa um byte na memria, enquanto um int ocupa dois e um double ocupa normalmente

    oito bytes.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    Uma outra caracterstica dos ponteiros que possvel utilizar um ponteiro para uma funo. Neste caso, o

    endereo armazenado no ponteiro o do incio do cdigo da funo na memria. Para atribuir o endereo de

    uma funo a um ponteiro, basta utilizar o nome da funo (sem os parnteses ou argumentos).

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

    EXEMPLO:

    #include int main()

    {

    void swap(int i, int j) int a, b;

    { a = 5;

    int temp; b = 10;

    temp = i; printf ("%d %d\n", a, b);

    i = j; swap (a, b);

    j = temp; printf ("%d %d\n", a, b);

    } return 0;

    }

    #include

    int main ()

    {

    int a, b;

    a = 5;

    b = 10;

    printf ("\n\nEles valem %d, %d\n", a, b);

    swap (&a, &b);

    printf ("\n\nEles agora valem %d, %d\n", a, b);

    return 0;

    }

    void swap (int *i, int *j)

    {

    int temp;

    temp = *i;

    *i = *j;

    *j = temp;

    }

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

    #include

    int soma(int a, int b)

    {

    return (a+b);

    }

    int subtracao(int a, int b)

    {

    return (a-b);

    }

    int (*menos)(int, int) = subtracao;

    int operacao(int x, int y, int (*func)(int,int))

    {

    int g;

    g = func(x, y);

    return (g);

    }

    int main()

    {

    int m, n;

    m = operacao(7, 5, soma);

    n = operacao(20, m, menos);

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

    return 0;

    }

    Para inicializar um ponteiro para uma

    funo, no precisamos usar o operador

    de endereo (ele j est implcito).

    Por isso, quando chamamos a funo

    operao, no precisamos escrever

    &soma.

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    EXERCCIOS DE FIXAO

    1) Quais so os operadores utilizados pelos ponteiros? (Mostre a funo de cada um deles.)

    2) Mostre quais sero os valores das variveis: i ; *p e p , do exemplo abaixo:

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

    #include

    int main()

    {

    int i = 10 ;

    int *p ;

    p = &i ;

    *p = 5 ;

    printf ("%d\t%d\t%p\n", i, *p, p);

    return 0;

    }

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    EXERCCIOS DE FIXAO

    3) Crie uma funo utilizando o conceito de ponteiros.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Matrizes

    Matrizes so arranjos sequenciais contnuos de elementos de um mesmo tipo de dado.

    A linguagem C permite a construo de matrizes unidimensionais (listas) ou multidimensionais (tabelas) utilizando

    quaisquer tipos de dados permitidos em C (inclusive ponteiros e outros tipos de dados complexos).

    A declarao de uma matriz pode ser feita fornecendo o nmero mximo de elementos desejados para cada

    dimenso.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Matrizes

    Exemplo:

    char matriz1 [25]; // declara uma matriz unidimensional de 25 elementos char chamada "matriz1"

    unsigned int matriz2 [10]; // declara uma matriz unidimensional de 10 elementos do tipo unsigned int chamada "matriz2

    float matriz3 [5] [5]; // declara uma matriz bidimensional de 5 elementos em cada dimenso, do tipo float chamada "matriz3"

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Matrizes

    Tambm possvel declarar e inicializar os elementos de uma matriz.

    Exemplo:

    * Repare que para fazer referncia a um elemento da matriz, utilizado o identificador da matriz seguido do

    nmero do elemento dentro dos colchetes.

    Exemplo:

    char notas [5] = {4, 8, 6, 8, 9}; // declara uma matriz unidimensional de char chamada "notas" e inicializada com os valores apresentados

    char nota_1;

    nota_1 = notas[0];

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Estruturas

    Outro tipo de dado complexo admitido em C so as estruturas.

    Uma estrutura um agrupamento de variveis individuais de qualquer tipo, referenciadas por um nome comum.

    As variveis pertencentes a uma estrutura so denominadas campos de estrutura.

    Exemplo:

    struct nome_estrutura

    {

    tipo campo1;

    tipo campo2;

    ...

    } veriaveis_estrutura;

    struct data

    {

    char dia;

    char mes;

    char ano;

    } calendario;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Estruturas

    Observe no exemplo como as variveis do tipo struct so acessadas.

    Exemplo:

    calendario.dia = 6;

    calendario.mes = 1;

    calendario.ano = 1987;

    struct data

    {

    int dia;

    int mes;

    int ano;

    } calendario;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    - Estruturas

    Segue outra forma de efetuar a mesma declarao.

    Exemplo: struct data calendario, aniversario;

    calendario.dia = 6;

    calendario.mes = 1;

    calendario.ano = 1987;

    aniversario.dia = 6;

    aniversario.mes = 1;

    aniversario.ano = 1987;

    struct data

    {

    int dia;

    int mes;

    int ano;

    } ;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    UNIES

    Unies so um tipo especial de dado no qual as variveis declaradas residem num mesmo endereo de memria.

    O compilador aloca memria para a varivel cujo tipo ocupe o maior espao na memria e em seguida, as

    demais variveis pertencentes unio so alocadas no mesmo espao.

    O compilador alinha as variveis pertencentes a uma unio pelos seus dgitos mais significativos (modelo little

    endian).

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    UNIES

    Exemplo:

    union

    {

    unsigned long int var32;

    unsigned int var16;

    unsigned char var8;

    } tipos;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    UNIES

    Exemplo:

    tipos.var32 = 0x12345678;

    tipos.var16 = 0x1234;

    tipos.var8 = 0x12;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    DEFINIES DE TIPOS DE DADOS

    Outra caracterstica interessante da linguagem C, mas que no consiste realmente em um novo tipo de dado, o

    comando typedef.

    Ele permite criar novos identificadores para tipos de dados j existentes.

    Isso facilita a legibilidade de alguns programas e tambm permite tornar alguns tipos de programas escritos para

    outras plataformas mais facilmente portveis.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    DEFINIES DE TIPOS DE DADOS

    A utilizao de typedef bastante simples. Conforme mostra o exemplo:

    typedef float fracionario;

    fracionario teste; // declara uma varivel chamada teste do tipo fracionario (float)

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • TIPOS DE DADOS COMPLEXOS

    ________________________________________________________________________________

    EXERCCIOS DE FIXAO

    1) Determine qual a faixa de valores (na representao binria) que pode ser representada pelas variveis

    abaixo, respeitando o cdigo da caixa de texto abaixo:

    a) teste

    b) a e btypedef char caractere;

    typedef int numero;

    caractere teste;

    numero a, b;

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    A linguagem C possui um conjunto de comandos de controle de programa organizados nas seguintes categorias:

    - Condicionais

    - Iterao, lao ou repetio

    - Salto ou desvio

    So comandos que permitem executar cdigo associando a uma condio ser verdadeira ou falsa.

    Permitem a execuo de cdigo repetitivo.

    Utilizados para provocar o desvio do fluxo do programa.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    TIPOS COMANDOS

    CONDICIONAL if switch

    ITERAO, LAO,

    REPETIOfor while do

    SALTO OU DESVIO *anteriores utilizam este tipo

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO IF

    O comando if permite executar um comando ou bloco de comandos, caso uma condio seja verdadeira e

    opcionalmente, um outro comando ou bloco de comandos, no caso de a condio ser falsa

    * Na linguagem C, verdadeiro consiste em qualquer valor diferente de zero e falso consiste no valor zero

    SINTAXE:

    if (condio) comando_caso_verdadeiro; else comando_caso_falso;

    if(condio)

    {

    comando_caso_verdadeiro;

    }

    else

    {

    comando_caso_falso;

    }

    =

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO IF

    Exemplo:

    char estado_portas;

    estado_portas = P1IN;

    if(estado_portas & 0x01)

    {

    P1OUT |= 0x01;

    }

    else

    {

    P1OUT &= ~(0x01);

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO SWITCH

    O seu funcionamento o seguinte: o resultado da expresso comparado com cada uma das constantes

    associadas s clusulas case e quando a comparao resultante for verdadeira, os comandos daquela clusula

    so executados at que seja encontrado o comando break.

    Caso nenhuma das comparaes resulte em verdadeiro, os comandos associados clusula default so

    executados. No entanto, a incluso desta clusula opcional.

    * No permitido duas constantes case no mesmo switch terem o mesmo valor.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO SWITCH

    Exemplo:

    switch (estado_porta)

    {

    case 0x01:

    P1OUT |= 0x01;

    break;

    case 0x02:

    P1OUT |= 0x02;

    break;

    case constante_n:

    P1OUT |= 0x02;

    break;

    default:

    P1OUT = 0x00;

    break;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO FOR

    O comando for consiste num comando de iterao ou repetio condicional, ou seja, ele utilizado para executar

    um comando ou bloco de comandos, enquanto uma condio for verdadeira.

    SINTAXE:

    for(inicializao; condio; incremento) comando;

    for(inicializao; condio; incremento)

    {

    comando;

    }

    =

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO FOR

    O seu funcionamento o seguinte:

    1. Inicialmente executada a operao expressa na seo inicializao do comando.

    2. A seo condio testada e se for verdadeira, o comando ou bloco de comandos associado ao for

    executado.

    3. executada a seo incremento do comando for.

    4. A execuo retorna para o iitem 2 e permanecer nesta repetio at que a condio avaliada seja falsa, o

    que encerra o comando.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO FOR

    Exemplo:

    Int vetor[10]

    for(i=0; i < 10; i++)

    {

    int soma=0;

    soma = soma + vetor[i]; // soma += vetor[i];

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO FOR

    * Opcionalmente, possvel utilizar a clusula break para provocar o encerramento prematuro do lao.

    Tambm possvel utilizar a clusula continue para provocar o encerramento da iterao atual do lao e o

    incio de uma nova iterao.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO WHILE

    Outro comando de repetio da linguagem C o while (enquanto).

    Ele utilizado para repetir um comando ou bloco de comandos enquanto uma condio for verdadeira.

    A diferena entre o while e o for que no for, h ciclo de inicializao, teste condicional e incremento, enquanto

    no while somente temos o teste condicional.

    SINTAXE:

    while (condio)

    {

    comando1;

    comando2;

    ...

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO WHILE

    O funcionamento do comando bastante simples:

    - Primeiramente a condio avaliada.

    - Caso seja verdadeira o comando ou bloco de comandos executado

    - Em seguida a condio testada novamente.

    - Caso a condio seja falsa, o comando encerrado.

    * Cada iterao se inicia com o teste da condio

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO WHILE

    Exemplos:

    while(iP1IN & 0x01)

    {

    P1OUT |= 0x40;

    }

    while(i1)

    {

    P1OUT |= 0x40;

    }

    LOOP INFINITO

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO WHILE

    * Assim como no for, tambm possvel utilizar a clusula break para encerrar prematuramente um lao

    while sem necessitar que a condio seja verdadeira, ou a clusula continue para provocar o

    encerramento da iterao atual e inicio da seguinte.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO DO

    O ltimo tipo de comando de repetio o do.

    Ele bastante parecido com o while, mas ao contrrio deste, que testa a condio no incio de cada iterao, do

    somente testa a condio no final de cada iterao.

    SINTAXE:

    do

    {

    comando1;

    comando2;

    ...

    } while (condio);

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO DO

    O seu funcionamento bastante simples:

    - O comando ou bloco de comandos executado.

    - Em seguida a condio verificada.

    - Caso seja verdadeira, uma nova iterao tem incio.

    - Caso seja falsa, o comando encerrado.

    * Aqui tambm as clusulas break e continue podem ser utilizadas para encerrar o comando ou a iterao

    prematuramente.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    COMANDO DO

    Exemplos:

    do

    {

    P1OUT |= 0x40;

    } while(iP1IN & 0x01);

    do

    {

    P1OUT |= 0x40;

    } while(i1);

    LOOP INFINITO

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • COMANDOS DA LINGUAGEM C

    ________________________________________________________________________________

    EXERCCIOS DE FIXAO

    1) Explique a diferena entre as funes:

    a) If e switch

    b) for, while e do

    2) Implemente um cdigo que efetue as seguintes rotinas:

    a) Somatrio de todos os elementos do vetor a[0] = ; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; utilizando a

    funo for.

    b) Somatrio de todos os elementos do vetor a[0] = ; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; utilizando a

    funo while.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    Uma funo um conjunto de comandos que executam uma determinada operao no programa.

    Normalmente, quando se necessita repetir um mesmo trecho do cdigo diversas vezes em um programa, utiliza-

    se uma funo para guardar esse conjunto de comandos e a cada vez que for necessria a sua execuo, basta

    realizar a chamada funo.

    SINTAXE:

    tipo_retorno nome_funo(lista de parmetros)

    {

    lista_comandos;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    EXEMPLO:

    int soma(int a, int b)

    {

    int c;

    c = a + b;

    return c;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    Uma funo pode retornar qualquer tipo de dado vlido em C, e tambm pode receber qualquer tipo dos tipos de

    dados vlidos em C (com exceo de unies).

    Alm disso, uma funo em C pode receber seus parmetros de 02 formas distintas:

    - Na chamada por valor, o valor do parmetro da funo passado como argumento para ela.

    - Na chamada por referncia, o endereo da varivel que contm o parmetro passado como argumento para

    ela.

    possvel utilizar cada um ou ambos os modelos em uma mesma funo, mas o programador deve sempre levar

    em conta a forma como a funo foi declarada, pois a chamada da funo deve utilizar a mesma forma da

    declarao dela.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    Normalmente, a linguagem C utiliza a chamada por valor, com exceo das matrizes, em que passado apenas

    o endereo do primeiro elemento dela.

    Para utilizar a chamada por referncia, necessria a utilizao de ponteiros.

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    EXEMPLO:

    do

    {

    P1OUT |= 0x40;

    } while(iP1IN & 0x01);

    do

    {

    P1OUT |= 0x40;

    } while(iP1IN & 0x01);

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    PROTOTIPAGEM / DECLARAO DE FUNES

    SINTAXE - PROTOTIPAGEM:

    tipo_retorno nome_funo(lista de parmetros);

    SINTAXE - DECLARAO:

    tipo_retorno nome_funo(lista de parmetros)

    {

    lista_comandos;

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

  • FUNES

    ________________________________________________________________________________

    PROTOTIPAGEM / DECLARAO DE FUNES

    Exemplo:

    int subtrai(int a, int b);

    int subtrai(int a, int b)

    {

    int c;

    c = a b;

    return c;

    }

    int subtrai(int a, int b);

    void maini(void)

    {

    int aux;

    aux = subtrai(5,2);

    }

    SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C