Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... ·...

21
Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Prof. Alessandro Zimmer Introdução à Engenharia Elétrica © Alessandro Zimmer - 2013 Linguagem C “A diferença entre o difícil e o impossível é que o primeiro demora um pouco menos de tempo para ser alcançado..”

Transcript of Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... ·...

Page 1: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Técnicas de Programação em Engenharia Elétrica I

- Engenharia de Sistemas Embarcados -Prof. Alessandro Zimmer

Introdução à

Engenharia Elétrica © Alessandro Zimmer - 2013

Linguagem C

“A diferença entre o difícil e o impossível é que o primeiro demora um

pouco menos de tempo para ser alcançado..”

Page 2: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Ciclo de Desenvolvimento de um Programa1. Determinação e entendimento do problema

(algoritmo + fluxograma + pseudo-linguagem);

2. Codificação (tradução do algoritmo para a

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

2. Codificação (tradução do algoritmo para a sintaxe da linguagem C);

3. Compilação (tradução do código C p/ linguagem de baixo nível) � detecção de erros de sintaxe;

Page 3: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Ciclo de Desenvolvimento de um Programa4. Link-edição (combina o código do usuário

com funções de bibliotecas);5. Depuração e testes (eliminação de

erros/problemas no processamento com o

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

erros/problemas no processamento com o uso do debugger, testes de mesa e outras técnicas) � detecta erros de lógica.

ERRO = BUG !! Uma vez depurado... Retornar ao 3...5

Page 4: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Características Gerais do C

• Criada por Dennis Ritchie, em 1972 (Bell Labs);

• Utiliza poucas palavras reservadas (comandos);

• Diferencia letras maiúsculas de minúsculas;

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

• Diferencia letras maiúsculas de minúsculas;

• Permite a chamada recursiva a funções;

• Linguagem de médio nível;

• De uso abrangente;

• Portável entre plataformas (Ansi C).

Page 5: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Baixo Nível

7C90EC45 mov dword ptr [esp+4], 1

7C90EC4D mov dword ptr [esp+10h], 0

7C90EC55 mov eax, dword ptr [ebp+8]

Introdução ao C - Linguagens

Engenharia Elétrica © Alessandro Zimmer - 2013

7C90EC58 mov dword ptr [esp+8], eax

7C90EC5C mov eax, esp

7C90EC5E push eax

7C90EC5F call 7C90EBAC

Page 6: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Alto Nível

CREATE TABLE tbl_ufpr

(GRR CHAR(15),

Nome CHAR(50),

Nota DECIMAL(4,2),

Introdução ao C - Linguagens

Engenharia Elétrica © Alessandro Zimmer - 2013

Nota DECIMAL(4,2),

Faltas INT)

SELECT Nome FROM tbl_ufpr WHERE Nota > 4.5 AND Faltas <10

Page 7: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Código em C

void main(void)

{

int x,t, res;

printf(“Entre com os valores de x e y\n”);

Introdução ao C - Linguagens

Engenharia Elétrica © Alessandro Zimmer - 2013

printf(“Entre com os valores de x e y\n”);

scanf(“%d,%d”,&x,&y);

res=x+y;

printf(“A soma de x e y é %d”,res);

}

Page 8: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Estrutura de um Programa em C

- Declarações globais;

<tipo de dado> função main(lista de parâmetros)

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

- Funções complementares no formato:

<tipo de dado> nome da função (lista parâm.)

Protótipo da função

Page 9: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Declarações Globais

• Arquivos de cabeçalho (.h) (diretiva #include);� Contém os protótipos das funções.

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

� Contém os protótipos das funções.

• Definição de constantes (diretiva #define);

• Declaração de variáveis, estruturas de dados e ponteiros globais;

• Declaração de protótipos de funções.

Page 10: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Função main( )

- Localizada no arquivo principal. É o ponto de entrada do programa início da execução. Não podem haver mais do que uma função main( ) em um mesmo programa em linguagem C.

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

um mesmo programa em linguagem C.

Outras Funções

- Porções de código que desempenham tarefas específicas no programa (funções).

Page 11: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Tipos Básicos de DadoObs: O tamanho e a faixa de variação depende do tipo

de processador e da implementação do compilador C.

Tipo Faixa mínima (ANSI C)

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

Tipo Faixa mínima (ANSI C)CHAR -127 a + 127 (1 caractere)INT -32767 a 32767FLOAT Valores reais c/precisão simples (6 dig.)DOUBLE Valores reais c/dupla precisão (10 dig.)VOID Tipo de dado sem significado

Page 12: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Modificadores- Operadores opcionais incluídos na frente dos

tipos de dados, alterando-os.Tipos Faixaunsigned char 0 a 255

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

signed char = charunsigned int 0 a 65535signed int = intshort int = int

Page 13: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Modificadores

Tipos Faixa

unsigned short int 0 a 65535

signed short int = short int

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

signed short int = short int

long int +-2147483647

signed long int = long int

unsigned long int 0 a 4294967295

Page 14: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Modificadores

Tipos Faixa

long float = double

long double precisão de 10

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

long double precisão de 10

dígitos + n. longo

(80 bits)

Page 15: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Identificadores- Nomes de funções, variáveis, constantes,

rótulos, etc. do C.- Um ou mais caracteres (dependendo do

compilador). Em ANSI C: 31 caracteres

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

compilador). Em ANSI C: 31 caracteres para nomes internos e 6 para nomes externos.

- Composto por uma letra seguido de uma seqüência de letras, dígitos ou sublinhados.

Page 16: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Identificadores

- O identificador não pode ter o mesmo nome do que uma função de biblioteca em

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

nome do que uma função de biblioteca em uso ou uma função do usuário.

- Não pode ser igual a palavras chaves do C.

Page 17: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Identificadores

Válidos Inválidos

X 1X

Y X*/

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

Y X*/

Z Z_12?

contador 1cont2

cont1 _cont1

Page 18: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Identificadores

Válidos Inválidos

cont1_1 1*cont

vovo_foi_a_feira mamae tambem

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

principal main

avoid void

aBc 1*2

AbC A++

Page 19: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Expressões em C

Dados (variáveis + constantes) + Operadores

Variáveis

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

- Identificadores que representam posições de memória;

- Devem ser declarados antes de serem utilizados;- O local de sua declaração define o escopo

(abrangência da variável – local, global, param.)

Page 20: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Declarações de Variáveis

TIPO LISTA;

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

TIPO = modificador + tipo de dado;

LISTA = um ou mais identificadores separados por vírgulas.

Page 21: Técnicas de Programação em Engenharia Elétrica Izimmer/TE207/28_mar_2015_TE207_Aula_3... · Técnicas de Programação em ... uso do debugger, testes de mesa e outras ... int

Declarações de Variáveis

Ex:

int x, y, z, papagaio, contador;

Introdução ao C

Engenharia Elétrica © Alessandro Zimmer - 2013

int x, y, z, papagaio, contador;

char sexo, tipo, a1, xy5;

long double salario, imposto, preco;