Programação C
Módulo 01 – Introdução à linguagem C
Italo Valcy <[email protected]>
www.ieee.org/ufba
Italo Valcy Programação em C
Licença de uso e distribuição
Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da:
Creative Commons License:
Atribuição - Uso não comercial - Permanência da Licença
http://creativecommons.org/licenses/by-nc-sa/3.0/
Este curso foi baseado no curso “Algoritmos e Programação de
Computadores” do prof. Centoducatte, da UNICAMP, disponível
em <http://www.ic.unicamp.br/~ducatte/mc102/mc102.html>, e nas aulas de prof. Arnaldo V. Moura e Daniel F. Feber.
Italo Valcy Programação em C
2 / 59
Introdução a programação
Italo Valcy Programação em C
3 / 59
Introdução a programação
Algoritmo
O que é um algoritmo?
“É um conjunto finito de regras, bem
definidas, para a solução de um problema
em um tempo finito”
Algoritmo mais antigo (400 a 300 AC): Algoritmo de
Euclides, que calcula o máximo divisor comum (MDC)
de dois números inteiros positivos.
mdc (x, y) = mdc (y, x mod y); mdc (x, 0) = x
Italo Valcy Programação em C
4 / 59
Introdução a programação
Algoritmo
Algoritmo de Euclides:
mdc (x, y) = mdc (y, x mod y); mdc (x, 0) = x
Entrada: dois valores inteiros positivos m e n (m > n)
Saída: máximo divisor comum de m e n
Passo 1: Adote x = m e y = n;
Passo 2: Adote r = (resto de x dividido por y);
Passo 3: Adote novos valores x = y e y = r;
Passo 4: Se r é diferente de 0, volte ao passo 2; senão pare
com a resposta x.
Italo Valcy Programação em C
5 / 59
Introdução a programação
Algoritmo
Enfoque em algoritmos computacionais
Algoritmos corretos
Conceito de “programar”
Ferramentas necessárias:
Fluxograma
Pseudo-linguagem
Linguagem de programação
Ambiente de programação
Italo Valcy Programação em C
6 / 59
Introdução a programação
Algoritmo (fluxograma)
Italo Valcy Programação em C
7 / 59
Introdução a programação
Exemplo: qual o maior número
Italo Valcy Programação em C
8 / 59
Introdução a programação
Exemplo: qual o maior número
Italo Valcy Programação em C
9 / 59
Introdução a programação
Linguagem de programação
A linguagem de programação é um veículo
para se escrever algoritmos.
Características:
Vocabulário restrito
Regras de sintaxe
Recursos automáticos de verificação da sintaxe da
linguagem
Italo Valcy Programação em C
10 / 59
Introdução a programação
Linguagem de programação
Várias classificações:
Paradigma: funcional, lógica, estruturada, orientada
a objeto, etc.
Compiladas/interpretadas, fortemente ou
fracamente tipadas, alto nível até baixo nível, etc.
Várias linguagens:
C/C++, Java, PHP, C#, Python, Perl, Ruby,
Assembly, Lua, etc.
Italo Valcy Programação em C
11 / 59
Introdução a programação
Exemplo: qual o maior número
Italo Valcy Programação em C
12 / 59
Introdução a programação
Etapas para execução
Italo Valcy Programação em C
13 / 59
Programação em C
Italo Valcy Programação em C
14 / 59
Programação em C
“Um programa em C, independentemente de seu
tamanho, consiste em funções e variáveis. Uma função
contém comandos que especificam as operações de
computação a serem feitas, e as variáveis armazenam
valores usados durante a computação.”
-- Kernighan e Ritchie, 1989:6
Italo Valcy Programação em C
15 / 59
O que é C?
É uma linguagem de programação de propósito geral
Criada por Dennis Ritchie
Derivada da linguagem B
Rápida e “portável” (ANSI C)
Várias aplicações...
Kernel do Linux
GNOME
Programação de circuitos
...
Italo Valcy Programação em C
16 / 59
Programação em C
Estrutura do código fonte
Italo Valcy Programação em C
17 / 59
Programação em C
Estrutura do código fonte
Comentários
Texto ignorado pelo compilador
Documentação útil para descrever trechos do algoritmo
Possível em qualquer posição do código fonte
Duas formas para comentários:
Uma linha: // comentário...
Várias linhas: /* comentário …
mais comentário */
Italo Valcy Programação em C
18 / 59
Programação em C
Estrutura do código fonte
Diretivas de compilador
Informam outros arquivos que devem ser
consultados antes de compilar
Definem parâmetros utilizados pelo compilador
Colocadas no início do código fonte
Italo Valcy Programação em C
19 / 59
Programação em C
Estrutura do código fonte
Procedimento principal (main())
Seqüência de instruções
Pontuação: Ponto-e-vírgula separa instruções
Chaves agrupam instruções relacionadas: { }
Italo Valcy Programação em C
20 / 59
Programação em C
Estilo do código fonte
Linhas em branco são ignoradas
Italo Valcy Programação em C
21 / 59
Programação em C
Estilo do código fonte
Espaços e tabulações são ignoradas
Italo Valcy Programação em C
22 / 59
Programação em C
Estilo do código fonte
De preferência, uma instrução por linha!
Italo Valcy Programação em C
23 / 59
Primeiros passos
Italo Valcy Programação em C
24 / 59
Primeiros passos
O que você precisa?
Compilador (DJGPP, etc.)
Editor de texto (gedit/notepad, IDE)
C é Case-Sensitive:
soma != Soma != SOMA != SoMa
Originalmente Programação Modular, mas...
suporta:
POO
Programação Concorrente
…
Italo Valcy Programação em C
25 / 59
Primeiros passos
Primeiro programa em C
Exercício: fazer um programa que exiba a
seguinte mensagem na tela: “Ola Mundo!!!”
Italo Valcy Programação em C
26 / 59
Primeiros passos
Primeiro programa em C
Exercício: fazer um super-programa que exiba
a seguinte mensagem na tela: “Ola Mundo!!!”
/* Primeiro programa em C: ola­mundo.c */
#include <stdio.h>
int main() {
printf(“Ola Mundo!!!\n”);
}
Italo Valcy Programação em C
27 / 59
Primeiros passos
Primeiro programa em C
Compilar e executar:
gcc -o ola-mundo ola-mundo.c
./ola-mundo
No Dev C++:
Executar > Compilar (ou CTRL+F9)
Executar > Executar (ou CTRL+F10)
Italo Valcy Programação em C
28 / 59
Primeiros passos
Funções básicas de I/O
Função saída: printf
printf – print + formato
Exemplo de utilização:
printf(string-de-controle, lista-de-argumentos)
printf ("%f",40.345) -> "40.345"
printf("Ola mundo!\n");
Italo Valcy Programação em C
29 / 59
Primeiros passos
Funções básicas de I/O
Função saída: printf
Italo Valcy Programação em C
30 / 59
Primeiros passos
Funções básicas de I/O
Função entrada: scanf
scanf – scan + formato
Exemplo de utilização:
scanf(string-de-controle, lista-de-argumentos)
scanf ("%d",&x);
scanf("%f %f", &num1, &num2);
Cuidado com o buffer na leitura de string...
Italo Valcy Programação em C
31 / 59
Variáveis e tipos de dados
Italo Valcy Programação em C
32 / 59
Memória
Revisão de algoritmos
Algoritmos usam dados e
produzem um resultado.
Um passo de um algoritmo:
Lê dados armazenados
no computador
Executa operações
matemáticas e lógicas
sobre dados.
Armazena o resultado.
Italo Valcy Programação em C
33 / 59
Memória
Conceitos
Memória: sequência de células
Célula armazena um dado
Posição da célula = endereço
Célula = endereço + conteúdo
Um único valor por célula
Valores grandes: mais células
Armazenamento volátil
Italo Valcy Programação em C
34 / 59
Memória
Operações na memória
1. Consulta (lê) células de memória
2. Programa calcula um novo valor
3. Armazena (escreve) o novo valor em uma célula
Italo Valcy Programação em C
35 / 59
Memória
Exemplo de operação em memória
Máximo Divisor Comum
1. Leia um número e escreva na célula 1
2. Leia um número e escreva na célula 2
3. Divida o valor da célula 1 pelo valor da
célula 2. Guarde o quociente na célula 3 e o
resto na célula 4.
4. Se o valor da célula 4 for 0 (zero), então
mostre o valor da célula 2 e PARE.
5. Escreva na célula 1 o valor da célula 2.
6. Escreva na célula 2 o valor da célula 4.
7. Retorne ao passo 3.
Italo Valcy Programação em C
36 / 59
Memória
Dificuldades
Complexidade desnecessária no algoritmo
Difícil manutenção do código
Impossível prever células livres
Interferência por execução simultânea
Italo Valcy Programação em C
37 / 59
Memória
Conceitos
Abstração dos endereços de memória
Rótulo para cada endereço
Maior semelhança com descrição do algoritmo
Italo Valcy Programação em C
38 / 59
Memória
Exemplo de operação em memória
Máximo Divisor Comum
1. Leia um número e escreva na variável A
2. Leia um número e escreva na variável B
3. Divida o valor da variável A pelo valor da célula 2.
Guarde o quociente na variável Q e o resto na variável R.
4. Se o valor da variável R for 0 (zero), então mostre o valor
da variável B e PARE.
5. Copie o conteúdo da variável B para variável A
6. Copie o conteúdo da variável R para variável B
7. Retorne ao passo 3.
Italo Valcy Programação em C
39 / 59
Variáveis e tipos de dados
Variáveis
Uma variável é uma porção de memória,
utilizada para armazenar um determinado
valor:
a =5
b=2
a=a+1
result = a – b
Italo Valcy Programação em C
40 / 59
Variáveis e tipos de dados
Identificadores
Cada variável necessita de um Identificador que a
distingue das outras:
Lestras (a-z, A-Z) + dígitos (0-9) + underscore (_)
Não podem iniciar com dígitos
Cuidado com as palavras reservadas:
Dica de boa prática:
Uso de identificadores mnemónicos
Italo Valcy Programação em C
41 / 59
Variáveis e tipos de dados
Tipos de dados fundamentais
Ok, iremos armazenar os dados na memória,
mas o computador precisa saber que tipo de
dado está armazenando...
Tipos fundamentais:
char – Armazenamento de caracteres
int – Armazenamento de inteiros
float – Ponto flutuante em precisão simples
double – Ponto flutuante em dupla precisão
Italo Valcy Programação em C
42 / 59
Variáveis e tipos de dados
Variações dos tipos básicos
unsigned char: caracter sem sinal;
long int: número inteiro, com domınio estendido;
unsigned int: numero inteiro positivo;
unsigned long int: numero inteiro positivo com
domínio estendido.
short int: inteiro com dom ınio
́
reduzido.
unsigned short int: inteiro positivo com domínio
reduzido.
Italo Valcy Programação em C
43 / 59
Variáveis e tipos de dados
Características dos tipos
NOTA: é possível especificar a precisão de formatação
no printf, por exemplo, das seguintes maneiras:
­ printf(“%.2f”, 12.66668); => 12.67
­ printf("% 10s", "aaa"); => “ aaa”
Italo Valcy Programação em C
44 / 59
Variáveis e tipos de dados
Declaração de variáveis
Para declarar variáveis em C, digite o tipo da
variável seguido por um identificador válido:
int a;
int b;
float mynumber;
É possível declarar variáveis de mesmo tipo na
mesma linha:
int a, b;
Italo Valcy Programação em C
45 / 59
Variáveis e tipos de dados
Inicialização de variáveis
É possível inicializar variáveis através de
atribuição após a declaração:
#include <stdio.h>
int main(void){
int evento ;
char corrida;
float tempo;
evento = 5;
corrida = 'C';
tempo = 27.25;
printf(“O tempo vitorioso na eliminatoria %c”,corrida);
printf(“\nda competicao %d foi %f.”, evento, tempo);
return 1;
}
Italo Valcy Programação em C
46 / 59
Variáveis e tipos de dados
Inicialização de variáveis
Ou diretamente na sua declaração:
#include <stdio.h>
int main(void){
int evento = 5;
char corrida = 'C';
float tempo = 27.25;
printf(“O tempo vitorioso na eliminatoria %c”,corrida);
printf(“\nda competicao %d foi %f.”, evento, tempo);
return 1;
}
Mais de uma variável de mesmo tipo:
int a = 10, b = 50, c;
Italo Valcy Programação em C
47 / 59
Variáveis e tipos de dados
Exercício
Aponte os erros no programa abaixo:
#include <stdio.h>
int main(void){
int a=1; x=2; c=3;
float 1a_parcela = 100.0; // valor do carro
float d := 54.12;
printf(“Os numeros sao: %d, %d e %d\n,a,d,c,x)
Printf(“1a parcela = %f\n”, 1a_parcela);
}
Italo Valcy Programação em C
48 / 59
Operadores
Italo Valcy Programação em C
49 / 59
Operadores
Operadores Aritméticos
Operadores aritméticos
A divisão inteira trunca qualquer parte fracionária
A seguinte expressão produz o resto da divisão de
x por y (somente aplicado à int):
x%y
5 % 3 resulta em 2
Italo Valcy Programação em C
50 / 59
Operadores
Operadores Aritméticos – Precedência
Os operadores aritméticos se associam da
esquerda para direita
Precedência:
os operadores binários + e – possuem a mesma
precedência,
que é menor que a precedência de *, / e %,
que por sua vez é menor que a do + e – unário.
Italo Valcy Programação em C
51 / 59
Exercício
Programa para operações aritméticas
Fazer um programa que leia três inteiros a
partir do teclado, calcule e imprima a soma, a
média e o produto entre eles. Exemplo:
Entre com tres valores inteiros: 13 27 15
Soma: 55
Media: 18.33
Produto: 5265
Italo Valcy Programação em C
52 / 59
Exercício
Programa para operações aritméticas
Fazer um programa que leia três inteiros a
partir do teclado, calcule e imprima a soma, a
média e o produto entre eles. Exemplo:
#include <stdio.h>
int main() {
int a,b,c;
printf("Entre com tres valores inteiros: ");
scanf("%d %d %d",&a,&b,&c);
printf("Soma: %d\n", a+b+c);
printf("Media: %.2f\n", (a+b+c)/3.0);
printf("Produto: %d\n",a*b*c);
return 0;
}
Italo Valcy Programação em C
53 / 59
Exercício
Conversor de dias para anos
Fazer um programa que leia um número natural,
representando a quantidade de dias, e exiba o
equivalente a quantidade de anos.
Exemplo:
365 dias => ~1 ano
1461 dias => 4 anos
Dica: para ler um inteiro na variável x, fazemos:
scanf(“%d”, &x);
Dica: para imprimir int e float (x e y, respec.):
printf(“numero int: %d; numero float: %f\n”, x, y);
Italo Valcy Programação em C
54 / 59
Exercício
Conversor de dias para anos
Fazer um programa que leia um número
natural, representando a quantidade de dias, e
exiba o equivalente a quantidade de anos.
/* Conversao dias para anos: dias2anos.c */
#include <stdio.h>
int main() {
int dias;
float anos;
printf(“Digite o numero de dias: ”);
scanf(“%d”,&dias);
anos = dias / 365.25;
printf(“\n%d dias equivale a %f anos.\n”,dias, anos);
}
Italo Valcy Programação em C
55 / 59
Exercício
Programa um pouco mais trabalhado
Fazer um programa que leia um número inteiro de cinco
dígitos, separa o inteiro em seus dígitos individuais e
imprime os dígitos separados entre si por três espaços
cada [Dica: utilize operadores de divisão de inteiros e
módulo]
Entre um inteiro de 5 digitos: 42339
4 2 3 3 9
Italo Valcy Programação em C
56 / 59
Referências
KERNIGHAN, B.W. C and RITCHIE, D.M.: A
linguagem de programação. Tradução de: The C
Programming Language. Edisa, 1986.
Curso
de
C,
UFMG.
Disponível
http://www.mtm.ufsc.br/~azeredo/cursoC/
em:
Curso
de
C,
UNICAMP.
Disponível
em:
http://www.ic.unicamp.br/~ducatte/mc102/mc102.html
C
Library
Reference.
Disponível
http://www.cplusplus.com/reference/clibrary/
Italo Valcy Programação em C
em:
57 / 59
Dúvidas
Italo Valcy Programação em C
58 / 59
Download

Programação C