Académique Documents
Professionnel Documents
Culture Documents
MONTADOR (assembler):
Tradutor para linguagens de 2ª geração.
COMPILADOR:
Traduz todo o programa de uma vez.
INTERPRETADOR:
Traduz o programa instrução por instrução.
Compiladores e Interpretadores - Ciclo de desenvolvimento
Início
Editar código
fonte
Erros de Sim
linkedição?
Não
Compilar
Sim
Executar
programa
Erros de
compilação? Erros de Sim
tempo de
Execução?
Não
Não
Linkeditar
Fim
Histórico da Linguagem de Programação C
◦ Criada por Denis Ritchie, na década de 1970, para uso em
um computador DEC PDP-11 em Unix.
◦ C++ é uma extensão da linguagem C.
◦ O sistema Unix é escrito em C e C++.
Estrutura básica de um programa C
diretivas para o pré-processador
declaração de variáveis globais
main ()
{
declaração de variáveis locais da função main
comandos da função main
}
Diretivas para o processador - Bibliotecas
◦ Diretiva #include permite incluir uma biblioteca.
◦ Bibliotecas contêm funções pré-definidas,
utilizadas nos programas.
◦ Exemplos:
#include <stdio.h> Funções de entrada e saída
#include <stdlib.h> Funções padrão
#include <math.h> Funções matemáticas
#include <system.h> Funções do sistema
#include <string.h> Funções de texto
O ambiente Bloodshed Dev-C++
◦ O Bloodshed Dev-
Dev-C++ é um ambiente integrado
de desenvolvimento (Integrated Development
Environment –IDE) de programas em C/C++ com
editor, compilador, bibliotecas e debugger.
◦ Pode ser baixado de:
http://www.bloodshed.net/dev/devcpp.html
Usando o Dev-C++ (a)
◦ Inicie o Dev-C++ pelo ícone ou pelo menu.
◦ Crie um novo arquivo, com o comando File, New
Source File.
◦ Edite o seguinte programa (exemplo
exemplo-
exemplo-1.c).
#include <stdio.h>
main()
{
printf ("Alo mundo!");
system("PAUSE");
}
Usando o Dev-C++ (b)
◦ Salve o programa com o nome exemplo-
exemplo-1.c. Para tanto,
selecione o menu File, Save unit as.
◦ Compile o programa com o comando Compilar & Executar,
Executar
ou com a tecla Ctrl-
Ctrl-F9.
◦ Se houver algum erro de sintaxe, aparece uma ou mais
mensagens no rodapé da janela. Neste caso, corrija o
programa e repita.
◦ Se não houver erros, execute o programa com o comando
Executar/Executar ou com a tecla Ctrl-
Ctrl-F10.
10.
#include <stdio.h>
main()
{
printf ("Alo mundo!");
system("PAUSE");
}
Importante
◦ Termine todas as linhas com <;;>
◦ Sempre salve o programa antes de compilar.
◦ Sempre compile o programa antes de executar.
◦ Quando ocorrer um erro de compilação, dê um duplo clique
sobre a mensagem de erro para destacar o comando errado
no programa.
◦ Verifique também a linha anterior, que pode ser a
responsável pelo erro, especialmente se faltar o <;;>.
◦ Use comentários, iniciados por <//>
//>.
//>.
Declarações
◦ Declaram as variáveis e seus tipos.
◦ Os nomes das variáveis devem conter apenas
letras, dígitos e o símbolo <_>.
◦ Até 32 caracteres.
◦ Os principais tipos são: int,
int float,
float double e char
◦ Exemplos:
int n;
int quantidade_valores;
float x, y, somaValores;
char sexo;
char nome[40];
#include <stdio.h>
main()
{
Real: n1, n2, n3, media double n1, n2, n3, media;
...
system("PAUSE");
}
Comando de atribuição
◦ Atribui o valor da direita à variável da esquerda
◦ O valor pode ser uma constante, uma variável ou
uma expressão
◦ Exemplos
x = 4; --> lemos x recebe 4
y = x + 2;
y = y + 4;
valor = 2.5;
sexo = 'F'
Entrada e Saída
◦ Função scanf
scanf ("formatos", &var1, &var2,...)
Exemplos:
int i, j;
float x;
%d inteiro
char c;
char* nome; %f float
scanf("%d", &i); %lf double
scanf("%d %f", &j, &x);
scanf("%c", &c);
%c char
scanf("%s", nome); %s palavra
Entrada e Saída
◦ Função scanf
#include <stdio.h>
main()
{
Real: n1, n2, n3, media double n1, n2, n3, media;
system("PAUSE");
}
Entrada e Saída
◦ Função printf
printf ("formatos", var1, var2,...)
Exemplos:
int i, j;
float x;
%d inteiro
char c; %f float
char* nome; %lf double
printf("%d", i);
printf("%d, %f", j, x);
%c char
printf("%c", c); %s palavra
printf("%s", nome);
Entrada e Saída
◦ Função printf
#include <stdio.h>
main()
{
Real: n1, n2, n3, media double n1, n2, n3, media;
media=(n1+n2+n3)/3 media=(n1+n2+n3)/3;
media=(n1+n2+n3)/3 media=(n1+n2+n3)/3;
system("PAUSE");
}
Praticar!
◦ Exemplo-2.c
#include <stdio.h>
main()
{
double n1, n2, n3, media;
printf("Digite 3 notas: ");
scanf ("%lf %lf %lf",&n1, &n2, &n3);
media=(n1+n2+n3)/3;
printf ("A média é %0.2lf",media);
system("PAUSE");
}
Exercício 1
◦ Tendo como dados de entrada a altura de uma pessoa,
construa um programa que calcule seu peso ideal,
utilizando a seguinte fórmula:
peso ideal = (72.7*h) - 58
Operadores de Atribuição
Funções Matemáticas
#include <math.h>
Exercício 2
◦ Construa um algoritmo que calcule a quantidade de latas de tinta
necessárias e o custo para pintar tanques cilíndricos de combustível, onde
são fornecidos a altura e o raio desse cilindro.
Sabendo que:
a lata de tinta custa R$20,00;
cada lata contém 5 litros;
cada litro de tinta pinta 3 metros quadrados.;
Sabendo que:
Área do cilindro=3,14*raio2 + 2*3,14*raio*altura;
e que raio e altura são dados de entrada.
Operadores Relacionais
if (condição) { if (a<menor) {
comando1; menor=a;
comando2; printf (“%d”, menor);
comando3; }
}
em pseudo-
pseudo-código:
código
se (a<menor) então menor=a;
Estrutura condicional composta
Comando if...
if...else
...else
if (condição) Executa o comando se a condição for
comando; qualquer coisa diferente de zero!
else
comando;
Em pseudo-código:
do { CONTADOR = 0
Repetir
comando1; CONTADOR = CONTADOR + 1
comando2 exibir CONTADOR
enquanto CONTADOR < 10
comando3;
} while (condição);
Exercício 7
◦ Escreva um programa que peça ao usuário que digite três
números inteiros, correspondentes a dia , mês e ano. Teste
os números recebidos, e em caso de haver algum inválido,
repita a leitura até conseguir valores que estejam na faixa
correta (dias entre 1 e 31, mês entre 1 e 12 e ano entre
1900 e 2100).
Verifique se o mês e o número de dias batem. Se estiver tudo certo
imprima o número que aquele dia corresponde no ano.
Comente seu programa.
Vetores (array)
◦ Trata-se de automatizar a declaração de um grande número de dados de um mesmo
tipo simples. As variáveis assim declaradas se acessam através de um índice de tipo
int.
int
Declaração:
int v[100];
última posição=99;
Atribuição:
v [9] = 87;
Acessar um valor:
a = v[9];
Vetores (array)
◦ int v[10];
0
V[5]=10;
1
2
printf (“%d”,V[5]);
3
4
5 10
6
7
8
9
Vetores (array) – exemplo.
exemplo.
◦ Calcular a média da nota de 5 alunos e verificar
quantos conseguiram nota acima da média.
#include <stdio
<stdio.h>
stdio.h>
main()
main()
{
int i, contA=0;
contA=0;
double soma=0, media;
double v[5];
for (i=0;i<5;i++) {
scanf ("%lf
("%lf",
lf", &v[i]);
soma = soma + v[i];
}
media = soma/i;
for (i=0;i<5;i++) {
if (v[i]>media) contA=
contA=contA+1;
contA+1;
}
printf ("%lf
("%lf %d\
%d\n", media, contA);
contA);
system("PAUSE");
}
Exercício 8
◦ Ler 5 números, armazenando-os no vetor X[5]. Copiar este
vetor, de trás para frente (na ordem inversa de leitura), em
um segundo vetor Y[5].
Mostrar o vetor Y.
Strings
◦ Não existe um tipo String em C.
◦ Strings em C são uma array do tipo char que termina com
‘\0’.
◦ Para literais String, o próprio compilador coloca ‘\0’.
#include <stdio
<stdio.h>
stdio.h>
main() {
char re[] = "lagarto";
printf ("%s", re);
system("pause");
}
Para ler uma String
◦ Comando gets
#include <stdio
<stdio.h>
stdio.h>
main(){
main(){
char re [80];
printf ("Digite o seu nome: ");
gets(re);
gets(re);
printf ("Oi %s\
%s\n", re);
system("pause");
}
Para comparar duas strings
◦ strcmp (s1, s2); strcmp retorna 0 se as duas strings são iguais.
Precisa do #include <string.h>
#include <stdio
<stdio.h>
stdio.h>
#include <string.h>
main(
main( ){ Pode utilizar scanf no lugar do gets, só que o
char re[80]; scanf não lê espaços em branco.
printf ("Digite a senha: ");
scanf ("%s", &re);
Se o usuário digitar:
if (strcmp(re,"laranja")==0)
strcmp(re,"laranja")==0) { >“Alexandre Costa e Silva”
printf ("Senha correta\
correta\n"); o scanf vai pegar apenas “Alexandre”.
}
else {
O gets pega tudo.
printf ("Senha invalida\
invalida\n");
}
system("pause");
}
Para saber o tamanho de uma string
◦ int size = strlen(str);
Retorna um valor inteiro com o número de caracteres da String.
Exemplo:
int *TOC2; /* declara um ponteiro para um inteiro (16bits) */
Ponteiros
int teste=20;
int *p;
p=&teste;
p irá armazenar o endereço de memória (0) da variável teste (20). Ou seja, p não armazena o valor 20, mas
sim o endereço (0) da variável teste.
como chegar ao valor 20 usando a variável p?
0 20
1 int teste=20;
2 int *p;
3
4 p=&teste;
5 printf("%d\n",*p);
6
7
8
9
Ponteiros
◦ Exemplo 1:
char algo[5] = { 5, 4, 3, 2, 1 };
char *c;
c=&algo[2];
Colocamos em c o endereço do terceiro elemento de algo:
c[0]=3, c[1]=2 e c[2]=1.
Se tivéssemos feito c=&algo[3], então:
c[0]=2 e c[1]=1.
Ponteiros
◦ Exemplo 2:
int vet_notas[50];
int *pont_notas;
pont_notas=vet_notas;
Para imprimir a primeira e a décima nota de nosso vetor, temos duas opções:
/= <>
Exercício 13..
Fazer cronograma de um programa que gerencie/simule as estruturas de dados estáticas
e dinâmicas (Problema 1)