Buscar

introduoalinguagemc-120415195326-phpapp01

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 155 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 155 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 155 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lógica de 
Programação
Prof. Camilo Carmo dos Santos
Introdução à Linguagem C
Técnico em informática
MONTADOR (assembler)
Tradutor para linguagens de 2a geração.
COMPILADOR:
TRADUTOR
CÓDIGO FONTE 
... LET SOMA = VAR1 + TOTAL ...
(linguagem de prog.)
CÓDIGO OBJETO 
... 00010110111001011001011010 ...
(“executável”)
Tradução
2
COMPILADOR:
Traduz todo o programa de uma vez.
INTERPRETADOR:
Traduz o programa instrução por instrução.
Histórico da Linguagem 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
3
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
4
declaração de variáveis locais da função main
comandos da função main
}
P
r
o
f
.
 
C
a
m
i
l
o
 
C
a
r
m
o
 
d
o
s
 
S
a
n
t
o
s
Diretivas para o processador -
Bibliotecas
Diretiva #include permite incluir uma 
biblioteca
Bibliotecas contêm funções pré-
definidas, utilizadas nos programas
Exemplos
Funções de entrada e saída#include <stdio.h>
L
ó
g
i
c
a
 
d
e
 
P
r
o
g
r
a
m
a
ç
ã
o
 
–
P
r
o
f
.
 
C
a
m
i
l
o
 
C
a
r
m
o
 
d
o
s
 
S
a
n
t
o
s
Cap. 1 - Visão Geral 5
Funções de texto#include <string.h>
Funções matemáticas#include <math.h>
Funções padrão#include <stdlib.h>
Funções de entrada e saída#include <stdio.h>
O ambiente Dev-C++
O Dev-C++ é um ambiente de 
desenvolvimento de programas em C e 
6
desenvolvimento de programas em C e 
C++ (editor, compilador, bibliotecas...)
Pode ser baixado de: 
http://www.bloodshed.net/devcpp.html 
P
r
o
f
.
 
C
a
m
i
l
o
 
C
a
r
m
o
 
d
o
s
 
S
a
n
t
o
s Usando o Dev-C++
Inicie o Dev-C++ pelo ícone ou pelo menu
Crie um novo arquivo, com o comando File, 
New Source File
Edite o programa da página seguinte
L
ó
g
i
c
a
 
d
e
 
P
r
o
g
r
a
m
a
ç
ã
o
 
–
P
r
o
f
.
 
C
a
m
i
l
o
 
C
a
r
m
o
 
d
o
s
 
S
a
n
t
o
s
Cap. 1 - Visão Geral 77
Usando o Dev-C++ (3)
#include <stdio.h>
#include <stdlib.h>
main()
{
printf ("Alo mundo!");
8
printf ("Alo mundo!");
system("PAUSE");
}
Usando o Dev-C++ (4)
Salve o programa com o nome exemplo.cpp 
Compile o programa com o comando Executar, 
Compilar ou com a tecla Ctrl-F9
Se houver algum erro de sintaxe, aparece uma ou 
mais mensagens no rodapé da janela. Neste 
caso, corrija o programa e repita.
9
caso, corrija o programa e repita.
Se não houver erros, execute o programa com o 
comando Executar, Executar ou com a tecla 
Ctrl-F10
Dicas
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
10
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 //
Template (Exemplo 1)
#include <stdio.h>
#include <stdlib.h>
main()
{
11
{
printf ("Alo mundo!");
system("PAUSE");
}
DETALHE:
• TODO o programa vai começar com 
bibliotecas no topo, em “C” as 
principais são:
• #include <stdio.h>• #include <stdio.h>
• #include <stdlib.h>
• Stdlib.h : é um arquivo cabeçalho da biblioteca de propósito 
geral padrão da liguagem de programação C. Ela possui funções 
envolvendo alocação de memória, controle de processos, 
conversões e outras. Ela é compatível com C++ e é 
chamada cstdlib em C++. O nome "stdlib" vem 
de standard library (standard library é biblioteca padrão em 
inglês).
• Stdio.h: é um cabeçalho da biblioteca padrão do C. Seu nome 
vem da expressão inglesa standard input-output header 
(cabeçalho padrão de entrada/saída).(cabeçalho padrão de entrada/saída).
• Possui definições de subrotinas relativas às operações de 
entrada/saída, como leitura de dados digitados no teclado e 
exibição de informações na tela do programa de computador. 
Também possui numerosas definições de constantes, variáveis e 
tipos. É um dos cabeçalhos mais populares da linguagem de 
programação C, intensivamente utilizado tanto por 
programadores iniciantes como por experientes.
Arrumando o programa:
#include <stdio.h>
#include <stdlib.h>
main()
{
14
{
printf ("Alo mundo!");
printf("\n");// PULA UMA LINHA
system("PAUSE");
}
EXERCÍCIO
FAÇA UM PROGRAMA 
QUE ESCREVA O 
SEU NOME NA 
15
SEU NOME NA 
TELA DO 
COMPUTADOR.
Declarações
Declaram as variáveis e seus tipos
Os nomes das variáveis devem conter 
apenas letras, dígitos e o símbolo _
Os principais tipos são: int, float, double e
char
Exemplos
16
int n;
int quantidade_valores;
float x, y, somaValores;
char sexo;
char nome[40];
C diferencia letras maiúsculas de minúsculas!
int n, N;
n é diferente de N!
Algoritmo...... Na Linguagem C...
#include <stdio.h>
#include <stdlib.h>
main()
{
17
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
18
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 de Dados
19
Entrada de Dados
Função scanf 
scanf ("formatos", &var1, &var2,...)
Exemplos:
int i, j;
float x;
%d inteiro
%f float
20
float x;
char c;
scanf("%d", &i);
scanf("%d %f", &j, &x);
scanf("%c", &c);
scanf("%s", nome);
%f float
%lf double
%c char
%s palavra
Entrada de Dados (Exemplo 2)
Algoritmo
Real: n1, n2, n3, 
media
Na Linguagem C...
#include <stdio.h>
#include <stdlib.h>
main()
{
double n1, n2, n3, media;ler n1
21
double n1, n2, n3, media;
scanf ("%lf",&n1);
scanf ("%lf",&n2);
scanf ("%lf",&n3);
scanf ("%lf %lf %lf",&n1, &n2, &n3);
system("PAUSE");
}
ler n1
ler n2
ler n3
ler n1, n2, n3
Operadores Matemáticos
Divide x por yx / y /
Multiplica x e yx * y*
Subtrai y de xx – y -
Soma x e yx + y+
ComentárioExemploOperador
22
Decrementa em 1 o valor de xx----
Incrementa em 1 o valor de xx++++
Resto da divisão de x por yx % y %
Entrada de Dados (exemplo 3)
<< --- Parou Aqui
Real: n1, n2, n3, media
Na Linguagem C...
#include <stdio.h>
#include <stdlib.h>
main()
{
Algoritmo
23
{
double n1, n2, n3, media;
scanf ("%lf %lf %lf",&n1, &n2, &n3);
media=(n1+n2+n3)/3; 
printf(“a media é: %lf”, media);
system("PAUSE");
}
ler n1, n2, n3
media=(n1+n2+n3)/3
Saída de Dados
Função printf
printf ("formatos", var1, var2,...)
Exemplos:
int i, j;
float x;
%d inteiro
%f float
24
float x;
char c;
printf("%d", i);
printf("%d, %f", j, x);
printf("%c", c);
printf("%s", nome);
%f float
%lf double
%c char
%s palavra
Saída de Dados (Exemplo 4)
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, j;
float x;
char c;
25
char c;
char nome [10];
i = 1; j = 2; x = 3; 
printf("%d", i);
printf(“,");
printf("%d, %f", j, x);
system("PAUSE");
}
Saída de Dados (Exemplo 5)
#include <stdio.h>
#include <stdlib.h>
main()
{
double n1, n2, n3, media; // definicao de variaveis
scanf ("%lf %lf %lf",&n1, &n2, &n3); // entrada de dados
media=(n1+n2+n3)/3; // operacao matemática 
printf("%f", n1); // saida de dados na tela
26
printf("%f", n2); // saida de dados na tela
printf("%f", n3); // saida de dados na tela
printf("%f", media); // saida de dados na tela
system("PAUSE"); // pausa do sistema, pressione 
qualquer tecla
}
Saída de Dados (Exemplo 5)
#include <stdio.h>
#include <stdlib.h>
main()
{
double n1, n2, n3, media; // definicao de variaveis
printf(“DIGITE 3 NÚMERO PARA CALCULAR A MEDIA"); 
scanf ("%lf %lf %lf",&n1, &n2, &n3); // entrada de dados: Leia &n1, &n2, 
&n3media=(n1+n2+n3)/3; // operacao
printf("%f", n1); // saida de dados 1° valor
27
printf("%f", n1); // saida de dados 1° valor
printf(","); // colocando uma virgula
printf("%f", n2);// saida de dados 2° valor
printf(",");//colocando outra virgula
printf("%f", n3);// saida de dados 3° valor
printf("\n"); // pulando uma linha
printf("A media e: "); // Exibindo a frase “a média e:”
printf("%f",media); // Exibindo o valor da variável média;
printf("\n"); // pulando outra linha
system("PAUSE"); // Parada do sistema
}
Saída de Dados (Exemplo 6)
#include <stdio.h>
#include <stdlib.h>
main()
{
// definicao de variaveis
int i, j; // variavel do tipo inteiro
float x; // variavel do tipo real ou ponto flutuante
char c; // variavel do tipo caracter
char nome[30]; // variavel do tipo caracter com várias posições ou string.......
//entrada de dados
scanf("%d", &i); // lendo 1 valor do tipo inteiro
28
scanf("%d", &i); // lendo 1 valor do tipo inteiro
scanf("%d %f", &j, &x); // lendo 1 valor tipo inteiro e 1 valor real
scanf("%s", &c); // Ler um caractere qualquer
scanf("%s", nome); // Ler um nome qualquer com no máximo 30 posições
// exibindo os dados
printf("%d", i); // exibindo o inteiro
printf("%d, %f", j, x); // exibindo o inteiro eo real
printf("%c", c); // exibindo caractere
printf("%s", nome); // exibindo a variável com vários caracteres
system("PAUSE"); // uma paradinha básica
}
ARRUMANDO... (Exemplo 6)
<< --- Parou aqui.{
int i, j;
float x; 
char c;
char nome[30];
printf("DIGITE UM NUMERO INTEIRO\n");
scanf("%d", &i); 
printf("DIGITE UM NUMERO INTEIRO E UM REAL\n");
scanf("%d %f", &j, &x); 
printf("DIGITE UM CARACTER\n");
29
printf("DIGITE UM CARACTER\n");
scanf("%s",&c); 
printf("DIGITE UMA PALAVRA\n");
scanf("%s",nome); 
printf("\n O numero inteiro e:%d", i);
printf("\n o inteiro e o real sao:%d, %f", j, x); 
printf("\n o caracter e:%c", c); 
printf("\na Palavra e:%s", nome);
system("PAUSE"); 
}
Exemplo 7
//PROGRAMINHA BOBO QUE SOMA VALORES
#include <stdio.h>
#include <stdlib.h>
main()
{
//declaracao de variaveis
int n;
int quantidade_valores;
float x, y, somaValores;
30
float x, y, somaValores;
char sexo;
char nome[40];
// operacao
somaValores =1+1;
//saida de dados
printf("somaValores=%f", somaValores);
system("PAUSE");
}
Exemplo 8#include <stdio.h>
#include <stdlib.h>
main()
{
// definicao de vairiaveis
int n;
int quantidade_valores;
float x, y, somaValores;
char sexo;
char nome[40];
31
char nome[40];
x = 1; y = 2; // valores passados pelas variaveis
//atribuicao
somaValores = x + y; 
// mostra mensagem de texto na tela
printf("alo mundo \n");
// mostra valor na tela
printf("somaValores=%f", somaValores);
printf("\n");
system("PAUSE");
}
Entrada e Saída
Exemplo 10
#include <stdio.h>
#include <stdlib.h>
main()
{
double n1, n2, n3, media;
printf("Digite 3 notas: ");
Exemplo 9
#include <stdio.h>
#include <stdlib.h>
main()
{
double n1, n2, n3, media;
scanf ("%lf %lf %lf",&n1, &n2, &n3);
32
printf("Digite 3 notas: ");
scanf ("%lf %lf %lf",&n1, &n2, &n3);
media=(n1+n2+n3)/3;
printf ("Media: %.2lf",media);
printf (“\n”);
system("PAUSE");
}
scanf ("%lf %lf %lf",&n1, &n2, &n3);
media=(n1+n2+n3)/3;
printf ("%lf",media);
system("PAUSE");
}
Exemplo 11
1) Tendo como dados de entrada a altura e o sexo de uma 
pessoa, construa um programa que calcule seu peso ideal, 
utilizando a seguinte fórmula: peso ideal = (72.7*h) – 58
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
// conio.h é uma biblioteca que serve para manipular caracteres na tela
main()
33
main()
{
float altura, pesoIdeal;
char sexo;
printf ("\nDigite sua altura em metros: ");
scanf ("%f",&altura);
printf ("\nDigite seu sexo (F/M): ");
sexo=getche(); // evento da biblioteca conio.h pega a tecla digitada
pesoIdeal=(72.7*altura)-58;
printf ("\nO sexo digitado foi %c e o peso ideal desta pessoa eh %.2f quilos\n", 
sexo, pesoIdeal);
// Valor das variaveis jogado dentro do testo
system("PAUSE");
}
PROGRAMA I.M.C.
#include <stdio.h>
#include <stdlib.h>
main()
{
float altura, peso, imc;
printf ("\nDigite sua altura em metros: \n");
scanf ("%f",&altura);
printf ("\nDigite seu peso: \n");
scanf ("%f",&peso);
imc = peso /(altura*altura); 
printf ("\n O SEU IMC E: %.2f",imc ); 
printf("\n");
// aqui introduziremos o "IF"...
system("PAUSE");
}
PROGRAMA I.M.C.
#include <stdio.h>
#include <stdlib.h>
main()
{
float altura, peso, imc;
printf ("\nDigite sua altura em metros: \n");
scanf ("%f",&altura);
printf ("\nDigite seu peso: \n");
scanf ("%f",&peso);
imc = peso /(altura*altura); 
printf ("\n O SEU IMC E: %.2f",imc ); 
printf("\n");printf("\n");
// aqui introduziremos o "IF"...
if (imc<19)
{printf ("Voce esta abaixo do peso \n"); 
}
if (imc>19&&imc<25) 
{printf ("Voce esta no peso ideal \n"); 
}
if (imc>25 )
{printf ("Voce esta acima do peso \n"); 
}
system("PAUSE");
}
Operadores de Atribuição
Equivale a x = x * yx *= y *=
Equivale a x = x – yx -= y-=
Equivale a x = x + yx += y +=
Atribui o valor de y a xx = y=
ComentárioExemploOperador
36
Equivale a x = x % yx %= y%=
Equivale a x = x / yx /= y /=
Funções Matemáticas
Logaritmo natural de xlog(x)log
Arredonda o número Real para baixo; floor(3.2) é 3floor(x)floor
Valor absoluto de xfabs(x)fabs
e elevado à potencia xexp(x)exp
Cosseno de x (x em radianos)cos(x)cos
Arredonda o número real para cima; ceil(3.2) é 4ceil(x)ceil
ComentárioExemploFunção
37
Tangente de xtan(x)tan
Raiz quadrada de xsqrt(x)sqrt
Seno de xsin(x)sin
Calcula x elevado à potência ypow(x,y)pow
Logaritmo decimal de xlog10(x)log10
Logaritmo natural de xlog(x)log
#include <math.h>
// LAGORITMO PARA FUNÇÕES MATEMÁTICAS
#include <conio.h> // necessária para getch()
#include <math.h> // necessária para pow() e sqrt()
#include <stdio.h> // necessária para printf()
int main()
{
int a = 2, b = 3;
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d x %d = %d\n", a, b, a * b);
printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionário
printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, 
expoente)
printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a));
getch();
return 0;
}
2) Construa um programa que tendo como entrada dois pontos quaisquer 
do plano P(x1,y1) e Q(x2,y2), imprima a distância entre eles. A 
fórmula da distância é:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
float x1, y1, x2, y2;
float distancia;
Exemplo 12
<����--PAROU AQUI
39
printf ("\nDigite o valor de x1: ");
scanf ("%f",&x1);
printf ("\nDigite o valor de y1: ");
scanf ("%f",&y1);
printf ("\nDigite o valor de x2: ");
scanf ("%f",&x2);
printf ("\nDigite o valor de y2: ");
scanf ("%f",&y2);
distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
printf ("\nA distancia entre os pontos P1 e P2 eh %.2f\n", distancia);
system("PAUSE");
}
Exercicio I
3) Construa um programa 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
40
- 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.
Resposta do Exercício I
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
float altura, raio, areaCilindro, qtdadeLitros, qtdadeLatas, custo;
printf ("\nDigite o valor da altura em metros: ");
scanf ("%f",&altura);
printf ("\nDigite o valor do raio em metros: ");
scanf ("%f",&raio);
41
scanf ("%f",&raio);
areaCilindro=3.14*raio*raio + 2*3.14*raio*altura;
printf ("\nA area do cilindro eh %.2f metros quadrados", areaCilindro);
qtdadeLitros=areaCilindro/3;
printf ("\nA qtidade de litros necessaria eh de %.2f ", qtdadeLitros);
qtdadeLatas=qtdadeLitros/5;
printf ("\nA qtidade de latas necessaria eh de %.2f ", qtdadeLatas);
custo=qtdadeLatas*20;printf ("\nO valor total das tintas eh de R$ %.2f \n", custo);
system("PAUSE");
}
Operadores Relacionais
O conteúdo de x é maior ou igual ao de yx >= y >=
O conteúdo de x é menor ou igual ao de yx <= y<=
O conteúdo de x é diferente do de yx != y !=
O conteúdo de x é igual ao de yx == y==
ComentárioExemploOperador
42
O conteúdo de x é maior que o de yx > y>
O conteúdo de x é menor que o de yx < y <
As expressões relacionais em C retornam :
• 1 se verdadeiro e;
• 0 se falso.
Operadores Lógicos
&& (E lógico): retorna verdadeiro se ambos os operandos são 
verdadeiros e falso nos demais casos.
Exemplo: if( a>2 && b<3).
|| (OU lógico): retorna verdadeiro se um ou ambos os 
operandos são verdadeiros e falso se ambos são falsos.
Exemplo: if( a>1 || b<2).
43
! (NÃO lógico): usada com apenas um operando. Retorna 
verdadeiro se o operando é falso e vice-versa.
Exemplo: if( !var ).
PROGRAMINHA COM LÓGICA:
#include<stdio.h>
#include<stdlib.h>
main()
{ 
float x = 3.0;
int n = 55; 
int i = 0;
int resultado;
// operadores lógicos "0" e falso, e "1" e verdadeiro// operadores lógicos "0" e falso, e "1" e verdadeiro
system(“PAUSE”);
}
CONTINUANDO....
.......
// operadores lógicos "0" e falso e "1" e verdadeiro
resultado = (i != 0);
printf("\nO resultado e %d", resultado);
resultado = (x == 0);
printf("\nO resultado e %d", resultado);
resultado = (n < 100);
printf("\nO resultado e %d", resultado);
resultado = ((i != 0) || (x == 0));
printf("\nO resultado e %d", resultado);
resultado = ((i != 0) || (x == 0) || (n < 100));
printf("\nO resultado e %d", resultado);
printf("\n");
system("PAUSE");
}
PROGRAMA COMPLETO:
#include<stdio.h>
#include<stdlib.h>
main()
{ 
float x = 3.0; int n = 55; int i = 0; int resultado;
// operadores lógicos "0" e falso e "1" e verdadeiro
resultado = (i != 0);
printf("\nO resultado e %d", resultado);
resultado = (x == 0);
printf("\nO resultado e %d", resultado);printf("\nO resultado e %d", resultado);
resultado = (n < 100);
printf("\nO resultado e %d", resultado);
resultado = ((i != 0) || (x == 0));
printf("\nO resultado e %d", resultado);
resultado = ((i != 0) || (x == 0) || (n < 100));
printf("\nO resultado e %d", resultado);
printf("\n");
system("PAUSE");
}
Relembrando:
Operadores Lógicos
Não F → VV ou F → VV e F → F
Não V → FV ou V → VV e V → V
Tabela NÃOTabela OUTabela E
47
F ou F → FF e F → F
F ou V → VF e V → F
Não F → VV ou F → VV e F → F
EXERCÍCIO:
Dadas as declarações abaixo, indique cada um dos itens na 
seqüência:
int i=1, j=2, k= 3, n=2;
float x= 3.3, y =4.4;
Estrutura condicional 
composta
Comando if...else
if (condição)
comando;
else
comando;
if (condição) {
if (peso= =peso_ideal)
printf (“Vc está em forma!”);
else 
Executa o comando se a condição for 
qualquer coisa diferente de zero!
if (condição) {
comando1;
comando2;
} 
else {
comando3;
comando4;
}
else 
printf (“Necessário fazer dieta!”);
em pseudo-código:
se (peso= =peso_ideal) 
entao exibir “Vc está em forma!”
senao exibir “Necessário fazer dieta!”
Estrutura SWITCH
switch (numero){
case 1: printf ("Janeiro\n"); break;
case 2: printf ("Fevereiro\n"); break;
case 3: printf ("Marco\n"); break;
case 4: printf ("Abril\n"); break;
case 5: printf ("Maio\n"); break;
case 6: printf ("Junho\n"); break;case 6: printf ("Junho\n"); break;
case 7: printf ("Julho\n"); break;
case 8: printf ("Agosto\n"); break;
case 9: printf ("Setembro\n"); break;
case 10: printf ("Outubro\n"); break;
case 11: printf ("Novembro\n"); break;
case 12: printf ("Dezembro\n"); break;
default: printf (“Mes invalido\n"); 
}
Exercício 1
1) Dados dois números A e B, identifica o maior número.
#include <stdio.h>
#include <stdlib.h>
main(){
int A, B, maior;
printf ("Digite o valor de A: ");
scanf ("%d", &A);
printf ("Digite o valor de B: ");
scanf ("%d", &B);
if (A>B)
maior=A;
else 
maior=B;
printf ("O maior valor e: %d\n", maior);
system("pause");
}
Exercício 2
2) Escreva um algoritmo para determinar se uma 
pessoa é maior ou menor de idade.
#include <stdio.h>
#include <stdlib.h>
main (){
int idade;
printf ("Digite a idade da pessoa: ");printf ("Digite a idade da pessoa: ");
scanf ("%d", &idade);
if (idade>=18)
printf ("Pessoa eh maior de idade.\n");
else 
printf ("Pessoa eh menor de idade.\n");
system("pause");
}
Exercício 3
Ou utilizando boolean:
#include <stdio.h>
#include <stdlib.h>
main (){
int idade;
bool status;
printf ("Digite a idade da pessoa: ");
scanf ("%d", &idade);
if (idade>=18)
status=true;
else
status=false;
if (status)
printf ("Pessoa eh maior de idade.\n");
else 
printf ("Pessoa eh menor de idade.\n");
printf(“%b”,status);
system("pause");
}
Exercícios
4) Faça um algoritmo que leia a quantidade 
comprada de um produto e o preço unitário 
deste produto. 
- Se o preço total a ser pago for inferior a R$ 100, 
então forneça um desconto de 5%. 
- Se o preço total a ser pago ficar entre 100 e 
1000, então forneça um desconto de 5% e 
armazene um bônus de 5% em cima do valor 
total. total. 
- Se o preço total a ser pago for superior a 1000, 
então forneça um desconto de 10%, armazene 
um bônus de 5% em cima do valor total e 
escreva na tela que o cliente será cadastrado 
como ‘Cliente Vip’.
#include <stdio.h>
#include <stdlib.h>
main(){
int qtdade;
float preco, valorTotal, descontado, bonus;
printf ("\nDigite a qtdade: ");
scanf ("%d", &qtdade);
printf ("\nDigite o preco unitario: ");
scanf ("%f", &preco); 
valorTotal=qtdade*preco;
if (valorTotal<100)
descontado=valorTotal*0.95;
else if (valorTotal>=100 && valorTotal<=1000)
{ 
descontado=valorTotal*0.95;descontado=valorTotal*0.95;
bonus=valorTotal*0.05;
} 
else if (valorTotal>1000)//poderia ser soh: else
{ 
descontado=valorTotal*0.90;
bonus=valorTotal*0.05;
printf ("\n Cliente vip!\n");
} 
printf ("\n Valor Total eh %.2f\n", valorTotal);
printf ("\n Valor com desconto eh %.2f\n", descontado);
printf ("\n Bonus eh %.2f\n", bonus);
system("pause");
}
Laço While (Enquanto)
O laço while é usado quando queremos que um 
bloco de instruções seja executado ENQUANTO
uma condição for verdadeira (true). 
ex.: 
int valor = 1;
while(valor <= 10)
{
printf("%d ", valor); 
valor++; 
} 
Laço While
Lembre-se de que a condição testada em um 
laço while deve resultar em um valor boolean 
(true ou false). O trecho de código seguinte 
deixa isso mais claro: 
#include <stdio.h>
#include <stdlib.h>
main()
{ 
int continuar = 1; // 1 é true em C 
int valor = 1; 
while(continuar) // estou dizendo enquanto "continua" for verdadeiro
{ { 
printf("%d ", valor);
valor++; 
if(valor > 10) continuar = 0; // 0 é false em C 
} 
printf("\n"); 
system("PAUSE");
} 
Passo a passo....
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor = 1;
while(valor <= 10)while(valor <= 10)
{
printf("%d ", valor); 
valor++; 
} 
system("PAUSE");
}
Laço While
Este trecho de código exibe os números de 1 à 
10 na página. Veja agora o mesmo trecho de 
código, desta vez contando de 10 à 1:
int valor = 10;
while(valor >= 1)
{ 
printf("%d ", valor);
valor--; // decrementando
} 
Laço While
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor = 10;
while(valor >= 1)
{ 
printf("%d ", valor);
valor--; // decrementando
_sleep(1000); // função nova “_sleep”, faz a espera de tempo
} 
system("PAUSE");
}
Usando o laço for em C
O laço for é usado quando queremos
executar um bloco de instruções um
determinado número de vezes. Este
laço é composto de três partes:
for(inicialização;teste;incremento/decremento)for(inicialização;teste;incremento/decremento)
{
bloco de instruções
}
Usando o laço for em C
•
a parte inicialização nós definimos o valor inicial da
variável de controle. Na parte teste nós usamos o
valor da variável de controle para testar a
continuidade ou interrupção do laço.
••
inalmente, na parte incremento/decremento nós
alteramos o valor da variável de controle paracima
ou para baixo. Veja um exemplo:
Laço For
main()
{ int i;
for(i = 1; i <= 10; i++)
{ 
printf("%d ", i);printf("%d ", i);
} 
printf("\n\n"); 
system("PAUSE");
} 
Laço For : Mostrar os números 
pares de 0 a 20.
int main(
{ 
int i; 
for(i = 0; i <= 20; i += 2)
{ { 
printf("%d ", i);
} 
printf("\n\n");
system("PAUSE");
} // Observe que "i += 2" é o mesmo que "i = i + 2".
Laço For
om exceção da parte de testes, podemos 
inserir múltiplas expressões nas demais 
partes de um laço for. Veja:
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, x;
for(i = 0, x = 2; i <= 10; printf("%d ", i * x), 
i++);i++);
// agora com expressões matemáticas ☺
printf("\n\n");
system("PAUSE");
}
Laço For
main()
{
int a;
for ( a = 0; a <= 10; a = a + 1 )
{
int b;int b;
printf("\nDigite um valor para b: ");
scanf("%d", &b);
printf("\na = %d, b = %d e sua soma = %d.", a, b, a + b);
}
printf("\nA variavel a ainda existe e vale %d.", a);
system("PAUSE");
}
Loop Infinito erro clássico
de programação
Loop infinito
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor = 1;
while(valor >= 1)
{ { 
printf("%d ", valor);
valor ++ ;
} 
system("PAUSE");
}
Loop infinito (Caso mais 
comum, falta de atenção)
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor = 1;
while(valor != 10) // � Aqui mora o perigo
{ 
printf("%d ", valor);
valor = valor + 2 ;
} 
system("PAUSE");
} // o valor vai pular o "10" e continuar compilando...
Lendo com cin e o operador de 
extração >>
O objeto cin (“C in”) manipula toda entrada do 
teclado por meio do operador de extração >> 
que conecta a entrada de dados à variável 
que a conterá.
EXERCÍCIOS
Faça um programa que pega um número
digitado e imprime na tela esse número de
asteriscos.
Ex: o usuário digita 7 e o programa 
imprime *******
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor,cont;
printf("DIGITE UM NUMERO: ");
scanf("%d",&valor); 
cont=0;
while(cont<= valor)while(cont<= valor)
{ 
printf("*");
cont = cont+1;
} 
printf("\n");
system("PAUSE");
}
EXERCÍCIOS
2) Escreva um programa que apresente 
a série de Fibonacci até o décimo 
quinto termo. A série de Fibonacci é 
formada pela seqüência: 1, 1, 2, 3, 5, 
8, 13, 21, 34, ... .8, 13, 21, 34, ... .
#include <stdio.h>
#include <stdlib.h>
int num, f1, f2, f3, cont;
main()
{
printf("Digite um numero:\n ");
scanf("%i", &num);
f1=0;f2=1; // inicia com esses valore para começar a sequencia..
num=num-1; // para não fazer mais voltas que o pedido.num=num-1; // para não fazer mais voltas que o pedido.
// uma sequencia a mais ele vai fazer de qualquer jeito 
//devido aos valores iniciais "0" e "1"
for(cont=0;cont<=num;cont++)
{
f3=f2+f1;
printf("%i - ",f3);
f1=f2;f2=f3;
}
system("PAUSE"); 
}
EXERCÍCIOS
Em uma eleição presidencial existem 4 candidatos. Os 
votos são informados por código. Os dados utilizados 
para a contagem obedecem à seguinte codificação:
• 1, 2, 3, 4 = voto para os respectivos candidatos
• 5 = nulo
• 6 = voto em branco• 6 = voto em branco
Elabore um programa em C que calcule e escreva:
• O total de votos para cada candidato e seu percentual 
sobre o total
• O total de votos nulos e seu percentual sobre o total
• O total de votos brancos e seu percentual sobre o total
Como finalizador do conjunto de votos, tem-se o valor 0.
#include<stdlib.h>
#include<stdio.h>
int voto,cand1,cand2,cand3,cand4,ttal;
main()
{voto = 13;// ou qualquer numero diferente de “0”
while (voto!= 0)
{
printf("1-Candidato LulaMolusco;\n");
printf("2-Candidato MotoSerra;\n");
printf("3-Candidato DilmaVez;\n");
printf("4-Candidato Siqueirido;\n");
printf("DIGITE O NUMERO DO SEU CANDIDATO: ");
scanf("%d",&voto);
if (voto == 1) 
cand1 = cand1+1;
if (voto == 2) if (voto == 2) 
cand2 = cand2+1;
if (voto == 3) 
cand3 = cand3+1;
if (voto == 4) 
cand4 = cand4+1; 
system("cls"); // limpar a tela
} // falta fazer os calculos
printf("\n1-Candidato LulaMolusco; %d",cand1);
printf("\n2-Candidato MotoSerra;%d",cand2);
printf("\n3-Candidato DilmaVez;%d",cand3);
printf("\n4-Candidato Siqueirido;%d",cand4);
system("PAUSE");
}
#include<stdio.h>
int voto,cand1,cand2,cand3,cand4,ttal;
float aux;
main()
{voto = 13;// ou qualquer numero diferente de “0”
while (voto!= 0)
{
printf("1-Candidato LulaMolusco;\n");
printf("2-Candidato MotoSerra;\n");
printf("3-Candidato DilmaVez;\n");
printf("4-Candidato Siqueirido;\n");
printf("DIGITE O NUMERO DO SEU CANDIDATO: ");
scanf("%d",&voto);
if (voto <= 4)
{
if (voto == 1) 
cand1 = cand1+1;
if (voto == 2) 
cand2 = cand2+1;
if (voto == 3) 
cand3 = cand3+1;cand3 = cand3+1;
if (voto == 4) 
cand4 = cand4+1; 
system("cls"); // limpar a tela
ttal = ttal+1;
}
else
{ 
printf("\nVOTO INVALIDO \n");
system("PAUSE");
system("cls"); 
}
} 
printf("\n1 O Total de votos foi: %d",ttal); 
printf("\n1-Candidato LulaMolusco; %d, %.1f'%%%'dos votos",cand1, aux = 
(cand1*100/ttal) );
printf("\n2-Candidato MotoSerra;%d, %.1f'%%%'dos votos",cand2, aux = (cand2*100/ttal));
printf("\n3-Candidato DilmaVez;%d, %.1f'%%%'dos votos",cand3, aux = (cand3*100/ttal));
printf("\n4-Candidato Siqueirido;%d, %.1f'%%%'dos vostos",cand4, aux = (cand4*100/ttal));
printf("\n");
system("PAUSE");
}
PROGRAMADESPENCOL
1- PARAFUSO R$ 05,00 A CAIXA
2- TROLHA R$ 15,65 AUNIDADE
3- PORCAS R$ 06,50 A CAIXA
4- PREGOS R$ 04,30 A CAIXA
5- MARTELO R$ 10,00 AUNIDADE
6- CERROTE R$ 30,00 AUNIDADE
EXERCÍCIO:
6- CERROTE R$ 30,00 AUNIDADE
7- CIMENTO R$ 99,99 O SACO
8- TIJOLO R$ 300,00 O MILHEIRO
VALOR “0” PRA ENCERRAR
O PROGRAMA DEVE MOSTRAR A QUANTIDADE DE
ITENS VENDIDOS E O VALOR TOTAL DE CADA ITEM E
O VALOR TOTAL DAVENDA.
Múltiplas entradas com cin
#include<iostream.h>
main()
{
printf("\nDigite as notas das 4 provas: ");
float p1,p2,p3,p4;
cin >>p1>>p2>>p3>>p4;cin >>p1>>p2>>p3>>p4;
float media=(p1+p2+p3+p4)/4;
printf("\nMedia: %.2f",media);
system("PAUSE");
}
Tabela ASCII
Código pra gerar a tabela ASCII
#include <stdio.h>
#include <stdlib.h>
int main()
{ 
char c = 32; 
do printf("[%d] %c\n", c, c);
while (++c <= 126); 
system("Pause");
} 
Conversões de tipo e o operador 
de molde
Suponhamos que desejemos imprimir o valor 
numérico de um caractere da tabela ASCII.
Para isso, usaremos um novo operador 
chamado operador de molde, que consiste 
em escrever o nome do tipo desejado e em 
seguida o valor ou a expressão a ser avaliada 
entre parênteses.
seguida o valor ou a expressão a ser avaliada 
entre parênteses.
Char ch = ‘A’;
Cout << int(ch); //Imprime 65
As funções getche() e getch()
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
main()
{
char ch;
printf("\nPressione uma tecla ");
ch = getche();
printf("\nA tecla sucessora ASCII e: %d", char(ch));
printf("\n");
system("PAUSE");
}
As funções getche() e getch()
A função getche() retorna o caractere lido no 
teclado.
O valor retornado de uma função pode ser 
chamado de valor da função ou resultado da 
função.
A expressãoA expressão
ch=getche();
atribui o valor da função getche à variável ch.
As funções getche() e getch()
A função getch() é similar à função 
getche(), exceto pelo fato de que o 
caractere digitado não é impresso no 
vídeo.
As duas necessitam da biblioteca As duas necessitam da biblioteca 
“conio.h”.
Operadores de incremento e de 
decremento
A instrução
x=x+1;
é equivalente a
++x;
que é equivalente aque é equivalente a
x++;
Operadores de incremento e de 
decremento
n=5;
x=++n;
printf(“\nN= “<<n<<“ X= “<<x);
A saída será
N=6 X=6 N=6 X=6 
Operadores de incremento e de 
decremento
n=5;
x=n++;
cout<<“\nN= “<<n<<“ X= “<<x;
A saída será
N=6 X=5N=6 X=5
Operadores de incremento e de 
decremento
x=x-1;
é equivalente a
--x;
que é equivalente a
x--;x--;
Operadores aritméticos de 
atribuição
i+=2; equivale a i=i+2;
X*=y+1; equivale a x=x*(y+1)
t/=2.5; equivale a t=t/2.5;
P%=5; equivale ap=p%5;
D-=3; equivale a d=d-3;D-=3; equivale a d=d-3;
Operadores relacionais
> maior
>= maior ou igual
< menor
<= menor ou igual
== igual== igual
!= diferente
Programa exemplo
#include<iostream.h>
main(){
int verdadeiro, falso;
verdadeiro = (15<20);
falso = (15==20);falso = (15==20);
cout<<“\nVerdadeiro “<<verdadeiro;
cout<<“\nFalso “<<falso;
}
Operadores lógicos: && || !
C++ oferece três operadores lógicos. 
São eles:
&& lógico e
|| lógico ou
! Lógico não! Lógico não
O operador condicional ternário: 
?:
Sua sintaxe geral possui a seguinte construção:
exp1 ? exp2 : exp3
A exp1 é avaliada primeiro. Se seu valor for 
diferente de zero (verdadeira) a exp2 é 
avaliada e seu resultado será o valor da 
expressão condicional com um todo.expressão condicional com um todo.
Se exp1 for zero, a exp3 é avaliada e será o 
valor da expressão condicional com um todo.
O operador condicional ternário: 
?:
Na expressão:
max = (a>b) ? a : b
A variável que contém o maior valor 
numérico entre a e b será atribuída a 
max.max.
Comandos de decisão
Os comandos de decisão permitem 
determinar qual é a ação a ser tomada 
com base no resultado de uma 
expressão condicional.
O comando if
A instrução if consiste na palavra-chave 
if seguida de uma expressão de teste 
entre parênteses.
Se a expressão de teste for verdadeira, a 
instrução é executada; do contrário, instrução é executada; do contrário, 
nada é feito.
O comando if
if (expressão de teste)
{
Instrução;
Instrução;
}}
O comando if-else
O comando if-else é uma expansão de 
um simples comando if.
O comando if permite que executemos 
algo somente se a sua expressão de 
teste for verdadeira, caso contrário teste for verdadeira, caso contrário 
nada é executado.
O comando if-else
Suponhamos que você queira executar 
alguma coisa se a expressão de teste 
for verdadeira e outra coisa se a 
expressão de teste for falsa.
Neste caso, você deve usar o comando Neste caso, você deve usar o comando 
if-else.
O comando if-else
if (expressão de teste)
{
instrução;
instrução;
}
else
{
instrução;
instrução;
}
O comando if-else
if (expressão de teste 1)
{
instrução;
instrução;
}
else if (expressão de teste 2)
{
instrução;
instrução;
}
else
{
instrução;
instrução;
}
Laços
O laço for
Geralmente usado quando queremos repetir 
algo um número fixo de vezes.
Isto significa que utilizamos um laço for 
quando sabemos de antemão o número de 
vezes a repetir.vezes a repetir.
Laços
#include<iostream.h>
#include<conio.h>
main(){
int i;
for(i=1;i<=10;i++)
{ cout<<i; // mostra o valor{ cout<<i; // mostra o valor
getch(); // pega a tecla
_sleep(1000); // a espera
}
system(“PAUSE”);
}
Laços
#include<iostream.h>
#include<conio.h>
main(){
int i;
for(i=10;i<=1;i--)
{ cout<<i; // mostra o valor{ cout<<i; // mostra o valor
getch(); // pega a tecla
_sleep(1000); // a espera
}
system(“PAUSE”);
}
EXERCÍCO
Faça um programa que calcule o valor 
fatorial de um número inteiro.
EXERCÍCO
2) Escreva um programa que apresente a 
série de Fibonacci até o décimo quinto 
termo. A série de Fibonacci é formada 
pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 
34, ... .
O laço while
A segunda estrutura de laço em C++ é o 
laço while.
À primeira vista, o laço while parece 
simples se comparado ao laço for; 
utiliza os mesmos elementos, mas eles utiliza os mesmos elementos, mas eles 
são distribuídos de maneira diferente 
no programa.
O laço while
expressão de inicialização;
while (expressão de teste)
{
.
..
expressão de incremento (passo);
.
}
O laço do-while
A terceira e última estrutura de laço em 
C++ é o laço do-while.
Este laço é bastante similar ao laço while 
e é utilizado em situações em que é 
necessário executar o corpo do laço necessário executar o corpo do laço 
uma primeira vez e depois avaliar a 
expressão de teste e criar um ciclo 
repetido.
O laço do-while
do
{
instrução;
instrução;
} while (teste);} while (teste);
MATRIZES
Estruturas de Dados Homogêneas Estruturas de Dados Homogêneas 
Multidimensionais –
Matrizes
Matrizes em Linguagem “C”
• Matrizes são Estruturas de Dados Homegêneas Multidimensionais
• Necessitam de dois (ou mais) índices de acesso.
• Declaração:
tipo nomedamatriz[DimMax_x][DimMax_y];
Onde:
– tipo:um dos tipos primitivos de dados em C (char, int, float, double)
– nomedamatriz: segue as mesmas regras das variáveis básicas – nomedamatriz: segue as mesmas regras das variáveis básicas 
– DimMax_x, DimMax_y: define o tamanho da área de armazenamento -
pode ser uma expressão constante inteira
Matrizes em Linguagem “C”
#include <stdio.h>
#include <stdlib.h>
void main()
{
float matriz [2][2];
float media, quant;
matriz[0][0] = 9.0;
matriz[0][1] = 8.0;matriz[0][1] = 8.0;
matriz[1][0] = 7.0;
matriz[1][1] = 7.0;
quant = matriz[0][0] + matriz[0][1]
+ matriz[1][0] + matriz[1][1];
media = quant / 4.0;
printf (“ A média dos 4 números é: %f.”, media);
system (“PAUSE”);
}
Matrizes em Linguagem “C”
Exemplos:
int main()
{
float parc_aluno[2];
float notas_alunos[5][2];
char nome[40];
char nomes_turma[5][40];char nomes_turma[5][40];
return 0;
}
(Importante: Indexação no estilo [Linha][Coluna])
Matrizes em Linguagem “C”
#include <stdio.h>
#include <stdlib.h>
void main ()
{
float matriz [2][2];
float media, quant;
printf ( “Digite o 1o número:” );
scanf ( “%f”, &matriz [0][0] );
printf ( “Digite o 2o número:” );printf ( “Digite o 2o número:” );
scanf ( “%f”, &matriz [0][1] );
printf ( “Digite o 3o número:” );
scanf ( “%f”, &matriz [1][0] );
printf ( “Digite o 4o número:” );
scanf ( “%f”, &matriz[1][1] );
quant = matriz[0][0] + matriz[0][1] + matriz[1][0] + matriz[1][1];
media = quant / 4.0;
printf(“ A média dos 4 números é: %f.”, media);
system (“pause”);
}
Matrizes em Linguagem “C”
#include <stdio.h>
#include <stdlib.h>
void main ()
{
float matriz [2][4];
float media[2], soma;
int cont1, cont2;
for ( cont1 = 0; cont1 < 2; cont1 = cont1 + 1 )
{
soma = 0.0f;
for ( cont2 = 0; cont2 < 4; cont2 = cont2 + 1 )for ( cont2 = 0; cont2 < 4; cont2 = cont2 + 1 )
{
printf ( “ Digite a nota posição %i, %i da matriz: ”, cont1, cont2 );
scanf ( “%f”, &matriz[cont1][cont2] );
soma = soma + matriz[cont1][cont2] ;
}
media[cont1] = quant / 4.0;
printf ( “ A média dos números da linha %d da matriz é: %f.”, cont1, media[cont1]);
}
printf(“\nE a média geral entre todos os números é: %2.2f\n”, (media[0]+media[1])/2.0f);
system (“pause”);
}
Matrizes em Linguagem “C”
Exercícios
a) Uma matriz M pode ser transposta em uma matriz N onde o número de linhas/colunas da primeira passa 
a ser o número de colunas/linhas da segunda. Faça um programa que:
- Leia uma matriz M (o usuário deve fornecer a quantidade de linhas e a quantidade de colunas que 
não deverão exceder 50 linhas e 50 colunas).
- Calcule a transposta N da matriz M.
- Imprima a transposta calculada.
b) Elabore um programa que multiplique duas Matrizes M e N (10x10) fornecidas pelo usuário. O programa 
deve:
- Ler as matrizes M e N.
- Calcular a multiplicação e armazenar na matriz Mult.
- Imprimir o resultado.- Imprimir o resultado.
c) Elabore um programa que manipule os dados para uma sala de 40 alunos. O programa deve receber 
como entrada (via leitura de teclado):
- Os nomes dos alunos (máximo 50 caracteres).
- As duas notas parciais.
O programa deve calcular e imprimir, numa mesma linha, para cada aluno:
- O nome, a média final e a freqüência.
E também deve apresentar:
- A maior média da turma, e a menor média da turma.
- A quantidade de alunos aprovados, reprovados e em exame.
- Uma listagem com o nome dos alunos que irão para a final.
#include<stdio.h> 
main() 
{ 
int vet1[5]={1,2,3,4,5}; /*declaração e inicialização do vetor vet1*/ 
int vet2[5]={6,1,2,2,5}; /*declaração e inicialização do vetor vet2*/ 
int vetSoma[5]; 
/*declaração do vetor vetSoma que vai guardar o resutado da soma dos dois vetores(vet1 e vet2).*/ 
int x; 
printf("Este programasoma os dois vetores abaixo:\n"); 
printf("vet1={1,2,3,4,5}\n"); printf("vet1={1,2,3,4,5}\n"); 
printf("vet2={6,1,2,2,5}\n"); 
printf("\n"); 
printf("vetor resultante da soma:\n"); 
for(x=0; x<5; x++) 
{ 
vetSoma[x]=vet1[x]+vet2[x]; /*soma os valores*/ 
printf("vetSoma[%d]:%d\n",x,vetSoma[x]); /*exibe na tela*/ 
} /*fim do for*/ 
} /*fim do programa*/
main() 
{ 
int mat[2][2]; 
float det; 
int x,y; 
printf("Este programa calcula a determinante de uma matriz quadrada de ordem 2"); 
printf("\n\nEntre com os valores a da matriz:\n"); 
for(x=0;x<2;x++) 
{ 
for(y=0;y<2;y++) 
{ { 
printf("mat[%d][%d]=",x+1,y+1); 
scanf("%d",&mat[x][y]); 
} /*fim do for*/ 
} /*fim do for*/ 
det=mat[0][0]*mat[1][1]-mat[1][0]*mat[0][1]; /*formula para calcular a determinante */ 
printf("Determinante da matriz = %f\n",det); 
} /*fim do programa*/ 
Linguagem C++
Vetores, Matrizes e Funções
Revisão de Funções
• O que são “Funções”? (ou subprogramas ou subrotinas)
– São trechos de código fonte agrupados sob um nome, que 
podem ser chamados sempre que for necessário executar uma 
determinada ação programada neste trecho;
• Como usar funções?
– Atribui-se um nome à uma seqüência de comandos, e faz-se 
referência a este nome nos vários lugares do programa onde a 
seqüência em questão deveria ser repetida.
Revisão de Funções
• Por que usar funções?
– Evita escrita repetida de código (uma certa seqüência de comandos deve ser repetida 
em vários lugares de um programa).
• Economiza o tempo gasto com o trabalho de copiar estas seqüências;
• Evitar a necessidade de mudar em múltiplos lugares caso deseje alterar o seu 
funcionamento;
– Dividir grandes tarefas de computação em tarefas menores:
• Facilita o gerenciamento de grandes sistemas e • Facilita o gerenciamento de grandes sistemas e 
• Aumenta a confiabilidade dos mesmos. 
• Resumo: Principais motivações para uso das funções!
– Evitar repetição de código
– Modularização
Revisão de Vetores
• Vetores são Estruturas de Dados Homegêneas, isto é, capazes de armazenar 
uma quantidade pré-definida de valores do mesmo tipo
• Necessitam de apenas um índice de acesso.
• Declaração:
tipo nomedovetor[DimMax];
Onde:
– tipo:um dos tipos primitivos de dados em C (char, int, float, double)– tipo:um dos tipos primitivos de dados em C (char, int, float, double)
– nomedovetor: segue as mesmas regras das variáveis básicas 
– DimMax: define o número máximo de elementos do vetor
pode ser uma expressão constante inteira
Revisão de Vetores
#include <stdio.h>
#include <stdlib.h>
#define NUM_ALUNOS 3
int main( )
{
float notas [NUM_ALUNOS];
float media_turma = 0.0;
int i;
for ( i = 0; i < NUM_ALUNOS; i++ )
{
printf ("Digite a nota do %d o. aluno: ", i+1);
scanf ("%f", &notas[i]);
}
for ( i = 0; i < NUM_ALUNOS; i++ )
{
media_turma += notas[i];
}
media_turma = media_turma / NUM_ALUNOS ;
printf ("A media da turma eh %.2f \n", media_turma);
system ("Pause");
return 0;
}
Vetores e Funções
#include <stdio.h>
#include <stdlib.h>
#define NUM_ALUNOS 3
float media ( float notas[], int n )
{
int i = 0;
int main( )
{
float notas [NUM_ALUNOS];
float media_turma;
int i;
for ( i = 0; i < NUM_ALUNOS; i++ )
{int i = 0;
float m = 0.0;
for ( i = 0; i < n; i++ )
{
m = m + notas[i] ;
}
m = m / n;
return m;
}
{
printf ("Digite a nota do %d o. aluno: ", i+1);
scanf ("%f", &notas[i]);
}
media_turma = media ( notas, NUM_ALUNOS );
printf ("A media da turma eh %.2f \n", media_turma);
system ("Pause");
return 0;
}
Vetores e Funções
#include <stdio.h>
#include <stdlib.h>
#define NUM_ALUNOS 3
float media ( float notas[], int n )
{
• E para calcular o número de 
alunos com notas acima da 
média?
• A função de cálculo de média 
pode ser a mesma já utilizada.....
{
int i = 0;
float m = 0.0;
for ( i = 0; i < n; i++ )
{
m = m + notas[i] ;
}
m = m / n;
return m;
}
pode ser a mesma já utilizada.....
• E agora criamos a função de 
cálculo da quantidade de alunos 
acima da média!
Vetores e Funções
int conta_alunos_acima_da_ media ( float notas[], int n, float media)
{
int i, conta = 0;
for ( i = 0; i < n; i++ )
{
if (notas[i] > media)
{
conta += 1;conta += 1;
}
}
return conta;
}
Vetores e Funções
int main( )
{
float notas [NUM_ALUNOS];
float media_turma;
int i, melhores_alunos;
for ( i = 0; i < NUM_ALUNOS; i++ )
{
printf ("Digite a nota do %d o. aluno: ", i+1);printf ("Digite a nota do %d o. aluno: ", i+1);
scanf ("%f", &notas[i]);
}
media_turma = media ( notas, NUM_ALUNOS );
printf ("A media da turma eh %.2f \n", media_turma);
melhores_alunos=conta_alunos_acima_da_ media(notas, NUM_ALUNOS, media_turma);
printf (“E o numero de alunos com nota acima da media foi: %d .\n”, melhores_alunos);
system ("Pause");
return 0;
}
Vetores e Funções
• Desafio 1: Alterar o programa anterior para:
– Receber duas notas bimestrais de cada aluno;
– Verificar se cada nota está entre 0.0 e 10.0;
– Calcular a média de cada aluno (e armazenar o valor em um vetor);
– Modificar o programa para apresentar os seguintes resultados: – Modificar o programa para apresentar os seguintes resultados: 
• média geral da turma;
• número de alunos com média individual acima da média da 
turma.
Matrizes e Funções
• Será que é possível “passar matrizes” por parâmetro?
• Se sim, como?
Matrizes e Funções
#include <stdio.h>
#include <stdlib.h>
#define NUM_ALUNOS 3
int main()
{
float notas [NUM_ALUNOS][2], media_turma;
int i;
for ( i = 0; i < NUM_ALUNOS; i++ )
{
printf ("Digite a 1a. nota do %d o. aluno \n: ", i+1);
scanf ("%f", &notas[i][0]);scanf ("%f", &notas[i][0]);
printf ("Digite a 2a. nota do %d o. aluno \n: ", i+1);
scanf ("%f", &notas[i][1]);
}
media_turma = media_geral ( notas, NUM_ALUNOS );
printf ( "A media da turma eh %.2f \n", media_turma);
system ("Pause");
return 0;
}
Matrizes e Funções
float media_geral ( float notas[][2], int n )
{
int i = 0;
float m = 0.0;
float notaaluno = 0.0;
for ( i = 0; i < n; i++ )
{{
notaaluno = ( notas[i][0] + notas[i][1] )/2;
m = m + notaaluno;
}
m = m / n;
return m;
}
Exercício Complementar:
• Elabore um programa que manipule os dados para uma sala de 40 alunos. 
• O programa deve receber como entrada (via leitura de teclado):
- Os nomes dos alunos (máximo 50 caracteres).
- As duas notas parciais.
– O programa deve calcular e imprimir, numa mesma linha, para cada aluno:– O programa deve calcular e imprimir, numa mesma linha, para cada aluno:
- O nome e a média final.
– E também deve apresentar:
- A maior média da turma, e a menor média da turma.
- A quantidade de alunos aprovados, reprovados e em exame.
- Uma listagem com o nome dos alunos que irão para a final.
LINGUAGEM DE PROGRAMAÇÃO
LINGUAGEM C
Funções, 
Matrizes, Vetores e StringsMatrizes, Vetores e Strings
2010/1
Funções em C : Exemplo#include <stdio.h>
float area(float r); /* declaracao do prototipo da funcao */
float potencia(float num, int pot); /* declaracao do prototipo da funcao */
float area(float r) /* Funcao que retorna a area da esfera*/
{ return (4*3.14159*potencia(r,2)); /* retorna a area em um tipo float */ }
float potencia(float num, int pot) /*Funcao que Eleva a uma potencia positiva um dado */
{
float result = 0; /* declaracao de var. local */
int i = 0;
if(pot < 0)
return 0; /* Indica que houve erro */
if(pot == 0)if(pot == 0)
return 1;
result = num;
for(i = 1; i < pot; i++)
result *= num;
return result;
}
void main(void)
{
char a;
float raio = 0;
printf("Digite o raio da esfera: ");
scanf("%f", &raio);
printf("A area da esfera e' %.2f", area(raio));
a=getchar();
a=getchar();
}
Funções recursivas em C
• Em C, todos os argumentos de funções são passados “por valor”. 
• A função chamada recebe uma cópia dos valores dos argumentos e cria outras 
variáveis temporárias para armazenar estes valores.
• A função chamada não pode alterar o valor de uma variável da função que a • A função chamadanão pode alterar o valor de uma variável da função que a 
chamou; ela só pode alterar sua cópia temporária.
long int Fatorial(long int i)
{
if(i > 1)
return i*Fatorial(i-1);
else 
return 1;
}
� C permite a criação de funções 
recursivas, isto é, uma função 
que possui dentro do seu corpo 
de instruções uma chamada a si 
própria.
No exemplo, cada 
chamada recursiva da 
função “fatorial” coloca 
mais uma variável i do 
tipo long int na pilha 
(stack).
Funções recursivas em C: Exemplo
#include <ansi_c.h>
#include <stdio.h>
long Fatorial(long n);
long Fatorial(long N)
{
if (N==0)
return(1);
elseelse
return(N*Fatorial(N-1));
}
void main(void)
{
int num;
long result;
printf("Digite o número para calcular o fatorial");
scanf("%d", &num);
result=Fatorial(num);
printf("Resultado:%ld",result); 
getchar();
getchar();
}
Matrizes Unidimensionais: Vetores
• Vetores: São tipos de dados estruturados mais conhecidos 
como arrays. Correspondem a conjuntos de elementos de 
um mesmo tipo representados por um único nome. 
• Vetor Cada elemento do array
pode ser referenciado através de índices. 
V[0] = 4 
V[1] = 7 pode ser referenciado através de índices. V[1] = 7 
V[4] = 3Declaração
<Tipo><Nome_da_Var>[<tamanho>]; 
Ex: int v[30]; float n[10]; 
Atribuição 
v[i] = 10; 
v[2] = 12 + x; 
v[i+2] = 14; 
Leitura 
for (i=0; i<30; i++) 
{ printf("\n\nElemento %d: ",i+1); 
scanf(“%d”,&v[i]); 
} 
Impressão printf("\n\nVetor: "); 
for (i=0; i<30; i++) 
printf(" %d ",v[i]); 
Declarando e inicializando vetores
Inicializacão:
float x[7]={-1.1,0.2,33.0,4.4,5.05,0.0,7.7};
x[0] = -1.1
x[1] = 0.2
Inicializador: seqüência de valores 
separados por virgula.x[1] = 0.2
x[2] = 33.0
x[3] = 4.4
x[4] = 5.05
x[5] = 0.0
x[6] = 7.7
separados por virgula.
O número de bytes para armazenar um 
vetor é igual ao tamanho do tipo base 
(short = 2 bytes, double = 8 bytes, …) 
vezes o número de elementos. 
Para armazenar 100 elementos do tipo 
float são necessários 100 * 32 = 3200 
bits ou 400 bytes.
Vetores: Exemplo
Diretiva de pré-processamento usada 
para definir constantes simbólicas.
#include <ansi_c.h>
#include <stdio.h>
#define N 5
void main(void)
{
int i=0, soma=0;
int a[N]; // aloca cinco espacos de memoriaint a[N]; // aloca cinco espacos de memoria
for (i=0; i<N; i++) // armazena os valores nos espacos de memoria
a[i]=7+i*i;
for (i=0; i<N; i++) // Le os valores nos espacos de memoria
printf("a[%d]=%d ", i, a[i]);
for (i=0; i<N; i++)
soma+=a[i];
printf("\nsoma=%d\n", soma);
getchar();
}
Matrizes Unidimensionais: Strings
• Em C, uma string é uma matriz unidimensional (vetor) de 
caracteres e terminada por um caracter nulo ‘\0’.
• Strings são usadas para armazenar e manipular 
textos, palavras ou sentenças.
Ao lado temos as 
Funções suportadas 
em C para a 
manipulação de 
Strings. 
Elas usam o 
cabeçalho padrão 
string.h
Strings: exemplo
#include <ansi_c.h>
#include <stdio.h>
#include <string.h> 
void main(void)
{
char s1[80]; char s2[80];
gets(s1); gets(s2);
printf("Comprimentos: %d %d \n", strlen(s1), strlen(s2));
if (!strcmp(s1,s2)) printf("As strings sao iguais \n");
strcat(s1,s2);
printf("%s\n", s1); 
strcpy(s1 "Isso e um teste\n");
printf("s1");
if (strchar("alo",'o'))
printf("o esta em alo\n");
if (strstr("ola aqui","ola")) 
printf("\ola encontrado");
getchar();
getchar(); 
}
Registros 
• São conjuntos de dados logicamente relacionados, mas de 
tipos diferentes (inteiro, real, char, etc.). 
– Exemplo: Numa dada aplicação, podem-se ter os 
seguintes dados sobre os alunos de uma turma:
Matricula, Nota1 
Nota2 , Média 
• Cada conjunto de informações do aluno pode ser 
referenciado por um mesmo nome, por exemplo, ALUNO. 
Tais estruturas são conhecidas como registros, e aos 
elementos do registro dá-se o nome de campos. Declaração
typedef struct { variaveis 
}nome_do_tipo;
TAlunos aluno;
Exemplo:
typedef struct { int mat; 
float n1, n2, med; 
}TAlunos; 
Atribuição:
Nome-do-registro.campo = valor; 
aluno.n1 = 5.0; 
scanf("%d", &aluno.mat);
Vetor de Registros 
• Podem-se ter conjunto de registros referenciáveis por um
mesmo nome e individualizados por índices, através da
utilização de um vetor de registros.
Exemplo: Atribuição: 
typedef struct { int mat; 
float n1, n2, med; 
}TAlunos; 
TAlunos aluno[30]; 
nome-do-vetor[indice].campo = 
valor; 
aluno[3].n1 = 5.0; 
scanf("%d", &aluno[i].mat);
Vetor de Registros: Exemplo
#include <ansi_c.h>
#include <stdio.h>
void main(void)
{ {
typedef struct {int mat,serie,irmao,mens;
}Tescola;
Tescola escola[30];
int i, qa; qa=2;
for (i=0; i<qa; i++)
{ printf("\n\nDados do Aluno %d\n\n",i+1);
printf("\n\tNumero de Matricula do Aluno: ");printf("\n\tNumero de Matricula do Aluno: ");
scanf("%d",&escola[i].mat);
printf("\n\tSerie (1-4): ");
scanf("%d",&escola[i].serie);
printf("\n\tTem irmao na escola (1-sim, 2-nao)? ");
scanf("%d",&escola[i].irmao);
switch(escola[i].serie)
{case 1: escola[i].mens = 110; break;
case 2: escola[i].mens = 130; break;
case 3: escola[i].mens = 160; break;
case 4: escola[i].mens = 170; break; }
if (escola[i].irmao == 1)
escola[i].mens = escola[i].mens*0.8;
printf("%d",escola[i].mens);
} 
} 
getchar();
getchar();
Matrizes Bidimensionais:
• A linguagem C suporta matrizes multidimensionais;
Para declarar uma matriz 
bidimensional de inteiros 
d com dimensões 10x20, 
temos:
Exemplo: carrega a matriz num de
1 a 12 e escreve linha por linha.
#include <ansi_c.h>
#include <stdio.h>
void main(void)
Para acessar o elemento 
1,2 da matriz d, usamos:
O número de bytes 
necessários para 
armazenar uma matriz 
bidimensional é dado por:
void main(void)
{ int t, i, num[3][4];
// Salve os numeros na matriz num
for (t=0; t<3;++t)
for (i=0; i<4;++i)
num[t][i]=(t*4)+i+1;
// Leia e escreva os numeros da matriz num 
for (t=0; t<3;++t)
{printf("\t"); 
printf("\n");
for (i=0; i<4;++i)
printf("%3d\t", num[t][i]);}
printf("\n"); 
getchar(); }
Matrizes de Strings
• Para criar uma matriz de strings usa-se uma matriz 
bidimensional de caracteres.
• O tamanho do índice esquerdo indica o número de strings e 
o tamanho do índice direito indica o comprimento máximo de 
cada string.cada string.
• O código seguinte declara uma matriz de 30 strings onde 
cada uma tem um comprimento máximo de 79 caracteres:
• Para acessar uma string, especifica-se no comando de gets()
apenas o índice esquerdo: 
Matrizes de Strings : Exemplo
� O programa ao lado 
usa a matriz de strings 
como base para um 
pequeno editor de 
textos.
#include <ansi_c.h>
#include <stdio.h>
#define MAX 100
#define LEN 100
char texto[MAX][LEN];
//Um editor de textos muito simpls
void main(void)
{
� O programa recebe 
linhas de texto até que 
uma linha em branco 
seja inserida. Em 
seguida ele mostra cada 
linha com um caracter 
por vez.
{
register int t, i, j;
printf("Digite uma linha vazia para sair. \n"); 
for (t=0; t<MAX; t++)
{
printf("%d", t);
gets(texto[t]);
if(!*texto[t]) break; //sai com linha em branco
}
for (i=0; i<t; i++){
for (j=0; texto[i][j]; i++) putchar(texto[i][j]);
putchar('\n');
}
getchar();
}
Exercícios(1)
1. Ler um conjunto de números e imprimi-los na ordem inversa da leitura. A 
quantidade de números também será lida e será no máximo 20. 
2. Ler o tamanho e os elementos de dois vetores e em seguida, caso os vetores tenham o 
mesmo tamanho, gere e imprima um vetor SOMA, onde seus elementos serão 
formados pela soma dos elementos de mesmos índices dos dois vetores lidos 
3. Ler um vetor de números e imprimir os números das posições PARES e em seguida 
os números das posições ÍMPARES. 
4. Ler dois vetores e caso tenham tamanhos iguais armazene seus elementos 
alternadamente em um terceiro vetor. 
4. Ler dois vetores e caso tenham tamanhos iguais armazene seus elementos 
alternadamente em um terceiro vetor. 
5. Ler um vetor de números inteiros e imprimir as posições do maior e do menor 
elemento do vetor. Assumaque não existem elementos repetidos no vetor. 
6. Ler um conjunto de matrícula e notas dos alunos de uma turma e imprima a 
matricula dos alunos de tiveram nota acima da média das notas da turma.
10. Ler dois vetores de números e gerar um terceiro vetor formado pela 
INTERSECÇÃO dos dois vetores lidos. 
11. Ler dois vetores de números e gerar um terceiro vetor formado pela DIFERENÇA 
dos dois vetores lidos. 
12. Ler dois vetores de números e gerar um terceiro vetor formado pela UNIÃO dos 
dois vetores lidos. 
13. Ler um vetor e gerar um segundo vetor com os elementos do vetor lido menos os 
elementos repetidos. Ex : VetorLido = 5 1 2 7 5 3 7 5 9 3; VetorGerado = 5 1 2 7 3 9 
14. Ler um vetor de números e imprimir os números que se repetem nesse vetor. 
Exercícios(2)
15. Escreva uma função que indique quantas vezes aparece um determinado 
caractere em uma dada string.
16. Escreva uma função que localize um caractere em uma string, substituindo-a 
por outro.
17. Escreva uma função que insira um determinado caractere em uma 
determinada posição de uma string.
18. Escreva uma função que retire todos os caracteres brancos, tabulações ou 
nova linha [enter] de uma dada string.
18. Escreva uma função que retire todos os caracteres brancos, tabulações ou 
nova linha [enter] de uma dada string.
19. Escreva um programa que converta todas os caracteres minúsculos de uma 
string para o correspondente caractere maiúsculo.
20. Escreva um programa para criar uma tabela com os seus horários ocupados e 
compromissos na semana. Armazene o valor de cada compromisso através 
de uma tabela de strings. Inicialize a tabela com valor 0, e solicite ao usuário 
que forneça o seu horário. Por fim, apresente na tela o resultado obtido.
Exercícios (3)
21. Use uma matriz bidimensional para armazenar as notas de cada aluno. 
O professor tem três turmas e um máximo de 30 alunos por turma. Use a 
sugestão:
22. Crie um programa para calcular a matriz transposta de uma dada 
matriz. Aloque uma memória para uma matriz bidimensional com 
dimensão máxima de 10x10. Crie uma função para inicializar a matriz 
com zeros. Depois questione o usuário para sob a dimensão da matriz 
que ele deseja calcular a transposta, considerando a dimensão máxima 
permitida. Em seguida, adquira os valores dos termos que compõem a 
matriz, solicitando ao usuário que forneça estes dados. Por fim, calcule a 
transporta da matriz e escreva na tela o resultado final da matriz.
Exercícios (4)
23. Fazer um programa para a companhia de energia elétrica da cidade. 
Para cada consumidor são fornecidos os seguintes dados: matrícula do 
consumidor, nome, tipo do consumidor (1-comercial, 2-industrial, 3-
residencial), quantidade de KWh consumidos no mês. O programa irá
calcular o valor da conta. O programa irá ler uma quantidade de 
consumidores e armazenará os dados dos consumidores em um vetor de 
registro. Imprimir um relatório contendo os dados do consumidor e o 
valor que o mesmo deve pagar e no final, imprimir o relatório 
registro. Imprimir um relat rio contendo os dados do consumidor e o 
valor que o mesmo deve pagar e no final, imprimir o relatório 
estatístico: 
– Total a ser arrecadado pela empresa de energia 
– Media de consumo das industrias 
– Total de consumo das residências 
– Quantidade de estabelecimentos comerciais 
OBS: Valor de 1 KWh 
– Residência: R$ 5,00 
– Comércio: R$ 3,00 
– Indústria: R$ 2,00

Outros materiais