Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br
Sumário Histórico da linguagem C Visão geral Estrutura do compilador Organização do código fonte Sintaxe Tipos, Operações, Funções, Expressões Funções básicas printf( ), scanf( ) Estruturas de controle de fluxo if( ), if else if( ), switch( ), for( ), while( ), do while( ), break, continue Exemplos 2
Histórico 1/5 Criada por Dennis Ritchie (1972 2011) AT&T (Bell Labs) Reescrita do Sistema Operacional UNIX 1970: UNIX é liberado às universidades Popularização da linguagem C Linguagem de propósito geral Adequada à programação estruturada Criação de compiladores, bancos de dados, editores de texto, etc. Características principais Portabilidade, modularidade, compilação separada, recursos de baixo nível, geração de código eficiente, confiabilidade, simplicidade e facilidade de uso 3
Visão Geral de um Programa em C 1/5 A geração de um executável a partir de um código fonte obedece a uma série de operações Editor Código-fonte Pré-Processador Código-fonte expandido Linker Arquivo executável Compilador Arquivo objeto 4
Visão Geral de um Programa em C 1/5 Organização do código fonte (Editor) //---------------------------------------------------------------// // Universidade Federal de Santa Maria // // Curso de Engenharia de Controle e Automação // // DPEE 1038 - Estrutura de Dados para Automação // // // // Programadores: // // Nome 1 (Matrícula1) // // Nome 2 (Matrícula2) // // // // Versão: 1.0 - Data: 04/04/2013 // //===============================================================// // Descrição do Programa // //===============================================================// // Escreva aqui uma breve descrição do seu programa. // // // // v1.0 - Versão Inicial. // //---------------------------------------------------------------// 5
Visão Geral de um Programa em C Organização do código fonte (Editor) //---------------------------------------------------------------// // Arquivos de cabeçalho // //---------------------------------------------------------------// #include <stdio.h> #include <math.h> //---------------------------------------------------------------// // Função principal // //---------------------------------------------------------------// int main() { } //---------------------------------------------------------------// 6
Sintaxe São regras detalhadas para cada construção válida em C Tipos: propriedades dos dados Declarações: dão significado a um identificador (variável), alocar memória, definir funções Funções: ações de um programa Expressões: chamada de funções, alterações de valores, etc. As funções são as entidades básicas de um programa em C Podem ser a união de uma ou mais funções, cada qual desempenhando uma tarefa específica Todo programa em C inicia com a função main( ) 7
Tipos 1/5 Quando um identificador édeclarado, ele recebe um tipo Como o dado é representado e quais operações podem ser realizadas Tipos de Função Tipos de objetos de dados Não escalares Tipos escalares Estrutura União Matriz Aritméticos Inteiros Flutuantes char short int long (signed) (unsigned) float double long double Ponteiros para funções para objetos de dados 8
Identificadores São nomes usados para fazer referência à Variáveis Constantes Funções Outros objetos definidos pelo usuário Case sensitive: difere maiúsculas e minúsculas // Declaração de variáveis int variavel1; int Variavel1; 9
Operadores Operador atribuição: = Operadores aritméticos: + * / % main() { int x, y; x=10; y=3; printf("%d \n", x/y); printf("%d \n", x%y); } // Declaração // Inicialização 10
Operadores Operadores lógicos: retornam 0 (falso) ou 1 (verdadeiro) > maior que >= maior ou igual < menor <= menor ou igual == igual!= não igual (diferente) Operadores relacionais: retornam 0 (falso) ou 1 (verdadeiro) && and or! not 11
Operadores Exemplo main() { int i, j; printf("digite dois numeros: "); scanf("%d%d",&i,&j); printf("%d == %d é %d \n", i, j, i==j); printf("%d!= %d é %d \n", i, j, i!=j); printf("%d <= %d é %d \n", i, j, i<=j); printf("%d >= %d é %d \n", i, j, i>=j); printf("%d < %d é %d \n", i, j, i< j); printf("%d > %d é %d \n", i, j, i> j); } 12
Funções Básicas printf( ) printf("expressao de controle", argumentos); Função de I/O que permite escrever no dispositivo padrão (tela) Expressão de controle Contém caracteres que serão exibidos na tela Contém códigos de formatação Argumentos Separados por vírgula 13
Funções Básicas Códigos de formatação \n // Nova linha \t // Tab \b // Retrocesso \ // Aspas \\ // Barra %c // Caracteres simples %d // Decimal %e // Notação científica %f // Ponto flutuante %o // Octal %s // Cadeia de caracteres %u // Decimal sem sinal %x // Hexadecimal 14
Funções Básicas Exemplos main() // Exibição na tela { printf("este é o numero dois: %d", 2); printf("%s esta a %d milhas\n do sol", "Venus", 67e6); } main() // Arredondamento { printf("\n %4.1f", 3456.78); // 3456.8 printf("\n %1.3d", 3456.78); // 3456.780 } Parcela inteira Parcela fracionária 15
Funções Básicas scanf( ) scanf("expressão de controle", argumentos); Função de I/O que permite ler dados do dispositivo padrão (teclado) Expressão de controle Contém informações sobre o tipo de dado lido Ex: decimal (%d), float (%f), hexadecimal (%x), cadeia de caractere (%s) Argumentos Endereço das variáveis Operador endereço: & 16
Funções Básicas Exemplo main() { // Declaração da variável int num; // Escrita na tela printf("digite um numero: "); // Leitura do teclado scanf("%d", &num); // Exibição do resultado printf("\n o numero é %d", num); printf("\n o endereço é %u", &num); } 17
Estruturas de Controle de Fluxo if( ) if(condição) {comandos;} else {comandos;} Basta à condição seja diferente de zero para ser verdadeira A condição deve ser igual a zero para ser falsa main() { int a, b; scanf("%d%d", &a, &b); if (b) { printf("%d\n", a/b); } else { printf("divisao por zero"); } } 18
Estruturas de Controle de Fluxo 1/5 if else if( ) if(condição) {comandos;} else if(condição) {comandos;} else if(condição) {comandos;}... else {comandos;} Testes sucessivos até que uma condição seja satisfeita 19
Estruturas de Controle de Fluxo 1/5 switch( ) switch(variável) { case constante1: {comandos; break;} case constante2: {comandos; break;} default: {comandos;} } Uma variável é testada sucessivamente contra possíveis resultados Quando uma condição é atendida, o bloco éexecutado Se nenhuma condição é atendida, o bloco default éexecutado Opcional 20
Estruturas de Controle de Fluxo for( ) for(inicialização, condição, incremento) {comandos;} Basta que condição seja diferente de zero para ser verdadeira A condição deve ser igual a zero para ser falsa main() { int x; for(x=1; x<100; x++) { printf("%d \n", x); } } 21
Estruturas de Controle de Fluxo while( ) while(condição) {comandos;} Basta que condição seja diferente de zero para ser verdadeira Os comandos são executados continuamente enquanto a condição é verdadeira (teste no início) main() { char ch; while(ch!='a') { ch=getchar() }; } 22
Estruturas de Controle de Fluxo 1/5 do while( ) do {comandos;} while(condição) Basta que condição seja diferente de zero para ser verdadeira Os comandos são executados continuamente enquanto a condição é verdadeira (teste ao final) 23
Revisão Histórico: Dennis Ritchie e UNIX Visão geral Estrutura do compilador Organização do código fonte Sintaxe do programa Tipos, declarações, funções, expressões Funções básicas printf( ), scanf( ) Estruturas de controle de fluxo if( ), if else if( ), switch( ), for( ), while( ), do while( ) 24