A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SISTEMAS EMBARCADOS I UNIDADE 3 – PROGRAMAÇÃO BÁSICA EM C TURMA: 7º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti

Apresentações semelhantes


Apresentação em tema: "SISTEMAS EMBARCADOS I UNIDADE 3 – PROGRAMAÇÃO BÁSICA EM C TURMA: 7º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti"— Transcrição da apresentação:

1 SISTEMAS EMBARCADOS I UNIDADE 3 – PROGRAMAÇÃO BÁSICA EM C TURMA: 7º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti pedro.exercicios@gmail.com www.sites.google.com/site/professorengpedro Serra (ES), Setembro de 2014.

2 COMANDOS E PALAVRAS RESERVADAS ________________________________________________________________________________ A linguagem C possui um conjunto de 32 palavras reservadas que constituem os comandos e declarações possíveis dentro da linguagem e não podem ser redefinidas dentro do programa. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

3 ESTRUTURA BÁSICA DE UM PROGRAMA ________________________________________________________________________________ A estrutura básica de um programa em linguagem C pode ser exemplificada conforme listagem abaixo: // Inclusão de arquivos externos // Declaração de variáveis globais // Declaração de protótipos de funções // Funções // Função principal [main] SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C  Qualquer programa em C deve possuir estas estruturas.  A função principal (main, em inglês) contém o corpo principal do programa e é a primeira função a ser executa quando o programa é iniciado.

4 ESTRUTURA BÁSICA DE UM PROGRAMA ________________________________________________________________________________ EXEMPLO 1: void main (void) { char a, b, c; c = 0x41; a = 10;// comentário 1 b = a + 5;/* comentário */ c += b; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

5 TIPOS DE DADOS ________________________________________________________________________________ A linguagem C dispões basicamente de 03 tipos de dados: -Inteiros: podem ser sinalizados (positivos ou negativos) ou não sinalizados (somente positivos). -Reais: podem representar tanto valores inteiros como fracionários. -Nulos: (void) é utilizado para declaração de funções que não retornam e / ou não recebem valores (parâmetros) e também para declaração de ponteiros genéricos. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

6 TIPOS DE DADOS ________________________________________________________________________________ A linguagem C, prevê ainda o uso de modificadores de tipo: -short: para reduzir a faixa de representação do tipo. -long: para ampliar a faixa de representação do tipo. -signed: para especificar a representação de valores sinalizados( utilizando o formato de complemento de dois). -unsigned: para especificar a representação de valores não sinalizados. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

7 TIPOS DE DADOS ________________________________________________________________________________ O padrão ANSI considera que um tipo de base é sempre signed (com sinal), a não ser que seja expressamente declarado como unsigned (sem sinal). A exceção é o tipo char, deixado em aberto pela norma ANSI. No compilador IAR, o tipo char é, por padrão, unsigned, a não ser que seja declarado como signed. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

8 TIPOS DE DADOS ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C TIPOS E SUBTIPOS BÁSICOS TIPOSUBTIPOFAIXA DE VALORESTAMANHO (Bytes) Inteiros Unsigned char, char0 a 2551 Signed char-128 a 1271 Unsigned int, unsigned short int0 a 65.5352 Int, signed int, short int, signed short int-32.768 a 32.7672 Unsigned long int0 a 4.294.967.2954 Long int, signed long int-2.147.483.648 a 2.147.483.6474 Reais Float3,4 x 10 ±38 (7 dígitos)4 Double1,7x 10 ±308 (15 dígitos)8

9 TIPOS DE DADOS ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

10 DECLARAÇÃO DAS VARIÁVEIS ________________________________________________________________________________ As variáveis em C devem ser sempre declaradas no início do programa, de uma função ou de um bloco de programa. O identificador (nome) da variável pode ter qualquer tamanho ( normalmente são reconhecidos os 31 primeiros caracteres) e deve obedecer às seguintes regras: -O identificador deve conter somente letras, números e o caractere sublinhado “_”. Isso significa que não é permitido utilizar símbolos ou acentos nos identificadores. -O identificador deve iniciar por uma letra ou sublinhado. “_” -Letras maiúsculas e minúsculas são diferentes em linguagem C (isso significa que o identificador TESTE é diferente do identificador teste) -Um identificador não pode ser igual a uma palavra reservada ou um nome de função definida no programa. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

11 TIPOS DE DADOS ________________________________________________________________________________ EXEMPLO 2: int teste;// declara uma variável inteira chamada teste unsigned int minha_variavel;// declara uma variável inteira sem sinal char primeiro, segundo;// declara duas variáveis do tipo char float _resultado;// declara uma variável real chamada _resultado SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

12 TIPOS DE DADOS ___________________________________________________________________ EXERCICÍOS DE FIXAÇÃO 1)Tomando como referência o EXEMPLO 1 e a tabela ASCII, qual é o caractere presente na variável c? SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C EXEMPLO 1: void main (void) { char a, b, c; c = 0x41; a = 10;// comentário 1 b = a + 5;/* comentário */ c += b; }

13 TIPOS DE DADOS ________________________________________________________________________________ EXERCICÍOS DE FIXAÇÃO 2)Tomando como referência o EXEMPLO 2 mostre a faixa de valores possíveis e o tamanho necessário a ser alocado para cada variável. a)int teste b)unsigned int minha_variavel c)char primeiro, segundo d)float _resultado SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

14 TIPOS DE DADOS ________________________________________________________________________________ OUTROS MODIFICADORES Além dos modificadores de tipo já comentados, a linguagem C dispõe de outros com características mais específicas: -auto: especifica uma variável automática ou local. Esse especificador já não é mais utilizado, pois todas as variáveis declaradas dentro de uma função ou bloco de programa são consideradas locais, independente do seu uso. -const: utilizado para declarar uma constante (variável cujo valor não pode ser alterado pelo programa). Tais variáveis podem ser armazenadas na memória FLASH. -extern: utilizado para fazer referências a variáveis globais declaradas em outros módulos do programa. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

15 TIPOS DE DADOS ________________________________________________________________________________ OUTROS MODIFICADORES -register: solicita ao compilador que tente armazenar a variável em um registrador da CPU, em vez de uma posição da memória RAM. Isso permite um incremento na velocidade de acesso à variável, porém esse especificador somente pode ser utilizado para variáveis locais ou parâmetros formais de uma função. -static: utilizado para declarar variáveis permanentes, ou seja, que nã são destruídas após a saída da função ou bloco do programa em que foram declaradas: o seu conteúdo permanece inalterado e na próxima chamada da função, ou execução do bloco de comandos, o seu valor continuará o mesmo da última chamada. Esse especificador é normalmente utilizado com variáveis locais. No caso da declaração de uma variável global, ela somente será acessível de dentro do módulo (listagem) do programa em que foi declarada. Uma variável declarada como static é sempre inicializada com zero pelo compilador. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

16 TIPOS DE DADOS ________________________________________________________________________________ OUTROS MODIFICADORES -volatile: especifica uma variável que pode ser alterada, por eventos externos sem conhecimento do compilador. Esse tipo de especificador deve ser utilizado para variáveis que possam ser alteradas pelo hardware do sistema. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

17 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

18 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

19 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

20 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ Ainda é possível associar alguns operadores, originando novos operadores: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

21 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ Para construir expressões, utilizamos um ou mais operadores. A ordem de avaliação da expressão é da esquerda para direita. No entanto é permitido que o compilador rearranje a expressão de forma a otimizar o código gerado (desde que não se altere o resultado da expressão). Sendo assim, o programador não deve contar que a expressão será processada exatamente na ordem em que foi escrita. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

22 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ * Ordem de prioridade no processamento de uma expressão. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

23 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ Outra característica da linguagem C e que é utilizada no processamento das expressões, a chamada promoção de tipo, e consiste num conjunto de regras aplicadas pelo compilador com o intuito de que todos os elementos da expressão sejam convertidos no mesmo tipo. Seguem abaixo as regras: -Numa expressão contendo 02 operandos de tipos diferentes, o tipo de menor tamanho é convertido no tipo de maior tamanho. A ordem dos tipos, para efeitos de promoção de tipo é (do menor para o maior): char, short, int, long, float, double. -Numa expressão contendo um tipo unsigned e outro signed, o signed é convertido em unsigned. É possível também forçar uma conversão de tipo (typecast), utilizando o especificador do tipo desejado entre parênteses antes da variável ou expressão que se deseja converter. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

24 OPERADORES E EXPRESSÕES EM C ________________________________________________________________________________ EXERCICÍO DE FIXAÇÃO 1)Escreva um código utilizando a rotina principal “main” respeitando a estruturação aprendida para configurar uma variável de 8 bits chamada REG_1 do tipo char, para que os bits das posições 4 e 5 sejam setados e os demais permaneçam zerados, respeitando as seguintes condições: a)Utilizando somente a operação |= b)Utilizando somente as operações &=, += c)Utilizando somente a operação >>=, += d)Utilizando somente a operação <<=, += SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

25 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ Além dos tipos básicos, a linguagem C permite também a construção de outros tipos de dados mais complexos. Seguem abaixo alguns deles: -Enumerações -Ponteiros -Matrizes -Estruturas -Uniões -Definições de tipos SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

26 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ENUMERAÇÕES Enumeração é um conjunto de constantes inteiras utilizado para especificar quais valores que uma variável pode assumir. A declaração de uma enumeração é feita geralmente da seguinte forma: enum nome_da_enumeração { lista_de_identificadores } variavel_enumerada SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

27 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ENUMERAÇÕES Cada elemento da lista de identificadores é separado do anterior por uma vírgula “,”; Normalmente, o primeiro elemento da lista é o de valor 0, o segundo o de valor 1 e assim por diante, porém é possível especificar a qualquer tempo o número de ordem do elemento, bastando utilizar o operador “=“ seguido do valor de enumeração desejado. Repare que um elemento da lista recebe sempre o valor de enumeração do elemento anterior mais um. Sendo assim, se alterarmos o valor de enumeração de um dos elementos, os posteriores a ele também terão valores alterados. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

28 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ENUMERAÇÕES Exemplo: int main () { enum direcao_terra { norte, leste, sul, oeste, }; enum direcao_terra minha_direcao; minha_direcao = oeste; return 0; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C enum direcao_terra obter_direcao() { return sul; }

29 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ENUMERAÇÕES Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C int main() { int a; enum planetas { Mercurio, Vênus, 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; }

30 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ PONTEIROS Os ponteiros, ou apontadores, estão entre os grandes destaques que tornam a linguagem C mais poderosa e consistem simplesmente em variáveis que armazenam endereços de memória onde, normalmente, encontram- se as variáveis. Os operadores & e * são utilizados para as operações básicas dos ponteiros, onde: & retorna o endereço de uma variável. * Retorna o conteúdo de um endereço especificado. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

31 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ PONTEIROS É possível declara variáveis para guardar ponteiros, neste caso declara-se a variável normalmente, mas utilizando o operador * antes do seu nome, conforme exemplo abaixo: char A; // variável tipo char chamada A char *A;// variável chamada A que aponta para um char SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

32 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ PONTEIROS É possível também utilizar os operadores de adição, subtração, incremento e decremento com variáveis ponteiro, no entanto o programador deve ter em mente que como um ponteiro deve sempre apontar para uma variável do tipo para o qual foi declarado, as operações serão sempre realizadas levando em conta o tamanho em bytes ocupado pelo tipo apontado pelo ponteiro, por exemplo: se um ponteiro para um char que aponta para o endereço x é incrementado, o seu conteúdo passará a ser x+ 1. Se o ponteiro fosse para um int, o incremento resultaria no endereço x+2. Se o ponteiro fosse para um double, o incremento resultaria no endereço x + 8. Isso tudo porque um char ocupa um byte na memória, enquanto um int ocupa dois e um double ocupa normalmente oito bytes. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

33 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ Uma outra característica dos ponteiros é que é possível utilizar um ponteiro para uma função. Neste caso, o endereço armazenado no ponteiro é o do início do código da função na memória. Para atribuir o endereço de uma função a um ponteiro, basta utilizar o nome da função (sem os parênteses ou argumentos). 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; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

34 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ #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 função, não precisamos usar o operador de endereço (ele já está implícito). Por isso, quando chamamos a função operação, não precisamos escrever “&soma”. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

35 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ EXERCÍCIOS DE FIXAÇÃO 1)Quais são os operadores utilizados pelos ponteiros? (Mostre a função de cada um deles.) 2)Mostre quais serão os valores das variáveis: “ i “; “ *p “ e “ p “, do exemplo abaixo: #include int main() { int i = 10 ; int *p ; p = &i ; *p = 5 ; printf ("%d\t%d\t%p\n", i, *p, p); return 0; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

36 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ EXERCÍCIOS DE FIXAÇÃO 3)Crie uma função utilizando o conceito de ponteiros. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

37 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ MATRIZES Matrizes são arranjos sequenciais contínuos de elementos de um mesmo tipo de dado. A linguagem C permite a construção de matrizes unidimensionais (listas) ou multidimensionais (tabelas) utilizando quaisquer tipos de dados permitidos em C (inclusive ponteiros e outros tipos de dados complexos). A declaração de uma matriz pode ser feita fornecendo o número máximo de elementos desejados para cada dimensão. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

38 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ MATRIZES Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C 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 dimensão, do tipo float chamada "matriz3"

39 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ MATRIZES Também é possível declarar e inicializar os elementos de uma matriz. Exemplo: * Repare que para fazer referência a um elemento da matriz, é utilizado o identificador da matriz seguido do número do elemento dentro dos colchetes. Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C 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];

40 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ESTRUTURAS Outro tipo de dado complexo admitido em C são as estruturas. Uma estrutura é um agrupamento de variáveis individuais de qualquer tipo, referenciadas por um nome comum. As variáveis pertencentes a uma estrutura são denominadas campos de estrutura. Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C struct nome_estrutura { tipo campo1; tipo campo2;... } veriaveis_estrutura; struct data { char dia; char mes; char ano; } calendario;

41 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ESTRUTURAS Observe no exemplo como as variáveis do tipo struct são acessadas. Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C calendario.dia = 6; calendario.mes = janeiro; calendario.ano = 1987; struct data { char dia; char mes; char ano; } calendario;

42 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ESTRUTURAS Segue outra forma de efetuar a mesma declaração. Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C struct data calendario, aniversario; calendario.dia = 6; calendario.mes = janeiro; calendario.ano = 1987; aniversario.dia = 6; aniversario.mes = janeiro; aniversario.ano = 1987; struct data { char dia; char mes; char ano; } ;

43 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ESTRUTURAS Uma outra facilidade adicional permitida em linguagem C são os campos de bit, que consistem em campos especiais de estrutura, cujo número de bits ocupado pode ser especificado pelo programador. Campos de bit são muito úteis para acesso a bits de uma variável, ou registrador de um microcontrolador. A declaração de um campo de bit é feita da mesma forma que a declaração de um campo qualquer de estrutura, com a diferença deque após o nome do campo, o programador deve inserir um sinal “:” e em seguida o número de bits utilizado pelo campo. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

44 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ ESTRUTURAS Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C struct { unsigned int P1DIR_0: 1; unsigned int P1DIR_1: 1; unsigned int P1DIR_2: 1; unsigned int P1DIR_3: 1; unsigned int P1DIR_4: 1; unsigned int P1DIR_5: 1; unsigned int P1DIR_6: 1; unsigned int P1DIR_7: 1; } P1DIR_bit; // Configura o pino P1.0 como saída P1DIR_bit.P1DIR_0 = 1;

45 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ EXERCÍCIO DE FIXAÇÃO 1)Utilizando os conceitos de estrutura (struct), implemente um código para que a porta 2 do microcontrolador MSP430G2553 tenha seus pinos configurados da seguinte forma: -P2.0, P2.1, P2.2 e P2.7 sejam saídas -P2.3, P2.4, P2.5 e P2.6 sejam entradas SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

46 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ UNIÕES Uniões são um tipo especial de dado no qual as variáveis declaradas residem num mesmo endereço de memória. O compilador aloca memória para a variável cujo tipo ocupe o maior espaço na memória e em seguida, as demais variáveis pertencentes à união são alocadas no mesmo espaço. O compilador alinha as variáveis pertencentes a uma união pelos seus dígitos mais significativos (modelo little endian). SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

47 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ UNIÕES Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C union { unsigned long int var32; unsigned int var16; unsigned char var8; } tipos;

48 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ UNIÕES Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C tipos.var32 = 0x12345678; tipos.var16 = 0x1234; tipos.var8 = 0x12;

49 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ DEFINIÇÕES DE TIPOS DE DADOS Outra característica interessante da linguagem C, mas que não 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 também permite tornar alguns tipos de programas escritos para outras plataformas mais facilmente portáveis. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

50 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ DEFINIÇÕES DE TIPOS DE DADOS A utilização de typedef é bastante simples. Conforme mostra o exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C typedef float fracionario; fracionario teste; // declara uma variável chamada teste do tipo fracionario (float)

51 TIPOS DE DADOS COMPLEXOS ________________________________________________________________________________ EXERCÍCIOS DE FIXAÇÃO 1)Determine qual a faixa de valores (na representação binária) que pode ser representada pelas variáveis abaixo, respeitando o código da caixa de texto abaixo: a)teste b)a e b SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C typedef char caractere; typedef int numero; caractere teste; numero a, b;

52 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ A linguagem C possui um conjunto de comandos de controle de programa organizados nas seguintes categorias: -Condicionais -Iteração, laço ou repetição -Salto ou desvio SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C São comandos que permitem executar código associando a uma condição ser verdadeira ou falsa. Permitem a execução de código repetitivo. Utilizados para provocar o desvio do fluxo do programa.

53 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C TIPOSCOMANDOS CONDICIONALifswitch ITERAÇÃO, LAÇO, REPETIÇÃO forwhiledo SALTO OU DESVIO*anteriores utilizam este tipo

54 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO IF O comando if permite executar um comando ou bloco de comandos, caso uma condição seja verdadeira e opcionalmente, um outro comando ou bloco de comandos, no caso de a condição ser falsa * Na linguagem C, verdadeiro consiste em qualquer valor diferente de zero e falso consiste no valor zero SINTAXE: if (condição) comando_caso_verdadeiro; else comando_caso_falso; SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C if(condição) { comando_caso_verdadeiro; } else { comando_caso_falso; } =

55 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO IF Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C char estado_portas; estado_portas = P1IN; if(estado_portas & 0x01) { P1OUT |= 0x01; } else { P1OUT &= ~(0x01); }

56 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO SWITCH O seu funcionamento é o seguinte: o resultado da expressão é comparado com cada uma das constantes associadas às cláusulas case e quando a comparação resultante for verdadeira, os comandos daquela cláusula são executados até que seja encontrado o comando break. Caso nenhuma das comparações resulte em verdadeiro, os comandos associados à cláusula default são executados. No entanto, a inclusão desta cláusula é opcional. * Não é permitido duas constantes case no mesmo switch terem o mesmo valor. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

57 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO SWITCH Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C switch (estado_porta) { case 0x01: P1OUT |= 0x01; break; case 0x02: P1OUT |= 0x02; break; case constante_n: P1OUT |= 0x02; break; default: P1OUT = 0x00; break; }

58 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO FOR O comando for consiste num comando de iteração ou repetição condicional, ou seja, ele é utilizado para executar um comando ou bloco de comandos, enquanto uma condição for verdadeira. SINTAXE: for(inicialização; condição; incremento) comando; SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C for(inicialização; condição; incremento) { comando; } =

59 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO FOR O seu funcionamento é o seguinte: 1.Inicialmente é executada a operação expressa na seção “inicialização” do comando. 2.A seção “condição” é testada e se for verdadeira, o comando ou bloco de comandos associado ao for é executado. 3.É executada a seção “incremento” do comando for. 4.A execução retorna para o iitem 2 e permanecerá nesta repetição até que a “condição” avaliada seja falsa, o que encerra o comando. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

60 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO FOR Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C Int vetor[10]; for(i=0; i < 10; i++) { int soma=0; soma = soma + vetor[i]; // soma += vetor[i]; }

61 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO FOR * Opcionalmente, é possível utilizar a cláusula break para provocar o encerramento prematuro do laço. Também é possível utilizar a cláusula continue para provocar o encerramento da iteração atual do laço e o início de uma nova iteração. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

62 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO WHILE Outro comando de repetição da linguagem C é o while (enquanto). Ele é utilizado para repetir um comando ou bloco de comandos enquanto uma condição for verdadeira. A diferença entre o while e o for é que no for, há ciclo de inicialização, teste condicional e incremento, enquanto no while somente temos o teste condicional. SINTAXE: while (condição) { comando1; comando2;... } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

63 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO WHILE O funcionamento do comando é bastante simples: -Primeiramente a condição é avaliada. -Caso seja verdadeira o comando ou bloco de comandos é executado -Em seguida a condição é testada novamente. -Caso a condição seja falsa, o comando é encerrado. * Cada iteração se inicia com o teste da condição SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

64 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO WHILE Exemplos: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C while(iP1IN & 0x01) { P1OUT |= 0x40; } while(i1) { P1OUT |= 0x40; } LOOP INFINITO

65 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO WHILE * Assim como no for, também é possível utilizar a cláusula break para encerrar prematuramente um laço while sem necessitar que a condição seja verdadeira, ou a cláusula continue para provocar o encerramento da iteração atual e inicio da seguinte. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

66 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO DO O último tipo de comando de repetição é o do. Ele é bastante parecido com o while, mas ao contrário deste, que testa a condição no início de cada iteração, do somente testa a condição no final de cada iteração. SINTAXE: do { comando1; comando2;... } while (condição); SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

67 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO DO O seu funcionamento é bastante simples: -O comando ou bloco de comandos é executado. -Em seguida a condição é verificada. -Caso seja verdadeira, uma nova iteração tem início. -Caso seja falsa, o comando é encerrado. * Aqui também as cláusulas break e continue podem ser utilizadas para encerrar o comando ou a iteração prematuramente. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

68 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ COMANDO DO Exemplos: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C do { P1OUT |= 0x40; } while(iP1IN & 0x01); do { P1OUT |= 0x40; } while(i1); LOOP INFINITO

69 COMANDOS DA LINGUAGEM C ________________________________________________________________________________ EXERCÍCIOS DE FIXAÇÃO 1)Explique a diferença entre as funções: a)If e switch b)for, while e do 2)Implemente um código que efetue as seguintes rotinas: a)Somatório 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 função for. b)Somatório 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 função while. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

70 FUNÇÕES ________________________________________________________________________________ Uma função é um conjunto de comandos que executam uma determinada operação no programa. Normalmente, quando se necessita repetir um mesmo trecho do código diversas vezes em um programa, utiliza- se uma função para guardar esse conjunto de comandos e a cada vez que for necessária a sua execução, basta realizar a chamada à função. SINTAXE: tipo_retorno nome_função(lista de parâmetros) { lista_comandos; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

71 FUNÇÕES ________________________________________________________________________________ EXEMPLO: int soma(int a, int b) { int c; c = a + b; return c; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

72 FUNÇÕES ________________________________________________________________________________ Uma função pode retornar qualquer tipo de dado válido em C, e também pode receber qualquer tipo dos tipos de dados válidos em C (com exceção de uniões). Além disso, uma função em C pode receber seus parâmetros de 02 formas distintas: -Na chamada por valor, o valor do parâmetro da função é passado como argumento para ela. -Na chamada por referência, o endereço da variável que contém o parâmetro é passado como argumento para ela. É possível utilizar cada um ou ambos os modelos em uma mesma função, mas o programador deve sempre levar em conta a forma como a função foi declarada, pois a chamada da função deve utilizar a mesma forma da declaração dela. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

73 FUNÇÕES ________________________________________________________________________________ EXEMPLO: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C do { P1OUT |= 0x40; } while(iP1IN & 0x01); do { P1OUT |= 0x40; } while(iP1IN & 0x01);

74 FUNÇÕES ________________________________________________________________________________ PROTOTIPAGEM / DECLARAÇÃO DE FUNÇÕES SINTAXE - PROTOTIPAGEM: tipo_retorno nome_função(lista de parâmetros); SINTAXE - DECLARAÇÃO: tipo_retorno nome_função(lista de parâmetros) { lista_comandos; } SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C

75 FUNÇÕES ________________________________________________________________________________ PROTOTIPAGEM / DECLARAÇÃO DE FUNÇÕES Exemplo: SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C 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); }

76 FUNÇÕES ________________________________________________________________________________ EXERCÍCIOS DE FIXAÇÃO Implemente uma função genérica que inverta o dado de forma binária independente do seu tamanho (quantidades de bits), conforme exemplo abaixo. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 DADO ORIGINALDADO INVERTIDO (ESPELHADO)

77 REFERÊNCIAS ________________________________________________________________________________ - PEREIRA, FÁBIO. Microcontroladores Família MSP430, 1 ed. São Paulo: Érica, 2005. SISTEMAS EMBARCADOS I – PROGRAMAÇÃO BÁSICA EM C


Carregar ppt "SISTEMAS EMBARCADOS I UNIDADE 3 – PROGRAMAÇÃO BÁSICA EM C TURMA: 7º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti"

Apresentações semelhantes


Anúncios Google