INTRODUÇÃO À LINGUAGEM C Prof. Msc. Luis Filipe Alves Pereira 2015
INTRODUÇÃO À LINGUAGEM C 02/23 INTRODUÇÃO Criada em 1972 na AT&T Bell Labs É uma das linguagens mais populares. Existem poucas arquiteturas para as quais não existem compiladores para C. C é uma linguagem geral, compilada e de baixo nível (em relação à Python)
INTRODUÇÃO À LINGUAGEM C 03/23 ESTRUTURA BÁSICA Diretivas para o compilador Procedimento principal Instruções #include <stdio.h> //importando biblioteca de entrada e saída int main(int argc, char* argv[]){ printf("esse e o nosso primeiro programa!"); return 0; }
INTRODUÇÃO À LINGUAGEM C 04/23 VARIÁVEIS E MEMÓRIA Memória sequência de células com capacidade fixa. células identificadas por um código (endereço). valores pequenos ocupam uma única célula. valores grandes podem ocupar duas ou mais células Lembre-se da nossa primeira aula!! O computador apenas realiza duas operações: 1. Cálculos lógicos e algébricos 2. Lembra-se de cálculos realizados anteriormente acesso à memória (leitura e escrita) endereço valor 10 9 8 7-7 6 5 4 4222 3 2 1 0
INTRODUÇÃO À LINGUAGEM C 05/23 VARIÁVEIS E MEMÓRIA Variáveis abstração para endereços de memória rótulo simbólico para cada endereço endereço 8 valor 7 14 6 5 4 136 3 2 15 1 0 (antes) a b n s = a + b; d = s / n; (depois) endereço valor 8 10 7-7 6 5 150 4 136 3 2 15 1 0 d a s b n
INTRODUÇÃO À LINGUAGEM C 06/23 VARIÁVEIS E MEMÓRIA Variáveis possuem: nome (rótulo) tipo (domínio) valor (conteúdo) escopo (tempo de vida) Tipos: Escalar (tipos indivisíveis) Inteiro (int) Caractere (char) Enumerado (enum) Real (float, double) Ponteiro Não-Escalar (tipos formados pela composição de outros tipos
INTRODUÇÃO À LINGUAGEM C 07/23 VARIÁVEIS E MEMÓRIA Declaração de Variáveis: com valor inicial: domínio rótulo valor tipo nome = valor; int s = 10; sem valor inicial: domínio rótulo tipo nome; int s; Ao contrário de Python, as variáveis precisam ser declaradas em C. Ao declarar uma variável, informa-se ao compilador a quantidade de espaço que deverá ser reservado na memória para alocar aquele dado.
INTRODUÇÃO À LINGUAGEM C 08/23 ESCRITA E LEITURA NO CONSOLE Função printf() int a = 15; printf("primeira linha\n"); printf("segunda linha com um valor inteiro: %d",a); Função scanf() int valor1, valor2; printf("digite dois valore: \n"); scanf("%d %d", &valor1, &valor2); printf("voce digitou %d e %d",valor1,valor2);
INTRODUÇÃO À LINGUAGEM C 09/23 EXEMPLO Atribuições e operações algébricas possuem sintaxe semelhantes as de Python: #include <stdio.h> int main(int argc, char* argv[]) { int horas, minutos, segundos; int total_segundos; printf("digite o intervalo de tempo (segundos): "); scanf("%d", &total_segundos); horas = (total_segundos / 60) / 60; minutos = (total_segundos / 60) % 60; segundos = total_segundos % 60; } printf("\n"); printf("total de segundos: %d \n", total_segundos); printf("tempo: %d:%d:%d\n", horas, minutos, segundos); return 0;
INTRODUÇÃO À LINGUAGEM C 10/23 ESTRUTURAS CONDICIONAIS Operadores lógicos && and or! not if(idade>=18){ printf("voce ja pode obter habilitacao"); } else { printf("espere mais um pouco"); }
INTRODUÇÃO À LINGUAGEM C 11/23 ESTRUTURAS DE REPETIÇÃO sintaxe comando while int soma = 0; int numero = 5; while(numero > 0){ soma = soma + numero; numero = numero - 1; } printf("a soma dos valores e: %d",soma);
INTRODUÇÃO À LINGUAGEM C 12/23 ESTRUTURAS DE REPETIÇÃO sintaxe comando for int soma = 0; int numero; for(numero = 0; numero <= 5; numero++){ soma = soma + numero; } printf("a soma dos valores e %d",soma); atalho original numero++ numero = numero + 1 numero-- numero = numero - 1 numero*=10 numero = numero*10 numero+=3 numero = numero + 3 numero/=4 numero = numero / 4
INTRODUÇÃO À LINGUAGEM C 13/23 VETORES Sequência de valores do mesmo tipo Acesso por índice, tamanho fixo Alocados sequencialmente em memória Declaração do vetor: tipo rótulo tamanho int meuvetor[10]; Declaração com conteúdo inicial: int meuvetor[5] = {1,2,3,4,5}; int v[10] v[0] v[1] v[2] v[3] v[4] v[5] v[6] v[7] v[8] v[9]
INTRODUÇÃO À LINGUAGEM C 14/23 VETORES Acessando o vetor: vetor[5] = 3 vetor[0] = vetor[1] + vetor[2] Exemplo: o que o código abaixo deve imprimir? int meuvetor[100]; int indice; for(indice = 0; indice < 100; indice++){ printf("meuvetor[%d] = %d\n",indice,meuvetor[indice]); }
INTRODUÇÃO À LINGUAGEM C 15/23 VETORES vetores de tamanho variável: a solução simples. int valores[100]; int numero_elementos; Limite de tamanho que poderá ser usado Tamanho efetivamente utilizado código exemplo: printf("qual o tamanho do vetor? (máximo 100)\n"); scanf("%d", &numero_elementos); printf("escreva os números: \n"); for (i=0; i < numero_elementos; i++){ scanf("%d",&valores[i]); }
INTRODUÇÃO À LINGUAGEM C 16/23 VETORES DE CARACTERES Caracteres individuais: a, A, 7,... (aspas simples) Sequência de caracteres: Introdução à Programação (aspas duplas) Vetor de caracteres cada caractere do texto é um elemento do vetor a sequência de caracteres acaba com o caractere nulo \0 char[16] H E L L O W O R L D! \0 Em Python, o tipo str abstrai os detalhes de implementação de um vetor de caracteres.
INTRODUÇÃO À LINGUAGEM C 17/23 VETORES DE CARACTERES Declaração de vetor de caracteres: Tamanho máximo do vetor char texto[50]; Declaração e inicialização do vetor de caracteres: char texto[50] = Chico Buarque de Holanda ; Código exemplo: char texto[50] = "Chico Buarque de Holanda"; printf("texto original: %s\n", texto); scanf("%s", texto); printf("novo texto: %s", texto);
INTRODUÇÃO À LINGUAGEM C 18/23 VETORES DE CARACTERES Atribuir à uma variável tipo texto: char texto[50];... texto = Vinicius de Moraes ; ERRADO #include <string.h>... strcpy(texto, Vinicius de Moraes ); CORRETO
INTRODUÇÃO À LINGUAGEM C 19/23 FUNÇÕES Estrutura para definição de novas funções tipo nome( parâmetros ){ declarações instruções return valor; } Código exemplo: int maximo(int a, int b){ if(a>b){ return a; } else { return b; } } int main(int argc, char* argv[]) { } printf("maximo de 8 e 10: %d", maximo(8,10)); return 0;
INTRODUÇÃO À LINGUAGEM C 20/23 PONTEIROS Variáveis que armazenam um endereço de memória Ponteiro p no endereço 5012 com o conteúdo 5036 Inteiro s no endereço 5036 com o conteúdo 4 p s endereço valor 5000 5004 5008 5012 5036 5016 5020 5024 5028 5032 5036 4 5040
INTRODUÇÃO À LINGUAGEM C 21/23 PONTEIROS Declarando ponteiros: tipo *nome; código exemplo: int *p; p é uma variável que contém o endereço de outra variável do tipo inteiro Operador &: retorna o endereço da variável float x = -1.0; y = 10.0; float *p; p = &x;
INTRODUÇÃO À LINGUAGEM C 22/23 PONTEIROS Operador *: (se no lado direito de uma atribuição) retorna o conteúdo do endereço apontado. float x = -1.0; y = 10.0; float *p; p = &x; y = (*p)+5.0;
INTRODUÇÃO À LINGUAGEM C 23/23 LEMBRE-SE...