SlideShare uma empresa Scribd logo
1 de 155
Baixar para ler offline
Prof. Camilo Carmo dos Santos

   Lógica de
Programação




  Introdução à Linguagem C
       Técnico em informática
Tradução
                                  TRADUTOR
CÓDIGO FONTE                                  CÓDIGO OBJETO
... LET SOMA = VAR1 + TOTAL ...               ... 00010110111001011001011010 ...
(linguagem de prog.)                          (“executável”)

 MONTADOR (assembler)
        Tradutor para linguagens de 2a geração.
 COMPILADOR:
        Traduz todo o programa de uma vez.
 INTERPRETADOR:
        Traduz o programa instrução por instrução.




                                                  2
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

O sistema Unix é escrito em C e C++




                              3
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
 }




                                               4
Diretivas para o processador -
Lógica de Programação – Prof. Camilo Carmo dos Santos                          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 <string.h> Funções de texto




                                                        Cap. 1 - Visão Geral                                  5
O ambiente Dev-C++



O Dev-C++ é um ambiente de
  desenvolvimento de programas em C e
  C++ (editor, compilador, bibliotecas...)
Pode ser baixado de:
 http://www.bloodshed.net/devcpp.html




                                 6
Lógica de Programação – Prof. Camilo Carmo dos Santos
                                                                                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




                                                         Cap. 1 - Visão Geral           7           7
Usando o Dev-C++ (3)

#include <stdio.h>
#include <stdlib.h>
main()
{
  printf ("Alo mundo!");
  system("PAUSE");
}




                           8
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.
Se não houver erros, execute o programa com o
  comando Executar, Executar ou com a tecla
  Ctrl-F10




                                   9
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
Verifique também a linha anterior, que pode ser a
  responsável pelo erro, especialmente se faltar o ;
Use comentários, iniciados por //




                                      10
Template (Exemplo 1)

#include <stdio.h>
#include <stdlib.h>
main()
{
  printf ("Alo mundo!");
  system("PAUSE");
}




                           11
DETALHE:
• TODO o programa vai começar com
  bibliotecas no topo, em “C” as
  principais são:

• #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).
•   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()
    {
      printf ("Alo mundo!");
      printf("n");// PULA UMA LINHA
      system("PAUSE");
    }



                            14
EXERCÍCIO
FAÇA UM PROGRAMA
 QUE ESCREVA O
 SEU NOME NA
 TELA DO
 COMPUTADOR.

              15
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
       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!
                                       16
Algoritmo......     Na Linguagem C...



                    #include <stdio.h>
                    #include <stdlib.h>
                    main()
                    {
                      double n1, n2, n3, media;
Real: n1, n2, n3,
media

                    system("PAUSE");
                    }

                                17
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'

                                    18
Entrada e Saída de Dados




                  19
Entrada de Dados
Função scanf
   scanf ("formatos", &var1, &var2,...)


 Exemplos:

                                %d    inteiro
   int i, j;
                                %f    float
   float x;
   char c;
                                %lf   double
   scanf("%d", &i);             %c    char
   scanf("%d %f", &j, &x);      %s    palavra
   scanf("%c", &c);
   scanf("%s", nome);




                                          20
Entrada de Dados (Exemplo 2)
Algoritmo           Na Linguagem C...

                    #include <stdio.h>
                    #include <stdlib.h>
                    main()
Real: n1, n2, n3,
media               {
 ler n1                double n1, n2, n3, media;
 ler n2
                       scanf ("%lf",&n1);
 ler n3
                       scanf ("%lf",&n2);
                       scanf ("%lf",&n3);
 ler n1, n2, n3        scanf ("%lf %lf %lf",&n1, &n2, &n3);
                    system("PAUSE");
                    }
                                    21
Operadores Matemáticos
Operador Exemplo Comentário
+        x + y   Soma x e y

-        x – y   Subtrai y de x

*        x * y   Multiplica x e y

/        x / y   Divide x por y

%        x % y   Resto da divisão de x por y

++       x++     Incrementa em 1 o valor de x

--       x--     Decrementa em 1 o valor de x




                                       22
Entrada de Dados (exemplo 3)
Algoritmo     << --- Parou Aqui
                          Na Linguagem C...

                          #include <stdio.h>
                          #include <stdlib.h>
Real: n1, n2, n3, media   main()
   ler n1, n2, n3         {
                             double n1, n2, n3, media;
   media=(n1+n2+n3)/3
                            scanf ("%lf %lf %lf",&n1, &n2, &n3);
                          media=(n1+n2+n3)/3;
                          printf(“a media é: %lf”, media);
                          system("PAUSE");
                          }
                                               23
Saída de Dados
Função printf
   printf ("formatos", var1, var2,...)


 Exemplos:

                                %d       inteiro
   int i, j;
                                %f       float
   float x;
   char c;
                                %lf      double
   printf("%d", i);             %c       char
   printf("%d, %f", j, x);      %s       palavra
   printf("%c", c);
   printf("%s", nome);




                                            24
Saída de Dados (Exemplo 4)
#include <stdio.h>
#include <stdlib.h>
main()
{
  int i, j;
  float x;
  char c;
  char nome [10];
  i = 1; j = 2; x = 3;
  printf("%d", i);
  printf(“,");
  printf("%d, %f", j, x);

    system("PAUSE");
}

                                  25
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
    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

}

                                             26
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,
    &n3
   media=(n1+n2+n3)/3; // operacao
  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
}
                                                       27
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
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
}
                                                              28
ARRUMANDO... (Exemplo 6)
{
                               << --- Parou aqui.
int i, j;
float x;
char c;
char nome[30];
printf("DIGITE UM NUMERO INTEIROn");
    scanf("%d", &i);
printf("DIGITE UM NUMERO INTEIRO E UM REALn");
    scanf("%d %f", &j, &x);
printf("DIGITE UM CARACTERn");
    scanf("%s",&c);
printf("DIGITE UMA PALAVRAn");
    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");
}
                                                    29
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;
     char sexo;
     char nome[40];
    // operacao
     somaValores =1+1;
   //saida de dados
      printf("somaValores=%f", somaValores);

system("PAUSE");
}
                                               30
#include <stdio.h>                                        Exemplo 8
#include <stdlib.h>
main()
{
     // definicao de vairiaveis
          int n;
      int quantidade_valores;
      float x, y, somaValores;
      char sexo;
      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");
}
                                                          31
Entrada e Saída
              Exemplo 9                                  Exemplo 10

#include <stdio.h>                        #include <stdio.h>
#include <stdlib.h>                       #include <stdlib.h>
main()                                    main()
{                                         {
   double n1, n2, n3, media;                 double n1, n2, n3, media;
   scanf ("%lf %lf %lf",&n1, &n2, &n3);      printf("Digite 3 notas: ");
   media=(n1+n2+n3)/3;                       scanf ("%lf %lf %lf",&n1, &n2, &n3);
   printf ("%lf",media);                     media=(n1+n2+n3)/3;
                                             printf ("Media: %.2lf",media);
                                             printf (“n”);
    system("PAUSE");                         system("PAUSE");
}                                         }




                                                            32
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()
{
    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 quilosn",
      sexo, pesoIdeal);
// Valor das variaveis jogado dentro do testo
    system("PAUSE");
}

                                                            33
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");
}
#include <stdio.h>
                                  PROGRAMA I.M.C.
#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"...
  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
Operador Exemplo Comentário
=       x = y    Atribui o valor de y a x
+=      x += y   Equivale a x = x + y
-=      x -= y   Equivale a x = x – y
*=      x *= y   Equivale a x = x * y
/=      x /= y   Equivale a x = x / y
%=      x %= y   Equivale a x = x % y




                                            36
Funções Matemáticas
Função   Exemplo    Comentário
ceil     ceil(x)    Arredonda o número real para cima; ceil(3.2) é 4
cos      cos(x)     Cosseno de x (x em radianos)
exp      exp(x)     e elevado à potencia x
fabs     fabs(x)    Valor absoluto de x
floor    floor(x)   Arredonda o número Real para baixo; floor(3.2) é 3
log      log(x)     Logaritmo natural de x
log10    log10(x)   Logaritmo decimal de x
pow      pow(x,y)   Calcula x elevado à potência y
sin      sin(x)     Seno de x
sqrt     sqrt(x)    Raiz quadrada de x
tan      tan(x)     Tangente de x
           #include <math.h>

                                                37
// 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 = %dn", a, b, a + b);
    printf("%d - %d = %dn", a, b, a - b);
    printf("%d x %d = %dn", a, b, a * b);
    printf("%d / %d = %0.1fn", a, b, (float) a / b); // resultado fracionário
    printf("%d elevado a %d = %0.1fn", a, b, pow(a, b)); // pow(base,
     expoente)
    printf("raiz quadrada de %d = %0.1fn", a, sqrt(a));

    getch();
    return 0;
}
Exemplo 12
                               < --PAROU AQUI
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;
    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 %.2fn", distancia);
    system("PAUSE");
}

                                                                             39
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
- 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.




                                              40
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);
    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");
}
                                                         41
Operadores Relacionais
Operador       Exemplo      Comentário
==             x == y       O conteúdo de x é igual ao de y

!=             x != y       O conteúdo de x é diferente do de y

<=             x <= y       O conteúdo de x é menor ou igual ao de y

>=             x >= y       O conteúdo de x é maior ou igual ao de y

<              x < y        O conteúdo de x é menor que o de y

>              x > y        O conteúdo de x é maior que o de y


     As expressões relacionais em C retornam :
     • 1 se verdadeiro e;
     • 0 se falso.


                                                    42
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).


! (NÃO lógico): usada com apenas um operando. Retorna
   verdadeiro se o operando é falso e vice-versa.
   Exemplo: if( !var ).




                                             43
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




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);
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
   Tabela E   Tabela OU    Tabela NÃO

  VeV→V       V ou V → V   Não V → F

  VeF→F       V ou F → V   Não F → V

  FeV→F       F ou V → V

  FeF→F       F ou F → F

                            47
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)     Executa o comando se a condição for
     comando;       qualquer coisa diferente de zero!
  else
   comando;
                      if (peso= =peso_ideal)
                          printf (“Vc está em forma!”);
  if (condição) {     else
     comando1;            printf (“Necessário fazer dieta!”);
    comando2;
  }
                     em pseudo-código:
    else {           se (peso= =peso_ideal)
    comando3;           entao exibir “Vc está em forma!”
    comando4;           senao exibir “Necessário fazer dieta!”
  }
Estrutura SWITCH
switch (numero){
         case 1: printf ("Janeiron"); break;
         case 2: printf ("Fevereiron"); break;
         case 3: printf ("Marcon"); break;
         case 4: printf ("Abriln"); break;
         case 5: printf ("Maion"); break;
         case 6: printf ("Junhon"); break;
         case 7: printf ("Julhon"); break;
         case 8: printf ("Agoston"); break;
         case 9: printf ("Setembron"); break;
         case 10: printf ("Outubron"); break;
         case 11: printf ("Novembron"); break;
         case 12: printf ("Dezembron"); break;
     default: printf (“Mes invalidon");
    }
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: %dn", 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: ");
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.
- 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;
              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 %.2fn", valorTotal);
    printf ("n Valor com desconto eh %.2fn", descontado);
    printf ("n Bonus eh %.2fn", 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)
    {
    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)
 {
  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 para cima
ou para baixo. Veja um exemplo:
Laço For
main()
{ int i;
 for(i = 1; i <= 10; i++)
 {
  printf("%d ", i);
  }
 printf("nn");
 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("nn");
    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++);
// agora com expressões matemáticas ☺
    printf("nn");
    system("PAUSE");
}
Laço For
main()
{
int a;
for ( a = 0; a <= 10; a = a + 1 )
{
    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)
{
    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, ... .
#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.
                // 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
 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)
           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;
         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");
    }
EXERCÍCIO:
PROGRAMA DESPENCOL
   1- PARAFUSO R$ 05,00 A CAIXA
   2- TROLHA    R$ 15,65 A UNIDADE
   3- PORCAS    R$ 06,50 A CAIXA
   4- PREGOS    R$ 04,30 A CAIXA
   5- MARTELO R$ 10,00 A UNIDADE
   6- CERROTE R$ 30,00 A UNIDADE
   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 DA VENDA.
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;
    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] %cn", 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.
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ã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
  “conio.h”.
Operadores de incremento e de
decremento
A instrução
  x=x+1;
é equivalente a
  ++x;
que é 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
Operadores de incremento e de
                     decremento
  n=5;
  x=n++;
  cout<<“nN= “<<n<<“ X= “<<x;
A saída será
  N=6 X=5
Operadores de incremento e de
                     decremento
  x=x-1;
é equivalente a
  --x;
que é equivalente a
  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   a p=p%5;
D-=3;   equivale a   d=d-3;
Operadores relacionais
> maior
>= maior ou igual
< menor
<= menor ou igual
== igual
!= diferente
Programa exemplo
#include<iostream.h>
main(){
    int verdadeiro, falso;
    verdadeiro = (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
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.
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.
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,
  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
 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
 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.
Laços
#include<iostream.h>
#include<conio.h>
main(){
 int i;
 for(i=1;i<=10;i++)
 { 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
  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
  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
  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);
MATRIZES
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
   – 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[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];
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:” );
    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 )
      {
                            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.2fn”, (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.
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 programa soma os dois vetores abaixo: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]:%dn",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("nnEntre 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 = %fn",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
         • 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)
     – 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>                         int main( )
#include <stdlib.h>                        {
                                           float notas [NUM_ALUNOS];
#define NUM_ALUNOS 3                       float media_turma;
                                           int i;
float media ( float notas[], int n )
{                                              for ( i = 0; i < NUM_ALUNOS; i++ )
     int i = 0;                                  {
     float m = 0.0;                                        printf ("Digite a nota do %d o. aluno: ", i+1);
                                                 scanf ("%f", &notas[i]);
    for ( i = 0; i < n; i++ )                    }
    {                                          media_turma = media ( notas, NUM_ALUNOS );
              m = m + notas[i] ;
    }                                          printf ("A media da turma eh %.2f n", media_turma);
    m = m / n;                                 system ("Pause");
    return m;                                  return 0;
}                                          }
Vetores e Funções

• E para calcular o número de          #include <stdio.h>
  alunos com notas acima da            #include <stdlib.h>

  média?                               #define NUM_ALUNOS 3

• A função de cálculo de média         float media ( float notas[], int n )
                                       {
  pode ser a mesma já utilizada.....        int i = 0;
                                            float m = 0.0;
• E agora criamos a função de
                                           for ( i = 0; i < n; i++ )
  cálculo da quantidade de alunos          {
                                                     m = m + notas[i] ;
  acima da média!                          }
                                           m = m / n;
                                           return m;
                                       }
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;
              }
    }
    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);
      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:
        • 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]);
                    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 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 Strings




                                    2010/1
#include <stdio.h>
                   Funções em C : Exemplo
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)
                 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
  chamou; ela só pode alterar sua cópia temporária.


  C permite a criação de funções   long int Fatorial(long int i)
                                                                     No exemplo, cada
recursivas, isto é, uma função     {                                 chamada recursiva da
que possui dentro do seu corpo     if(i > 1)                         função “fatorial” coloca
                                           return i*Fatorial(i-1);   mais uma variável i do
de instruções uma chamada a si     else                              tipo long int na pilha
própria.                                   return 1;                 (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);
else
     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
                                                   V[0] = 4
   pode ser referenciado através de índices.       V[1] = 7
   Declaração
                                                               V[4] = 3
                                        Atribuição
   <Tipo><Nome_da_Var>[<tamanho>];      v[i] = 10;
   Ex: int v[30]; float n[10];          v[2] = 12 + x;
                                        v[i+2] = 14;

   Leitura
                                        Impressão printf("nnVetor: ");
   for (i=0; i<30; i++)
                                        for (i=0; i<30; i++)
   { printf("nnElemento %d: ",i+1);
                                        printf(" %d ",v[i]);
   scanf(“%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   Inicializador: seqüência de valores
x[1]   =   0.2    separados por virgula.
x[2]   =   33.0
x[3]   =   4.4      O número de bytes para armazenar um
x[4]   =   5.05     vetor é igual ao tamanho do tipo base
x[5]   =   0.0
                    (short = 2 bytes, double = 8 bytes, …)
x[6]   =   7.7      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
#include <ansi_c.h>
#include <stdio.h>                               Diretiva de pré-processamento usada
#define N 5
                                                 para definir constantes simbólicas.
void main(void)
{
int i=0, soma=0;
int 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=%dn", 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("%sn", s1);
    strcpy(s1 "Isso e um testen");
    printf("s1");
    if (strchar("alo",'o'))
      printf("o esta em alon");
    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
                                     Matricula, Nota1
     seguintes dados sobre os alunos de uma turma:
                                                      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          Exemplo:        Atribuição:
  typedef struct { variaveis
  }nome_do_tipo;             typedef struct { int mat; Nome-do-registro.campo = valor;
                             float n1, n2, med;           aluno.n1 = 5.0;
  TAlunos aluno;             }TAlunos;
                                                          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; nome-do-vetor[indice].campo =
  float n1, n2, med;        valor;
  }TAlunos;                     aluno[3].n1 = 5.0;
  TAlunos aluno[30];        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("nnDados do Aluno %dnn",i+1);
                printf("ntNumero de Matricula do Aluno: ");
                scanf("%d",&escola[i].mat);
                printf("ntSerie (1-4): ");
                scanf("%d",&escola[i].serie);
                printf("ntTem 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    Exemplo: carrega a matriz num de
 bidimensional de inteiros   1 a 12 e escreve linha por linha.
 d com dimensões 10x20,      #include <ansi_c.h>
                             #include <stdio.h>
 temos:
                             void main(void)
                             { int t, i, num[3][4];
Para acessar o elemento             // Salve os numeros na matriz num
1,2 da matriz d, usamos:            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
O número de bytes                   for (t=0; t<3;++t)
                                           {printf("t");
necessários para                            printf("n");
                                            for (i=0; i<4;++i)
armazenar uma matriz                        printf("%3dt", num[t][i]);}
                                            printf("n");
bidimensional é dado por:           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.
• 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
                          #include <ansi_c.h>
   O programa ao lado     #include <stdio.h>
usa a matriz de strings   #define MAX 100
                          #define LEN 100
como base para um         char texto[MAX][LEN];
                          //Um editor de textos muito simpls
pequeno editor de
textos.                   void main(void)
                          {
   O programa recebe      register int t, i, j;
                          printf("Digite uma linha vazia para sair. n");
linhas de texto até que   for (t=0; t<MAX; t++)
                              {
uma linha em branco              printf("%d", t);
                                 gets(texto[t]);
seja inserida. Em                if(!*texto[t]) break; //sai com linha em branco
seguida ele mostra cada       }
                          for (i=0; i<t; i++){
linha com um caracter            for (j=0; texto[i][j]; i++) putchar(texto[i][j]);
                                    putchar('n');
por vez.                         }
                          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.
5. Ler um vetor de números inteiros e imprimir as posições do maior e do menor
    elemento do vetor. Assuma que 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.
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
                          relat rio
   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

Mais conteúdo relacionado

Mais procurados

Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)DaviMatos25
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoBruno Quaresma
 
Algoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosAlgoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosMauro Pereira
 
Apresentação dos comandos básicos do Scratch
Apresentação dos comandos básicos do ScratchApresentação dos comandos básicos do Scratch
Apresentação dos comandos básicos do ScratchCecifm
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 

Mais procurados (20)

Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Exercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de ProgramaçãoExercicios de estruturas condicionais - Lógica de Programação
Exercicios de estruturas condicionais - Lógica de Programação
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Algoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosAlgoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentos
 
Apresentação dos comandos básicos do Scratch
Apresentação dos comandos básicos do ScratchApresentação dos comandos básicos do Scratch
Apresentação dos comandos básicos do Scratch
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 

Semelhante a Introdução a linguagem c karen lowhany

Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem cRafael_Lima87
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programaçãoGustavo Nazário
 
Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Lucas Antonio
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafaelhugodrocha
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Bianca Dantas
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02profwtelles
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em CElaine Cecília Gatto
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+cThiago Freitas
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivosFlávio Freitas
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 

Semelhante a Introdução a linguagem c karen lowhany (20)

Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Ud2
Ud2Ud2
Ud2
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafael
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222
 
Linguagem c parte 1
Linguagem c parte 1Linguagem c parte 1
Linguagem c parte 1
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 

Mais de Karen Costa

As primeiras ações e organizações voltadas para as pessoas com deficiência
As primeiras ações e organizações voltadas para as pessoas com deficiência As primeiras ações e organizações voltadas para as pessoas com deficiência
As primeiras ações e organizações voltadas para as pessoas com deficiência Karen Costa
 
O aluno adulto frente ao desafio de assegurar sua permanência na escola eja
O aluno adulto frente ao desafio de assegurar sua permanência na escola   ejaO aluno adulto frente ao desafio de assegurar sua permanência na escola   eja
O aluno adulto frente ao desafio de assegurar sua permanência na escola ejaKaren Costa
 
O que é engenharia de software
O que é engenharia de softwareO que é engenharia de software
O que é engenharia de softwareKaren Costa
 
Apostila de arquitetura de computadores karen lowhany
Apostila de arquitetura de computadores   karen lowhanyApostila de arquitetura de computadores   karen lowhany
Apostila de arquitetura de computadores karen lowhanyKaren Costa
 
Manutenção completa em pc
Manutenção completa em pcManutenção completa em pc
Manutenção completa em pcKaren Costa
 
Linux Educacional
Linux EducacionalLinux Educacional
Linux EducacionalKaren Costa
 
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOINTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOKaren Costa
 
Comunicação e expressão
Comunicação e expressão Comunicação e expressão
Comunicação e expressão Karen Costa
 
Lesões celulares
Lesões celulares Lesões celulares
Lesões celulares Karen Costa
 
Revisão pescoço odonto (1)
Revisão  pescoço odonto (1)Revisão  pescoço odonto (1)
Revisão pescoço odonto (1)Karen Costa
 
Aula incisivos inferiores itpac 2013
Aula incisivos inferiores itpac 2013Aula incisivos inferiores itpac 2013
Aula incisivos inferiores itpac 2013Karen Costa
 
A nova geração da web karen lowhany
A nova geração da web   karen lowhanyA nova geração da web   karen lowhany
A nova geração da web karen lowhanyKaren Costa
 
Redes de Computadores - KAREN LOWHANY
Redes de Computadores - KAREN LOWHANYRedes de Computadores - KAREN LOWHANY
Redes de Computadores - KAREN LOWHANYKaren Costa
 
Apostila linux educacional karen lowhany
Apostila linux educacional   karen lowhanyApostila linux educacional   karen lowhany
Apostila linux educacional karen lowhanyKaren Costa
 
Karen Lowhany - Planejamento de Marketing
Karen Lowhany  - Planejamento de Marketing Karen Lowhany  - Planejamento de Marketing
Karen Lowhany - Planejamento de Marketing Karen Costa
 
Historia do tocantins karen lowhany costa
Historia do tocantins   karen lowhany costaHistoria do tocantins   karen lowhany costa
Historia do tocantins karen lowhany costaKaren Costa
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadoresKaren Costa
 

Mais de Karen Costa (17)

As primeiras ações e organizações voltadas para as pessoas com deficiência
As primeiras ações e organizações voltadas para as pessoas com deficiência As primeiras ações e organizações voltadas para as pessoas com deficiência
As primeiras ações e organizações voltadas para as pessoas com deficiência
 
O aluno adulto frente ao desafio de assegurar sua permanência na escola eja
O aluno adulto frente ao desafio de assegurar sua permanência na escola   ejaO aluno adulto frente ao desafio de assegurar sua permanência na escola   eja
O aluno adulto frente ao desafio de assegurar sua permanência na escola eja
 
O que é engenharia de software
O que é engenharia de softwareO que é engenharia de software
O que é engenharia de software
 
Apostila de arquitetura de computadores karen lowhany
Apostila de arquitetura de computadores   karen lowhanyApostila de arquitetura de computadores   karen lowhany
Apostila de arquitetura de computadores karen lowhany
 
Manutenção completa em pc
Manutenção completa em pcManutenção completa em pc
Manutenção completa em pc
 
Linux Educacional
Linux EducacionalLinux Educacional
Linux Educacional
 
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOINTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
 
Comunicação e expressão
Comunicação e expressão Comunicação e expressão
Comunicação e expressão
 
Lesões celulares
Lesões celulares Lesões celulares
Lesões celulares
 
Revisão pescoço odonto (1)
Revisão  pescoço odonto (1)Revisão  pescoço odonto (1)
Revisão pescoço odonto (1)
 
Aula incisivos inferiores itpac 2013
Aula incisivos inferiores itpac 2013Aula incisivos inferiores itpac 2013
Aula incisivos inferiores itpac 2013
 
A nova geração da web karen lowhany
A nova geração da web   karen lowhanyA nova geração da web   karen lowhany
A nova geração da web karen lowhany
 
Redes de Computadores - KAREN LOWHANY
Redes de Computadores - KAREN LOWHANYRedes de Computadores - KAREN LOWHANY
Redes de Computadores - KAREN LOWHANY
 
Apostila linux educacional karen lowhany
Apostila linux educacional   karen lowhanyApostila linux educacional   karen lowhany
Apostila linux educacional karen lowhany
 
Karen Lowhany - Planejamento de Marketing
Karen Lowhany  - Planejamento de Marketing Karen Lowhany  - Planejamento de Marketing
Karen Lowhany - Planejamento de Marketing
 
Historia do tocantins karen lowhany costa
Historia do tocantins   karen lowhany costaHistoria do tocantins   karen lowhany costa
Historia do tocantins karen lowhany costa
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadores
 

Introdução a linguagem c karen lowhany

  • 1. Prof. Camilo Carmo dos Santos Lógica de Programação Introdução à Linguagem C Técnico em informática
  • 2. Tradução TRADUTOR CÓDIGO FONTE CÓDIGO OBJETO ... LET SOMA = VAR1 + TOTAL ... ... 00010110111001011001011010 ... (linguagem de prog.) (“executável”) MONTADOR (assembler) Tradutor para linguagens de 2a geração. COMPILADOR: Traduz todo o programa de uma vez. INTERPRETADOR: Traduz o programa instrução por instrução. 2
  • 3. 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 O sistema Unix é escrito em C e C++ 3
  • 4. 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 } 4
  • 5. Diretivas para o processador - Lógica de Programação – Prof. Camilo Carmo dos Santos 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 <string.h> Funções de texto Cap. 1 - Visão Geral 5
  • 6. O ambiente Dev-C++ O Dev-C++ é um ambiente de desenvolvimento de programas em C e C++ (editor, compilador, bibliotecas...) Pode ser baixado de: http://www.bloodshed.net/devcpp.html 6
  • 7. Lógica de Programação – Prof. Camilo Carmo dos Santos 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 Cap. 1 - Visão Geral 7 7
  • 8. Usando o Dev-C++ (3) #include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); system("PAUSE"); } 8
  • 9. 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. Se não houver erros, execute o programa com o comando Executar, Executar ou com a tecla Ctrl-F10 9
  • 10. 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 Verifique também a linha anterior, que pode ser a responsável pelo erro, especialmente se faltar o ; Use comentários, iniciados por // 10
  • 11. Template (Exemplo 1) #include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); system("PAUSE"); } 11
  • 12. DETALHE: • TODO o programa vai começar com bibliotecas no topo, em “C” as principais são: • #include <stdio.h> • #include <stdlib.h>
  • 13. 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). • 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.
  • 14. Arrumando o programa: #include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); printf("n");// PULA UMA LINHA system("PAUSE"); } 14
  • 15. EXERCÍCIO FAÇA UM PROGRAMA QUE ESCREVA O SEU NOME NA TELA DO COMPUTADOR. 15
  • 16. 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 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! 16
  • 17. Algoritmo...... Na Linguagem C... #include <stdio.h> #include <stdlib.h> main() { double n1, n2, n3, media; Real: n1, n2, n3, media system("PAUSE"); } 17
  • 18. 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' 18
  • 19. Entrada e Saída de Dados 19
  • 20. Entrada de Dados Função scanf scanf ("formatos", &var1, &var2,...) Exemplos: %d inteiro int i, j; %f float float x; char c; %lf double scanf("%d", &i); %c char scanf("%d %f", &j, &x); %s palavra scanf("%c", &c); scanf("%s", nome); 20
  • 21. Entrada de Dados (Exemplo 2) Algoritmo Na Linguagem C... #include <stdio.h> #include <stdlib.h> main() Real: n1, n2, n3, media { ler n1 double n1, n2, n3, media; ler n2 scanf ("%lf",&n1); ler n3 scanf ("%lf",&n2); scanf ("%lf",&n3); ler n1, n2, n3 scanf ("%lf %lf %lf",&n1, &n2, &n3); system("PAUSE"); } 21
  • 22. Operadores Matemáticos Operador Exemplo Comentário + x + y Soma x e y - x – y Subtrai y de x * x * y Multiplica x e y / x / y Divide x por y % x % y Resto da divisão de x por y ++ x++ Incrementa em 1 o valor de x -- x-- Decrementa em 1 o valor de x 22
  • 23. Entrada de Dados (exemplo 3) Algoritmo << --- Parou Aqui Na Linguagem C... #include <stdio.h> #include <stdlib.h> Real: n1, n2, n3, media main() ler n1, n2, n3 { double n1, n2, n3, media; media=(n1+n2+n3)/3 scanf ("%lf %lf %lf",&n1, &n2, &n3); media=(n1+n2+n3)/3; printf(“a media é: %lf”, media); system("PAUSE"); } 23
  • 24. Saída de Dados Função printf printf ("formatos", var1, var2,...) Exemplos: %d inteiro int i, j; %f float float x; char c; %lf double printf("%d", i); %c char printf("%d, %f", j, x); %s palavra printf("%c", c); printf("%s", nome); 24
  • 25. Saída de Dados (Exemplo 4) #include <stdio.h> #include <stdlib.h> main() { int i, j; float x; char c; char nome [10]; i = 1; j = 2; x = 3; printf("%d", i); printf(“,"); printf("%d, %f", j, x); system("PAUSE"); } 25
  • 26. 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 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 } 26
  • 27. 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, &n3 media=(n1+n2+n3)/3; // operacao 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 } 27
  • 28. 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 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 } 28
  • 29. ARRUMANDO... (Exemplo 6) { << --- Parou aqui. int i, j; float x; char c; char nome[30]; printf("DIGITE UM NUMERO INTEIROn"); scanf("%d", &i); printf("DIGITE UM NUMERO INTEIRO E UM REALn"); scanf("%d %f", &j, &x); printf("DIGITE UM CARACTERn"); scanf("%s",&c); printf("DIGITE UMA PALAVRAn"); 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"); } 29
  • 30. 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; char sexo; char nome[40]; // operacao somaValores =1+1; //saida de dados printf("somaValores=%f", somaValores); system("PAUSE"); } 30
  • 31. #include <stdio.h> Exemplo 8 #include <stdlib.h> main() { // definicao de vairiaveis int n; int quantidade_valores; float x, y, somaValores; char sexo; 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"); } 31
  • 32. Entrada e Saída Exemplo 9 Exemplo 10 #include <stdio.h> #include <stdio.h> #include <stdlib.h> #include <stdlib.h> main() main() { { double n1, n2, n3, media; double n1, n2, n3, media; scanf ("%lf %lf %lf",&n1, &n2, &n3); printf("Digite 3 notas: "); media=(n1+n2+n3)/3; scanf ("%lf %lf %lf",&n1, &n2, &n3); printf ("%lf",media); media=(n1+n2+n3)/3; printf ("Media: %.2lf",media); printf (“n”); system("PAUSE"); system("PAUSE"); } } 32
  • 33. 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() { 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 quilosn", sexo, pesoIdeal); // Valor das variaveis jogado dentro do testo system("PAUSE"); } 33
  • 34. 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"); }
  • 35. #include <stdio.h> PROGRAMA I.M.C. #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"... 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"); }
  • 36. Operadores de Atribuição Operador Exemplo Comentário = x = y Atribui o valor de y a x += x += y Equivale a x = x + y -= x -= y Equivale a x = x – y *= x *= y Equivale a x = x * y /= x /= y Equivale a x = x / y %= x %= y Equivale a x = x % y 36
  • 37. Funções Matemáticas Função Exemplo Comentário ceil ceil(x) Arredonda o número real para cima; ceil(3.2) é 4 cos cos(x) Cosseno de x (x em radianos) exp exp(x) e elevado à potencia x fabs fabs(x) Valor absoluto de x floor floor(x) Arredonda o número Real para baixo; floor(3.2) é 3 log log(x) Logaritmo natural de x log10 log10(x) Logaritmo decimal de x pow pow(x,y) Calcula x elevado à potência y sin sin(x) Seno de x sqrt sqrt(x) Raiz quadrada de x tan tan(x) Tangente de x #include <math.h> 37
  • 38. // 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 = %dn", a, b, a + b); printf("%d - %d = %dn", a, b, a - b); printf("%d x %d = %dn", a, b, a * b); printf("%d / %d = %0.1fn", a, b, (float) a / b); // resultado fracionário printf("%d elevado a %d = %0.1fn", a, b, pow(a, b)); // pow(base, expoente) printf("raiz quadrada de %d = %0.1fn", a, sqrt(a)); getch(); return 0; }
  • 39. Exemplo 12 < --PAROU AQUI 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; 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 %.2fn", distancia); system("PAUSE"); } 39
  • 40. 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 - 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. 40
  • 41. 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); 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"); } 41
  • 42. Operadores Relacionais Operador Exemplo Comentário == x == y O conteúdo de x é igual ao de y != x != y O conteúdo de x é diferente do de y <= x <= y O conteúdo de x é menor ou igual ao de y >= x >= y O conteúdo de x é maior ou igual ao de y < x < y O conteúdo de x é menor que o de y > x > y O conteúdo de x é maior que o de y As expressões relacionais em C retornam : • 1 se verdadeiro e; • 0 se falso. 42
  • 43. 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). ! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo: if( !var ). 43
  • 44. 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 system(“PAUSE”); }
  • 45. 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"); }
  • 46. 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); 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"); }
  • 47. Relembrando: Operadores Lógicos Tabela E Tabela OU Tabela NÃO VeV→V V ou V → V Não V → F VeF→F V ou F → V Não F → V FeV→F F ou V → V FeF→F F ou F → F 47
  • 48. 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;
  • 49. Estrutura condicional composta Comando if...else if (condição) Executa o comando se a condição for comando; qualquer coisa diferente de zero! else comando; if (peso= =peso_ideal) printf (“Vc está em forma!”); if (condição) { else comando1; printf (“Necessário fazer dieta!”); comando2; } em pseudo-código: else { se (peso= =peso_ideal) comando3; entao exibir “Vc está em forma!” comando4; senao exibir “Necessário fazer dieta!” }
  • 50. Estrutura SWITCH switch (numero){ case 1: printf ("Janeiron"); break; case 2: printf ("Fevereiron"); break; case 3: printf ("Marcon"); break; case 4: printf ("Abriln"); break; case 5: printf ("Maion"); break; case 6: printf ("Junhon"); break; case 7: printf ("Julhon"); break; case 8: printf ("Agoston"); break; case 9: printf ("Setembron"); break; case 10: printf ("Outubron"); break; case 11: printf ("Novembron"); break; case 12: printf ("Dezembron"); break; default: printf (“Mes invalidon"); }
  • 51. 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: %dn", maior); system("pause"); }
  • 52. 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: "); scanf ("%d", &idade); if (idade>=18) printf ("Pessoa eh maior de idade.n"); else printf ("Pessoa eh menor de idade.n"); system("pause"); }
  • 53. 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"); }
  • 54. 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. - 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’.
  • 55. #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; 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 %.2fn", valorTotal); printf ("n Valor com desconto eh %.2fn", descontado); printf ("n Bonus eh %.2fn", bonus); system("pause"); }
  • 56. 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++; }
  • 57. 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:
  • 58. #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"); }
  • 59. Passo a passo.... #include <stdio.h> #include <stdlib.h> main() { int valor = 1; while(valor <= 10) { printf("%d ", valor); valor++; } system("PAUSE"); }
  • 60. 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 }
  • 61. 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"); }
  • 62. 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) { bloco de instruções }
  • 63. 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 para cima ou para baixo. Veja um exemplo:
  • 64. Laço For main() { int i; for(i = 1; i <= 10; i++) { printf("%d ", i); } printf("nn"); system("PAUSE"); }
  • 65. 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("nn"); system("PAUSE"); } // Observe que "i += 2" é o mesmo que "i = i + 2".
  • 66. 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:
  • 67. #include <stdio.h> #include <stdlib.h> main() { int i, x; for(i = 0, x = 2; i <= 10; printf("%d ", i * x), i++); // agora com expressões matemáticas ☺ printf("nn"); system("PAUSE"); }
  • 68. Laço For main() { int a; for ( a = 0; a <= 10; a = a + 1 ) { 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"); }
  • 69. Loop Infinito erro clássico de programação
  • 70. Loop infinito #include <stdio.h> #include <stdlib.h> main() { int valor = 1; while(valor >= 1) { printf("%d ", valor); valor ++ ; } system("PAUSE"); }
  • 71. 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...
  • 72. 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á.
  • 73. 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 *******
  • 74. #include <stdio.h> #include <stdlib.h> main() { int valor,cont; printf("DIGITE UM NUMERO: "); scanf("%d",&valor); cont=0; while(cont<= valor) { printf("*"); cont = cont+1; } printf("n"); system("PAUSE"); }
  • 75. 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, ... .
  • 76. #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. // 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"); }
  • 77. 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 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.
  • 78. #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) 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"); }
  • 79. #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; 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"); }
  • 80. EXERCÍCIO: PROGRAMA DESPENCOL 1- PARAFUSO R$ 05,00 A CAIXA 2- TROLHA R$ 15,65 A UNIDADE 3- PORCAS R$ 06,50 A CAIXA 4- PREGOS R$ 04,30 A CAIXA 5- MARTELO R$ 10,00 A UNIDADE 6- CERROTE R$ 30,00 A UNIDADE 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 DA VENDA.
  • 81. 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; float media=(p1+p2+p3+p4)/4; printf("nMedia: %.2f",media); system("PAUSE"); }
  • 83. Código pra gerar a tabela ASCII #include <stdio.h> #include <stdlib.h> int main() { char c = 32; do printf("[%d] %cn", c, c); while (++c <= 126); system("Pause"); }
  • 84. 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. Char ch = ‘A’; Cout << int(ch); //Imprime 65
  • 85. 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"); }
  • 86. 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ão ch=getche(); atribui o valor da função getche à variável ch.
  • 87. 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 “conio.h”.
  • 88. Operadores de incremento e de decremento A instrução x=x+1; é equivalente a ++x; que é equivalente a x++;
  • 89. Operadores de incremento e de decremento n=5; x=++n; printf(“nN= “<<n<<“ X= “<<x); A saída será N=6 X=6
  • 90. Operadores de incremento e de decremento n=5; x=n++; cout<<“nN= “<<n<<“ X= “<<x; A saída será N=6 X=5
  • 91. Operadores de incremento e de decremento x=x-1; é equivalente a --x; que é equivalente a x--;
  • 92. 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 a p=p%5; D-=3; equivale a d=d-3;
  • 93. Operadores relacionais > maior >= maior ou igual < menor <= menor ou igual == igual != diferente
  • 94. Programa exemplo #include<iostream.h> main(){ int verdadeiro, falso; verdadeiro = (15<20); falso = (15==20); cout<<“nVerdadeiro “<<verdadeiro; cout<<“nFalso “<<falso; }
  • 95. Operadores lógicos: && || ! C++ oferece três operadores lógicos. São eles: && lógico e || lógico ou ! Lógico não
  • 96. 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. Se exp1 for zero, a exp3 é avaliada e será o valor da expressão condicional com um todo.
  • 97. 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.
  • 98. 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.
  • 99. 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, nada é feito.
  • 100. O comando if if (expressão de teste) { Instrução; Instrução; }
  • 101. 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 nada é executado.
  • 102. 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 if-else.
  • 103. O comando if-else if (expressão de teste) { instrução; instrução; } else { instrução; instrução; }
  • 104. 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; }
  • 105. 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.
  • 106. Laços #include<iostream.h> #include<conio.h> main(){ int i; for(i=1;i<=10;i++) { cout<<i; // mostra o valor getch(); // pega a tecla _sleep(1000); // a espera } system(“PAUSE”); }
  • 107. Laços #include<iostream.h> #include<conio.h> main(){ int i; for(i=10;i<=1;i--) { cout<<i; // mostra o valor getch(); // pega a tecla _sleep(1000); // a espera } system(“PAUSE”); }
  • 108. EXERCÍCO Faça um programa que calcule o valor fatorial de um número inteiro.
  • 109. 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, ... .
  • 110. 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 são distribuídos de maneira diferente no programa.
  • 111. O laço while expressão de inicialização; while (expressão de teste) { . . expressão de incremento (passo); . }
  • 112. 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 uma primeira vez e depois avaliar a expressão de teste e criar um ciclo repetido.
  • 114. MATRIZES Estruturas de Dados Homogêneas Multidimensionais – Matrizes
  • 115. 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 – DimMax_x, DimMax_y: define o tamanho da área de armazenamento - pode ser uma expressão constante inteira
  • 116. 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[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”); }
  • 117. Matrizes em Linguagem “C” Exemplos: int main() { float parc_aluno[2]; float notas_alunos[5][2]; char nome[40]; char nomes_turma[5][40]; return 0; } (Importante: Indexação no estilo [Linha][Coluna])
  • 118. 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:” ); 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”); }
  • 119. 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 ) { 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.2fn”, (media[0]+media[1])/2.0f); system (“pause”); }
  • 120. 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. 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.
  • 121. #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 programa soma os dois vetores abaixo: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]:%dn",x,vetSoma[x]); /*exibe na tela*/ } /*fim do for*/ } /*fim do programa*/
  • 122. main() { int mat[2][2]; float det; int x,y; printf("Este programa calcula a determinante de uma matriz quadrada de ordem 2"); printf("nnEntre 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 = %fn",det); } /*fim do programa*/
  • 124. 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.
  • 125. 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 • Aumenta a confiabilidade dos mesmos. • Resumo: Principais motivações para uso das funções! – Evitar repetição de código – Modularização
  • 126. 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) – 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
  • 127. 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; }
  • 128. Vetores e Funções #include <stdio.h> int main( ) #include <stdlib.h> { float notas [NUM_ALUNOS]; #define NUM_ALUNOS 3 float media_turma; int i; float media ( float notas[], int n ) { for ( i = 0; i < NUM_ALUNOS; i++ ) int i = 0; { float m = 0.0; printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]); for ( i = 0; i < n; i++ ) } { media_turma = media ( notas, NUM_ALUNOS ); m = m + notas[i] ; } printf ("A media da turma eh %.2f n", media_turma); m = m / n; system ("Pause"); return m; return 0; } }
  • 129. Vetores e Funções • E para calcular o número de #include <stdio.h> alunos com notas acima da #include <stdlib.h> média? #define NUM_ALUNOS 3 • A função de cálculo de média float media ( float notas[], int n ) { pode ser a mesma já utilizada..... int i = 0; float m = 0.0; • E agora criamos a função de for ( i = 0; i < n; i++ ) cálculo da quantidade de alunos { m = m + notas[i] ; acima da média! } m = m / n; return m; }
  • 130. 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; } } return conta; }
  • 131. 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); 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; }
  • 132. 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: • média geral da turma; • número de alunos com média individual acima da média da turma.
  • 133. Matrizes e Funções • Será que é possível “passar matrizes” por parâmetro? • Se sim, como?
  • 134. 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]); 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; }
  • 135. 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; }
  • 136. 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 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.
  • 137. LINGUAGEM DE PROGRAMAÇÃO LINGUAGEM C Funções, Matrizes, Vetores e Strings 2010/1
  • 138. #include <stdio.h> Funções em C : Exemplo 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) 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(); }
  • 139. 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 chamou; ela só pode alterar sua cópia temporária. C permite a criação de funções long int Fatorial(long int i) No exemplo, cada recursivas, isto é, uma função { chamada recursiva da que possui dentro do seu corpo if(i > 1) função “fatorial” coloca return i*Fatorial(i-1); mais uma variável i do de instruções uma chamada a si else tipo long int na pilha própria. return 1; (stack). }
  • 140. 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); else 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(); }
  • 141. 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 V[0] = 4 pode ser referenciado através de índices. V[1] = 7 Declaração V[4] = 3 Atribuição <Tipo><Nome_da_Var>[<tamanho>]; v[i] = 10; Ex: int v[30]; float n[10]; v[2] = 12 + x; v[i+2] = 14; Leitura Impressão printf("nnVetor: "); for (i=0; i<30; i++) for (i=0; i<30; i++) { printf("nnElemento %d: ",i+1); printf(" %d ",v[i]); scanf(“%d”,&v[i]); }
  • 142. 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 Inicializador: seqüência de valores x[1] = 0.2 separados por virgula. x[2] = 33.0 x[3] = 4.4 O número de bytes para armazenar um x[4] = 5.05 vetor é igual ao tamanho do tipo base x[5] = 0.0 (short = 2 bytes, double = 8 bytes, …) x[6] = 7.7 vezes o número de elementos. Para armazenar 100 elementos do tipo float são necessários 100 * 32 = 3200 bits ou 400 bytes.
  • 143. Vetores: Exemplo #include <ansi_c.h> #include <stdio.h> Diretiva de pré-processamento usada #define N 5 para definir constantes simbólicas. void main(void) { int i=0, soma=0; int 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=%dn", soma); getchar(); }
  • 144. 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
  • 145. 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("%sn", s1); strcpy(s1 "Isso e um testen"); printf("s1"); if (strchar("alo",'o')) printf("o esta em alon"); if (strstr("ola aqui","ola")) printf("ola encontrado"); getchar(); getchar(); }
  • 146. 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 Matricula, Nota1 seguintes dados sobre os alunos de uma turma: 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 Exemplo: Atribuição: typedef struct { variaveis }nome_do_tipo; typedef struct { int mat; Nome-do-registro.campo = valor; float n1, n2, med; aluno.n1 = 5.0; TAlunos aluno; }TAlunos; scanf("%d", &aluno.mat);
  • 147. 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; nome-do-vetor[indice].campo = float n1, n2, med; valor; }TAlunos; aluno[3].n1 = 5.0; TAlunos aluno[30]; scanf("%d", &aluno[i].mat);
  • 148. 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("nnDados do Aluno %dnn",i+1); printf("ntNumero de Matricula do Aluno: "); scanf("%d",&escola[i].mat); printf("ntSerie (1-4): "); scanf("%d",&escola[i].serie); printf("ntTem 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();
  • 149. Matrizes Bidimensionais: • A linguagem C suporta matrizes multidimensionais; Para declarar uma matriz Exemplo: carrega a matriz num de bidimensional de inteiros 1 a 12 e escreve linha por linha. d com dimensões 10x20, #include <ansi_c.h> #include <stdio.h> temos: void main(void) { int t, i, num[3][4]; Para acessar o elemento // Salve os numeros na matriz num 1,2 da matriz d, usamos: 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 O número de bytes for (t=0; t<3;++t) {printf("t"); necessários para printf("n"); for (i=0; i<4;++i) armazenar uma matriz printf("%3dt", num[t][i]);} printf("n"); bidimensional é dado por: getchar(); }
  • 150. 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. • 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:
  • 151. Matrizes de Strings : Exemplo #include <ansi_c.h> O programa ao lado #include <stdio.h> usa a matriz de strings #define MAX 100 #define LEN 100 como base para um char texto[MAX][LEN]; //Um editor de textos muito simpls pequeno editor de textos. void main(void) { O programa recebe register int t, i, j; printf("Digite uma linha vazia para sair. n"); linhas de texto até que for (t=0; t<MAX; t++) { uma linha em branco printf("%d", t); gets(texto[t]); seja inserida. Em if(!*texto[t]) break; //sai com linha em branco seguida ele mostra cada } for (i=0; i<t; i++){ linha com um caracter for (j=0; texto[i][j]; i++) putchar(texto[i][j]); putchar('n'); por vez. } getchar(); }
  • 152. 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. 5. Ler um vetor de números inteiros e imprimir as posições do maior e do menor elemento do vetor. Assuma que 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.
  • 153. 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. 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.
  • 154. 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.
  • 155. 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 relat rio 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