SlideShare uma empresa Scribd logo
Programação de
Computadores
Aula 2
09/08/2012
Profª Ms. Engª Elaine Cecília Gatto
Unidade 2: Comandos de Controle de Programa
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado Coraçã – USC
Bauru/SP
Termos Importantes
• Código-fonte: é o texto de um programa que um usário pode
  ler. É a entrada para o compilador C.
• Código-Objeto: é a tradução do código-fonte de um programa
  em código de máquina. É a entrada para o linkeditor.
• Linkeditor: é um programa que combina as funções da
  biblioteca C padrão com o código-fonte que você escreveu
  gerando um executável.
• Biblioteca: é um arquivo contendo as funções padrão que
  podem ser utilizadas pelo seu programa.
• Tempo de compilação: são os eventos que ocorrem enquanto
  o seu programa está sendo compilado. Um erro de sintaxe é
  uma ocorrência em tempo de compilação.                       2
• Tempo de execução: são os eventos que ocorrem enquanto o
  seu programa está sendo executado.
Variáveis
• Variáveis locais: uma variável local é aquela que é declarada
  dentro de uma função e só pode ser utilizada naquele “local”
  do seu código-fonte.
• Variáveis globais: uma variável global é aquela que é
  declarada fora de funções e podem ser utilizadas por qualquer
  “parte” do seu código-fonte. Uma variável global guarda o
  valor armazenado por ela, durante toda a execução do
  programa.




                                                                  3
Modificadores de tipo de acesso
• const: é uma variável que não pode ser modificada, possui um
  valor fixado.
• volatile: uma variável desse tipo pode ser alterada de maneira
  não explicitamente especificada no programa. Exemplo: hora
  e data do sistema. A variável que armazena o valor do sistema
  é alterada pelo sistema operacional e não por você.




                                                                   4
Especificadores de tipo de classe de
armazenamento
• Variáveis globais static: funcionam como variáveis globais
  dentro de um módulo. São variáveis globais que não são e,
  nem podem ser, conhecidas em outros módulos. Isto é útil
  quando queremos isolar pedaços de um programa para evitar
  mudanças acidentais em variáveis globais.
• Variáveis locais static: são variáveis cujo valor é mantido de
  uma chamada da função para a outra.




                                                                   5
Especificadores de tipo de classe de
armazenamento
• extern: define variáveis que serão usadas em um arquivo
  apesar de terem sido declaradas em outro. Podemos ter
  programas de milhares de linhas. Estes podem ser divididos
  em vários arquivos (módulos) que serão compilados
  separadamente. Digamos que para um programa grande
  tenhamos duas variáveis globais e estas variáveis são
  declaradas normalmente em um dos arquivos (módulos) do
  programa. Num outro arquivo (módulo) do programa temos
  uma rotina que deve usar as variáveis globais. Então nesse
  caso devemos usar extern para que esses módulos possam
  encontrar as variáveis.

                                                               6
Especificadores de tipo de classe de
armazenamento
    Arquivo 1 (módulo 1)      Arquivo 2 (módulo 2)
int x, y;                  extern int x, y;
char ch;                   extern char ch;
main(void) {               funcao_2(void) {
.                                x = y/10;
.                          }
.                          funcao_3( ) {
}                                y = 10;
funcao_1( ) {              }
  x = 123;                                           7

}
Especificadores de tipo de classe de
armazenamento
• register: o computador tem a memória principal e os
  registradores da CPU. As variáveis e o programa são
  armazenados na memória. Register diz ao compilador que a
  variável em questão deve ser armazenada em um registrador
  da CPU ao invés de uma posição da memória. Usado apenas
  para variáveis locais e parâmetros formais de uma função.




                                                              8
Parâmetros formais
• Normalmente uma função utiliza argumentos que, na verdade
  são variáveis. Essas variáveis são utilizadas dentro da função e
  são passadas como parâmetros para a função.
funcao(argumentos ou parâmetros formais) { }
exemplo:
int contador( numero ) {
   numero = numero + 1;
   return 0;
}


                                                                     9
Código de formatação da
função scanf()
Código Função                        Exemplo
%c     Ler um único caracter         scanf(“%c”, ‘a’);
%d     Ler um inteiro decimal        scanf(“%d”, 20);
%e     Ler um número em notação      scanf(“%e”, &num);
       científica
%f     Ler um número em ponto        scanf(“%f”, 25.6);
       flutuante
%o     Ler um inteiro octal          scanf(“%o”, 012);
%s     Ler uma série de caracteres   scanf(“%s”, ‘abcdeteste’);
%x     Ler um número hexadecimal     scanf(“%x”, 0x80);
%u     Ler um decimal sem sinal      scanf(“%u”, &num);
                                                                  10
%l     Ler um inteiro long           scanf(“%l”, &num);
Operador de endereço (&)
• A memória do seu computador é dividida em bytes
• Estes bytes são numerados de 0 até o limite da memória da
  sua máquina.
• Estes números são chamados de endereços de bytes.
• Um endereçoo e o nome que o computador usa para
  identificar a variável.
• Toda variável ocupa uma certa localização na memória.
• Seu endereço é o do primeiro byte ocupado por ela.
• Um inteiro ocupa 2 bytes.
• Suponha uma variável n do tipo inteira.
• Suponha que tenha atribuido a ela o valor 2.                11
• Quando n for referenciada devolverá o valor 2.
Operador de endereço (&)
• Se você referenciar n precedido de & - &n – então será devolvido o
  endereço do primeiro byte onde n está armazenada.
• Exemplo:
main() {
   int num;
   num = 2;
   printf(“ n Valor=%d, endereco=%u”, num, &num);
}




                                                                       12
Função getche() e getch()
• getche(): Lê o caracter do teclado e permite que já seja
  impresso na tela, diferente de scanf() em que é necessário
  apertar enter.
• getch(): lê o caracter do teclado e não permite que seja
  impresso na tela.
• Ambas não aceitam argumentos e devolvem o caracter lido
  para a função que a chamou.




                                                               13
Função getche() e getch()
#include <stdio.h>
#include <stdlib.h>

main()
{
  char ch;
  printf("n Digite algum caracter: ");
  ch = getche();
  printf(" n A tecla digitada e: %c ", ch , " n ");
  system("PAUSE");
}




                                                        14
Função getche() e getch()
#include <stdio.h>
#include <stdlib.h>
main()
{
   char ch;
   printf("n Digite algum caracter: ");
   ch = getch();
   printf(" n A tecla digitada e: %c ", ch , " n ");
   printf(" e a sua sucessora ASCII e: %c ", ch+1, " n ");
   system("PAUSE");
}




                                                              15
Função getchar()
• A função getchar() lê um caracter e retorna um inteiro que é
  ou o código do caracter, ou o valor -1 que corresponde a fim
  de arquivo.
#include <stdio.h>
#include <stdlib.h>
main()
{
  int c;
  c=getchar();
  printf("%d",c);
  system("PAUSE");                                               16
}
Função putchar()
• É o complemento de getchar().
• Aceita um argumento cujo valor será impresso.
#include <stdio.h>
#include <stdlib.h>
main()
{
  int c;
  c=getchar();
  putchar(c);
  system("PAUSE");
}                                                 17
Incremento
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num=0;
   printf(" n %d num", num);
   printf(" n %d ++num", ++num);
   printf(" n %d num", num);
   printf(" n %d ++num", ++num);
   printf(" n %d num", num);
   system("PAUSE");
}                                   18
Incremento
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num=0;
   printf(" n %d num: ", num);
   printf(" n %d num++: ", num++);
   printf(" n %d num: ", num);
   printf(" n %d num++: ", num++);
   printf(" n %d num: ", num);
   system("PAUSE");
}                                     19
Decremento
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num=10;
   printf(" n %d num: ", num);
   printf(" n %d --num: ", --num);
   printf(" n %d num: ", num);
   printf(" n %d --num: ", --num);
   printf(" n %d num: ", num);
   system("PAUSE");
}                                     20
Decremento
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num=10;
   printf(" n %d num: ", num);
   printf(" n %d num--: ", num--);
   printf(" n %d num: ", num);
   printf(" n %d num--: ", num--);
   printf(" n %d num: ", num);
   system("PAUSE");
}                                     21
sizeof
• É um operador em tempo de compilação unário.
• Retorna o tamanho, em bytes, da variável ou especificador de
  tipo, em parênteses, que ele precede.
• Devemos usá-lo para garantir portabilidade.




                                                                 22
sizeof
#include <stdio.h>
#include <stdlib.h>             printf("Tamanho do a : %dn", sizeof(a));
                                printf("Tamanho do b : %dn", sizeof(b));
main()
                                printf("Tamanho do c : %dn", sizeof(c));
{                               printf("Tamanho do d : %dn", sizeof(d));
  int           a;              printf("Tamanho do e : %dn", sizeof(e));
  short int         b;          printf("Tamanho do f : %dn", sizeof(f));
  long int         c;           printf("Tamanho do g : %dn", sizeof(g));
                                printf("Tamanho do h : %dn", sizeof(h));
  unsigned int         d;
                                printf("Tamanho do i : %dn", sizeof(i));
  unsigned short int e;         printf("Tamanho do j : %dn", sizeof(j));
  unsigned long int f;          system("PAUSE");
  float          g;         }
  double            h;
  long double          i;
                                                                            23
  char           j;
Comandos de controle de
programa
•   Seleção: if e switch (condicional)
•   Iteração: while, for e do-while (laço)
•   Desvio: break, continue, goto e return (salto)
•   Rótulo: case, default e label

• Um valor verdadeiro em C pode ser um número positivo ou
  negativo – é qualquer valor diferente de zero.



                                                            24
IF – SE
if ( condição )   if ( condição )
{                 {
       Bloco de          Bloco 1;
comandos;         }
}                 else
                  {
if ( condição )          Bloco 2;
else comandos;    }
                                    25
IF – SE
if ( condição) {
else if ( condição ) { }
else if ( condição ) { }
.
.
else { }
}

                           26
IF – SE
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num1;
   int num2;
   printf("Digite dois números n");
   scanf(" %d %d", &num1, &num2);
   if(num1 > num2){
       printf("O numero num1 e maior que num2");
       printf("n");
       }
       else {
           printf("O numero num1 e menor que num2");
           printf("n");
           }
   system("PAUSE");                                    27
}
IF – SE
#include <stdio.h>
#include <stdlib.h>
main()
{
   int a, b;
   printf("Digite dois numeros n");
   scanf("%d %d", &a, &b);
   if(b) printf("resultado: %d n", a/b);
   else printf("não pode dividir por zero n");
   system("PAUSE");
}                                                 28
Switch – chaveamento
switch( expressão ) {   • Comando de seleção
                          múltipla.
case constante1
                        • Testa sucessivamente o
      comandos;           valor de uma expressão
      break;              contra uma lista de
case constante2           constantes inteiras ou
                          de caractere.
      comandos;
                        • Quando        o   valor
      break;              coincide, os comandos
default:                  associados       àquela
                          constante           são
      comandos;                                     29
                          executados
}
Switch – chaveamento
#include <stdio.h>                   switch(ch) {
#include <stdlib.h>                          case '1':
main()                                           printf("Esta e a opcao 1
{                                  n");
   char ch;                                      break;
                                              case '2':
   printf("1. Testando a opcao 1                 printf("Esta e a opcao 2
n");                              n");
   printf("2. Testando a opcao 2                 break;
n");                                        case '3':
   printf("3. Testando a opcao 3                 printf("Esta e a opcao 3
n");                              n");
                                                 break;
   ch=getchar();                             default:
                                                   printf("nenhuma
                                   opcao selecionada");
                                                   }                        30
                                       system("PAUSE");
                                   }
Switch – chaveamento
• Switch avalia a expressão entre parenteses, após a palavra
  switch, e compara seu valor com os rótulos dos casos.
• A expressão entre parenteses deve ser de valor inteiro ou
  caractere.
• O comando break causa uma saída imediata do switch.
• Se break é omitido, a execução continua pelos próximos
  comandos case até que o fim do switch seja encontrado.




                                                               31
For – para
for ( inicialização; condição; incremento ) comando;

OU

for ( inicialização; condição; incremento )
{
         comando;
}



                                                       32
For – para
• É útil quando queremos repetir algo um número fixo de vezes.
• inicialização: instrução de atribuição, executada uma única vez
  antes do laço ser iniciado. [ x = 0 ]
• condição: instrução que controla o laço. Avalia como
  verdadeira ou falsa toda vez que o laço for iniciado ou
  reiniciado. Se verdadeira, o corpo do laço é executado.
  Quando falsa, o laço é terminado. [ x > 5 ]
• incremento: instrução executada toda vez após a execução do
  corpo do laço. [ x++ ]



                                                                    33
For – para
#include <stdio.h>
#include <stdlib.h>
main()
{
   int conta;
   for(conta=0; conta<10; conta++)
   printf(" conta = %d n", conta);
   system("PAUSE");
}

                                      34
For – para
#include <stdio.h>
#include <stdlib.h>
main()
{
   int conta, numero;
   printf("Digite um numero inteiro n");
   scanf("%d", &numero);
   for(conta=0; conta<numero; conta++)
   printf(" conta = %d n", conta);
   system("PAUSE");
}                                           35
While – enquanto
while ( condicao ) comando;

• O laço se repete quando a condição for verdadeira. Quando a
  condição for falsa, o controle do programa passa para a linha
  após o código do laço.
• Seu uso é apropriado em situações em que o laço pode ser
  terminado inesperadamente por condições desenvolvidas
  dentro do laço




                                                                  36
While – enquanto
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num1, num2;
   printf(" n Digite um numero inteiro entre 0 e 10 n");
   scanf("%d", &num1);
   while(num1<10){
       printf(" n enquanto num1 for menor que 10, imprima isto!
%d", num1);
       printf(" n ");
       num1++;
   }                                                               37
   system("PAUSE");
}
Do-While
• Este laço verifica a condição no final do laço. Portanto, o laço
  do-while sempre será executado pelo menos uma vez. O laço
  do-while repete até que a condição se torne falsa.

do {
         comandos;
}
while;



                                                                     38
Do-While
#include <stdio.h>
#include <stdlib.h>
main()
{
   int num;
   do{
       printf(" n Digite um numero entre 0 e 51 n ");
       scanf("%d", &num);
     }
     while(num<=50);
   system("PAUSE");
}                                                         39
Return
• É usado para retornar um valor de uma função.
• É um comando de desvio.
• Faz com que a execução retorne ao ponto em que a chamada
  à função foi feita.

return expressão;

• A expressão é o valor da função
• Uma função pára de executar quando encontra o primeiro
  return.
• As chaves ( } ) funcionam como um return.                   40
• Funções do tipo void não tem return, pois são funções que
  não retornam nenhum valor.
Goto – vá para
• Fornece compatibilidade com linguagens como BASIC e
  FORTRAN. Está em desuso.
• Pertence a uma classe à parte, a dos comandos de salto
  incondicional. O goto realiza um salto para um local
  especificado. Este local é determinado por um rótulo. Um
  rótulo, na linguagem C, é uma marca no programa. Você dá o
  nome que quiser a esta marca.
• O goto pode saltar para um rótulo que esteja mais à frente ou
  para trás no programa. Uma observação importante é que o
  rótulo e o goto devem estar dentro da mesma função.
goto rótulo;
.                                                                 41
.
rótulo;
Break
• Pode ser usado para terminar um case em um comando
  switch.
• Pode ser usado para forçar um término imediato de um laço.
• Quando break é encontrado dentro de um laço, o laço termina
  e o controle retorna para o comando seguinte.
• Pode ser usado no corpo de qualquer estrutura de laço.




                                                                42
Continue
• Força a próxima interação do laço e pula o código que estiver
  abaixo.
• While e do-while: faz com que o controle vá para o teste e
  depois continua o processo do laço
• For: primeiro executa o incremento do laço, depois faz o teste
  condicional e no fim continua o laço.
• Salta uma parte do programa, pula o código que estiver em
  seguida.




                                                                   43
Exit()
• Força o término do programa inteiro.
• void exit(int codigo_de_retorno);
• O valor código_de_retorno e retornado ao processo
  chamador, que é normalmente o sistema operacional.
• O número zero é normalmente usado como código de
  retorno.
• Usado normalmente quando uma condição mandadatória
  para a execução do programa não é satisfeita.



                                                       44
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int conta;
  for(conta=0;conta<10;conta++);
  printf("conta=%d n", conta);
  system("PAUSE");
}

                                   45
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int conta;
  for(conta=9;conta<10;conta--);
  printf("conta=%d n", conta);
  system("PAUSE");
}

                                   46
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int x,y
  for(x=0, y=0; x+y < 100; x=x+1, y=y+1);
  printf("%d n", x+y);
  system("PAUSE");
}

                                            47
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  char ch;
  for(ch='a'; ch<='z'; ch++);
  printf("o valor ASCII de %c e %d n ", ch, ch);
  system("PAUSE");
}

                                                    48
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  char ch;
  for(;(ch=getch())!='X';)
  printf("%c", ch+1);
  system("PAUSE");
}

                             49
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  for(;;printf("laco infinito n"))
  system("PAUSE");
}




                                      50
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  char c;
  for(;(c=getch())!='X';printf("%c",c+1))
  system("PAUSE");
}



                                            51
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int conta, total;
  for(conta=0, total=0; conta<10; conta++) {
          total+=conta;
          printf("conta=%d, total=%d n", conta, total);
          }
  system("PAUSE");
}                                                          52
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int conta, total;
  for(conta=0, total=0; conta<10; conta++) {
          total+=conta;
          printf("conta=%d, total=%d n", conta, total);
          }
  system("PAUSE");
}                                                          53
Exemplos para testar no
laboratório
#include <stdio.h>
#include <stdlib.h>
main()
{
  int i, j, k;
  printf("n");
  for(k=0; k<=1; k++){
    printf("n");
    for(i=1; i<5; i++)
       printf("Tabuada do %3d ", +i+4*k+1);
    printf("n");
    for(i=1; i<=9; i++){
       for(j=2+4*k; j<=5+4*k; j++)
          printf("%3d x%3d = %3d ", j, i, j*i);
        }                                         54
     }
  system("PAUSE");
}
Mais exemplos
• Pegar os livros da bibliografia básica e testar os exemplos dos
  capítulos.




                                                                    55

Mais conteúdo relacionado

PPTX
Linguagem C - Controle de Programa
PPTX
Linguagem C - Estruturas
PPTX
Linguagem C - Ponteiros
PDF
Aula6 - Linguagem C
PDF
Aula09 traducaosin110
PPTX
Linguagem C - Vetores, Matrizes e Funções
PPTX
Linguagem C - Strings
PPTX
Introdução à Linguagem C
Linguagem C - Controle de Programa
Linguagem C - Estruturas
Linguagem C - Ponteiros
Aula6 - Linguagem C
Aula09 traducaosin110
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Strings
Introdução à Linguagem C

Mais procurados (20)

PDF
Linguagem C - Funções e ponteiros
PDF
Estrutura de Dados - Ponteiros
PPTX
SubProgramas
PPTX
Linguagem C - Funções
PDF
Revisão sobre ponteiros em C
PDF
mod3-programação-estruturada
PPSX
Programação em C
PDF
Vetores, Matrizes e Strings em C Parte 3
PDF
Algoritmos - capítulo 6
PDF
Aula 6 pc - slides
PDF
Vetores, Matrizes e Strings em C Parte 1
PDF
Funções em C
PPTX
Linguagem C - Vetores
PDF
Manual-de-php
PDF
M5-Desenvolvimento-Paginas-Web
PPTX
Introdução à linguagem c
PPTX
C++ Funções
PPT
Curso de Linguagem C
Linguagem C - Funções e ponteiros
Estrutura de Dados - Ponteiros
SubProgramas
Linguagem C - Funções
Revisão sobre ponteiros em C
mod3-programação-estruturada
Programação em C
Vetores, Matrizes e Strings em C Parte 3
Algoritmos - capítulo 6
Aula 6 pc - slides
Vetores, Matrizes e Strings em C Parte 1
Funções em C
Linguagem C - Vetores
Manual-de-php
M5-Desenvolvimento-Paginas-Web
Introdução à linguagem c
C++ Funções
Curso de Linguagem C
Anúncio

Destaque (20)

PPT
A Complexidade Nos Sistemas
PDF
Informativo COMBAT: Remuniciadores MaxFire
PPTX
Portafolio de Diagnostico
PPSX
Presentación Unincube
PPTX
Smau Milano 2016 - bcloud
PPTX
PDF
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
PDF
Catálogo Pro 2012. ASTEX
PPS
Udruga SOL eng
PDF
2012 congreso ses burgos programa liron
PDF
Actividad de servicios
PDF
Eurobuild Construtec
PDF
Informe Observatorio Bizkaia Basket. El entrenador del futuro
PPT
Epifisiolisis Capital Femoral (SCFE)
PDF
Marketing Verde : IM Natural Cosmetobelleza
PDF
Agile Development Ecosystem
PDF
CAS_Overall_Findings
PPTX
Desarrollando la Unidad Matrimonial mediante la Comunicación
PDF
Friends Before Phones: It's Time to End Cell Phone Addiction
PPTX
Presentation given at the Demand Solutions Conference on Sales and Operations...
A Complexidade Nos Sistemas
Informativo COMBAT: Remuniciadores MaxFire
Portafolio de Diagnostico
Presentación Unincube
Smau Milano 2016 - bcloud
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
Catálogo Pro 2012. ASTEX
Udruga SOL eng
2012 congreso ses burgos programa liron
Actividad de servicios
Eurobuild Construtec
Informe Observatorio Bizkaia Basket. El entrenador del futuro
Epifisiolisis Capital Femoral (SCFE)
Marketing Verde : IM Natural Cosmetobelleza
Agile Development Ecosystem
CAS_Overall_Findings
Desarrollando la Unidad Matrimonial mediante la Comunicación
Friends Before Phones: It's Time to End Cell Phone Addiction
Presentation given at the Demand Solutions Conference on Sales and Operations...
Anúncio

Semelhante a Comandos de Controle de Programa em C (20)

PPT
PDF
Apostila linguagem c
PDF
Apostila linguagem c
PDF
Apostila linguagem c
PPT
Cet P Sistemas Linguagem C Introducao
PPT
Introdução a Linguagem C
PDF
Apostila de-introdução-à-linguagem-c
PPT
PDF
Linguagem C (Parte 2)
PDF
Introdução à Linguagem de Programação C
PDF
Introdução a linguagem c karen lowhany
ODP
Linguagem C 01 Primeiros Passos
PPTX
Linguagem C - Entrada e Saída
PDF
Aula01 introducao operacoes
PDF
Linguagem_C.pdf
PDF
Apostila c
PDF
PDF
PDF
Programação em Linguagem C - xlinguagem-c-em-uma-aula.pdf
PDF
Henriquecristovao manual c-cpp
Apostila linguagem c
Apostila linguagem c
Apostila linguagem c
Cet P Sistemas Linguagem C Introducao
Introdução a Linguagem C
Apostila de-introdução-à-linguagem-c
Linguagem C (Parte 2)
Introdução à Linguagem de Programação C
Introdução a linguagem c karen lowhany
Linguagem C 01 Primeiros Passos
Linguagem C - Entrada e Saída
Aula01 introducao operacoes
Linguagem_C.pdf
Apostila c
Programação em Linguagem C - xlinguagem-c-em-uma-aula.pdf
Henriquecristovao manual c-cpp

Mais de Elaine Cecília Gatto (20)

PDF
Exercícios resolvidos de MIPS Portal Embarcados
PDF
Exercicio Resolvido de Busca Binária com Codigo e Imagens
PDF
A influência da Tecnologia em cada faixa etaria
PPTX
Inteligência Artificial Aplicada à Medicina
PPTX
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
PPTX
Apresentação da minha tese de doutorado no EPPC
PDF
entrevista r7.pdf
PPTX
Como a pesquisa científica impacta o mundo real.pptx
PDF
Empoderamento Feminino
PPTX
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
PPTX
Community Detection for Multi-Label Classification - Seminários UFSCar
PPTX
Classificação Multirrótulo: Aprendizado de Correlações
PDF
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
PPTX
Community Detection Method for Multi-Label Classification
PDF
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
PDF
Curtinhas de sábado.pdf
PDF
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
PDF
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
PDF
Pipeline desdobramento escalonamento
PDF
Cheat sheet Mips 32 bits
Exercícios resolvidos de MIPS Portal Embarcados
Exercicio Resolvido de Busca Binária com Codigo e Imagens
A influência da Tecnologia em cada faixa etaria
Inteligência Artificial Aplicada à Medicina
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Apresentação da minha tese de doutorado no EPPC
entrevista r7.pdf
Como a pesquisa científica impacta o mundo real.pptx
Empoderamento Feminino
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Community Detection for Multi-Label Classification - Seminários UFSCar
Classificação Multirrótulo: Aprendizado de Correlações
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Community Detection Method for Multi-Label Classification
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Curtinhas de sábado.pdf
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Pipeline desdobramento escalonamento
Cheat sheet Mips 32 bits

Último (20)

PPTX
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
PDF
Células Introdução para as aulas de EJA.
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PPTX
Filosofia Ocidental Antiga 2025 - versão atualizada
PPT
sistema reprodutor para turmas do oitavo ano
PDF
aulademeiodetransporteemlibras-120304202807-phpapp01_removed.pdf
PPTX
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
PPTX
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
PDF
saeb_documentos_de_referencia_versao_1.0.pdf
PPTX
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
PDF
Ementa 2 semestre PEI Orientação de estudo
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PDF
A provisão de jojuador (ramadã) islamismo
PPTX
Programa Nacional de Saúde do Adulto.pptx
PDF
A Revolução Francesa de 1789 slides história
PDF
Formação politica brasil_2017.pptx.pdf
PDF
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
PDF
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
PDF
O retorno a origem (islã Islamismo)
PDF
embriologia_animal_aula_share_2026_semestre
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
Células Introdução para as aulas de EJA.
Organizador Curricular da Educação em Tempo Integral.pdf
Filosofia Ocidental Antiga 2025 - versão atualizada
sistema reprodutor para turmas do oitavo ano
aulademeiodetransporteemlibras-120304202807-phpapp01_removed.pdf
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
saeb_documentos_de_referencia_versao_1.0.pdf
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
Ementa 2 semestre PEI Orientação de estudo
Realismo e Naturalismo: Aluísio Azevedo.
A provisão de jojuador (ramadã) islamismo
Programa Nacional de Saúde do Adulto.pptx
A Revolução Francesa de 1789 slides história
Formação politica brasil_2017.pptx.pdf
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
50 anos Hoje - Volume V - 1973 - Manaus Amazonas
O retorno a origem (islã Islamismo)
embriologia_animal_aula_share_2026_semestre

Comandos de Controle de Programa em C

  • 1. Programação de Computadores Aula 2 09/08/2012 Profª Ms. Engª Elaine Cecília Gatto Unidade 2: Comandos de Controle de Programa Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado Coraçã – USC Bauru/SP
  • 2. Termos Importantes • Código-fonte: é o texto de um programa que um usário pode ler. É a entrada para o compilador C. • Código-Objeto: é a tradução do código-fonte de um programa em código de máquina. É a entrada para o linkeditor. • Linkeditor: é um programa que combina as funções da biblioteca C padrão com o código-fonte que você escreveu gerando um executável. • Biblioteca: é um arquivo contendo as funções padrão que podem ser utilizadas pelo seu programa. • Tempo de compilação: são os eventos que ocorrem enquanto o seu programa está sendo compilado. Um erro de sintaxe é uma ocorrência em tempo de compilação. 2 • Tempo de execução: são os eventos que ocorrem enquanto o seu programa está sendo executado.
  • 3. Variáveis • Variáveis locais: uma variável local é aquela que é declarada dentro de uma função e só pode ser utilizada naquele “local” do seu código-fonte. • Variáveis globais: uma variável global é aquela que é declarada fora de funções e podem ser utilizadas por qualquer “parte” do seu código-fonte. Uma variável global guarda o valor armazenado por ela, durante toda a execução do programa. 3
  • 4. Modificadores de tipo de acesso • const: é uma variável que não pode ser modificada, possui um valor fixado. • volatile: uma variável desse tipo pode ser alterada de maneira não explicitamente especificada no programa. Exemplo: hora e data do sistema. A variável que armazena o valor do sistema é alterada pelo sistema operacional e não por você. 4
  • 5. Especificadores de tipo de classe de armazenamento • Variáveis globais static: funcionam como variáveis globais dentro de um módulo. São variáveis globais que não são e, nem podem ser, conhecidas em outros módulos. Isto é útil quando queremos isolar pedaços de um programa para evitar mudanças acidentais em variáveis globais. • Variáveis locais static: são variáveis cujo valor é mantido de uma chamada da função para a outra. 5
  • 6. Especificadores de tipo de classe de armazenamento • extern: define variáveis que serão usadas em um arquivo apesar de terem sido declaradas em outro. Podemos ter programas de milhares de linhas. Estes podem ser divididos em vários arquivos (módulos) que serão compilados separadamente. Digamos que para um programa grande tenhamos duas variáveis globais e estas variáveis são declaradas normalmente em um dos arquivos (módulos) do programa. Num outro arquivo (módulo) do programa temos uma rotina que deve usar as variáveis globais. Então nesse caso devemos usar extern para que esses módulos possam encontrar as variáveis. 6
  • 7. Especificadores de tipo de classe de armazenamento Arquivo 1 (módulo 1) Arquivo 2 (módulo 2) int x, y; extern int x, y; char ch; extern char ch; main(void) { funcao_2(void) { . x = y/10; . } . funcao_3( ) { } y = 10; funcao_1( ) { } x = 123; 7 }
  • 8. Especificadores de tipo de classe de armazenamento • register: o computador tem a memória principal e os registradores da CPU. As variáveis e o programa são armazenados na memória. Register diz ao compilador que a variável em questão deve ser armazenada em um registrador da CPU ao invés de uma posição da memória. Usado apenas para variáveis locais e parâmetros formais de uma função. 8
  • 9. Parâmetros formais • Normalmente uma função utiliza argumentos que, na verdade são variáveis. Essas variáveis são utilizadas dentro da função e são passadas como parâmetros para a função. funcao(argumentos ou parâmetros formais) { } exemplo: int contador( numero ) { numero = numero + 1; return 0; } 9
  • 10. Código de formatação da função scanf() Código Função Exemplo %c Ler um único caracter scanf(“%c”, ‘a’); %d Ler um inteiro decimal scanf(“%d”, 20); %e Ler um número em notação scanf(“%e”, &num); científica %f Ler um número em ponto scanf(“%f”, 25.6); flutuante %o Ler um inteiro octal scanf(“%o”, 012); %s Ler uma série de caracteres scanf(“%s”, ‘abcdeteste’); %x Ler um número hexadecimal scanf(“%x”, 0x80); %u Ler um decimal sem sinal scanf(“%u”, &num); 10 %l Ler um inteiro long scanf(“%l”, &num);
  • 11. Operador de endereço (&) • A memória do seu computador é dividida em bytes • Estes bytes são numerados de 0 até o limite da memória da sua máquina. • Estes números são chamados de endereços de bytes. • Um endereçoo e o nome que o computador usa para identificar a variável. • Toda variável ocupa uma certa localização na memória. • Seu endereço é o do primeiro byte ocupado por ela. • Um inteiro ocupa 2 bytes. • Suponha uma variável n do tipo inteira. • Suponha que tenha atribuido a ela o valor 2. 11 • Quando n for referenciada devolverá o valor 2.
  • 12. Operador de endereço (&) • Se você referenciar n precedido de & - &n – então será devolvido o endereço do primeiro byte onde n está armazenada. • Exemplo: main() { int num; num = 2; printf(“ n Valor=%d, endereco=%u”, num, &num); } 12
  • 13. Função getche() e getch() • getche(): Lê o caracter do teclado e permite que já seja impresso na tela, diferente de scanf() em que é necessário apertar enter. • getch(): lê o caracter do teclado e não permite que seja impresso na tela. • Ambas não aceitam argumentos e devolvem o caracter lido para a função que a chamou. 13
  • 14. Função getche() e getch() #include <stdio.h> #include <stdlib.h> main() { char ch; printf("n Digite algum caracter: "); ch = getche(); printf(" n A tecla digitada e: %c ", ch , " n "); system("PAUSE"); } 14
  • 15. Função getche() e getch() #include <stdio.h> #include <stdlib.h> main() { char ch; printf("n Digite algum caracter: "); ch = getch(); printf(" n A tecla digitada e: %c ", ch , " n "); printf(" e a sua sucessora ASCII e: %c ", ch+1, " n "); system("PAUSE"); } 15
  • 16. Função getchar() • A função getchar() lê um caracter e retorna um inteiro que é ou o código do caracter, ou o valor -1 que corresponde a fim de arquivo. #include <stdio.h> #include <stdlib.h> main() { int c; c=getchar(); printf("%d",c); system("PAUSE"); 16 }
  • 17. Função putchar() • É o complemento de getchar(). • Aceita um argumento cujo valor será impresso. #include <stdio.h> #include <stdlib.h> main() { int c; c=getchar(); putchar(c); system("PAUSE"); } 17
  • 18. Incremento #include <stdio.h> #include <stdlib.h> main() { int num=0; printf(" n %d num", num); printf(" n %d ++num", ++num); printf(" n %d num", num); printf(" n %d ++num", ++num); printf(" n %d num", num); system("PAUSE"); } 18
  • 19. Incremento #include <stdio.h> #include <stdlib.h> main() { int num=0; printf(" n %d num: ", num); printf(" n %d num++: ", num++); printf(" n %d num: ", num); printf(" n %d num++: ", num++); printf(" n %d num: ", num); system("PAUSE"); } 19
  • 20. Decremento #include <stdio.h> #include <stdlib.h> main() { int num=10; printf(" n %d num: ", num); printf(" n %d --num: ", --num); printf(" n %d num: ", num); printf(" n %d --num: ", --num); printf(" n %d num: ", num); system("PAUSE"); } 20
  • 21. Decremento #include <stdio.h> #include <stdlib.h> main() { int num=10; printf(" n %d num: ", num); printf(" n %d num--: ", num--); printf(" n %d num: ", num); printf(" n %d num--: ", num--); printf(" n %d num: ", num); system("PAUSE"); } 21
  • 22. sizeof • É um operador em tempo de compilação unário. • Retorna o tamanho, em bytes, da variável ou especificador de tipo, em parênteses, que ele precede. • Devemos usá-lo para garantir portabilidade. 22
  • 23. sizeof #include <stdio.h> #include <stdlib.h> printf("Tamanho do a : %dn", sizeof(a)); printf("Tamanho do b : %dn", sizeof(b)); main() printf("Tamanho do c : %dn", sizeof(c)); { printf("Tamanho do d : %dn", sizeof(d)); int a; printf("Tamanho do e : %dn", sizeof(e)); short int b; printf("Tamanho do f : %dn", sizeof(f)); long int c; printf("Tamanho do g : %dn", sizeof(g)); printf("Tamanho do h : %dn", sizeof(h)); unsigned int d; printf("Tamanho do i : %dn", sizeof(i)); unsigned short int e; printf("Tamanho do j : %dn", sizeof(j)); unsigned long int f; system("PAUSE"); float g; } double h; long double i; 23 char j;
  • 24. Comandos de controle de programa • Seleção: if e switch (condicional) • Iteração: while, for e do-while (laço) • Desvio: break, continue, goto e return (salto) • Rótulo: case, default e label • Um valor verdadeiro em C pode ser um número positivo ou negativo – é qualquer valor diferente de zero. 24
  • 25. IF – SE if ( condição ) if ( condição ) { { Bloco de Bloco 1; comandos; } } else { if ( condição ) Bloco 2; else comandos; } 25
  • 26. IF – SE if ( condição) { else if ( condição ) { } else if ( condição ) { } . . else { } } 26
  • 27. IF – SE #include <stdio.h> #include <stdlib.h> main() { int num1; int num2; printf("Digite dois números n"); scanf(" %d %d", &num1, &num2); if(num1 > num2){ printf("O numero num1 e maior que num2"); printf("n"); } else { printf("O numero num1 e menor que num2"); printf("n"); } system("PAUSE"); 27 }
  • 28. IF – SE #include <stdio.h> #include <stdlib.h> main() { int a, b; printf("Digite dois numeros n"); scanf("%d %d", &a, &b); if(b) printf("resultado: %d n", a/b); else printf("não pode dividir por zero n"); system("PAUSE"); } 28
  • 29. Switch – chaveamento switch( expressão ) { • Comando de seleção múltipla. case constante1 • Testa sucessivamente o comandos; valor de uma expressão break; contra uma lista de case constante2 constantes inteiras ou de caractere. comandos; • Quando o valor break; coincide, os comandos default: associados àquela constante são comandos; 29 executados }
  • 30. Switch – chaveamento #include <stdio.h> switch(ch) { #include <stdlib.h> case '1': main() printf("Esta e a opcao 1 { n"); char ch; break; case '2': printf("1. Testando a opcao 1 printf("Esta e a opcao 2 n"); n"); printf("2. Testando a opcao 2 break; n"); case '3': printf("3. Testando a opcao 3 printf("Esta e a opcao 3 n"); n"); break; ch=getchar(); default: printf("nenhuma opcao selecionada"); } 30 system("PAUSE"); }
  • 31. Switch – chaveamento • Switch avalia a expressão entre parenteses, após a palavra switch, e compara seu valor com os rótulos dos casos. • A expressão entre parenteses deve ser de valor inteiro ou caractere. • O comando break causa uma saída imediata do switch. • Se break é omitido, a execução continua pelos próximos comandos case até que o fim do switch seja encontrado. 31
  • 32. For – para for ( inicialização; condição; incremento ) comando; OU for ( inicialização; condição; incremento ) { comando; } 32
  • 33. For – para • É útil quando queremos repetir algo um número fixo de vezes. • inicialização: instrução de atribuição, executada uma única vez antes do laço ser iniciado. [ x = 0 ] • condição: instrução que controla o laço. Avalia como verdadeira ou falsa toda vez que o laço for iniciado ou reiniciado. Se verdadeira, o corpo do laço é executado. Quando falsa, o laço é terminado. [ x > 5 ] • incremento: instrução executada toda vez após a execução do corpo do laço. [ x++ ] 33
  • 34. For – para #include <stdio.h> #include <stdlib.h> main() { int conta; for(conta=0; conta<10; conta++) printf(" conta = %d n", conta); system("PAUSE"); } 34
  • 35. For – para #include <stdio.h> #include <stdlib.h> main() { int conta, numero; printf("Digite um numero inteiro n"); scanf("%d", &numero); for(conta=0; conta<numero; conta++) printf(" conta = %d n", conta); system("PAUSE"); } 35
  • 36. While – enquanto while ( condicao ) comando; • O laço se repete quando a condição for verdadeira. Quando a condição for falsa, o controle do programa passa para a linha após o código do laço. • Seu uso é apropriado em situações em que o laço pode ser terminado inesperadamente por condições desenvolvidas dentro do laço 36
  • 37. While – enquanto #include <stdio.h> #include <stdlib.h> main() { int num1, num2; printf(" n Digite um numero inteiro entre 0 e 10 n"); scanf("%d", &num1); while(num1<10){ printf(" n enquanto num1 for menor que 10, imprima isto! %d", num1); printf(" n "); num1++; } 37 system("PAUSE"); }
  • 38. Do-While • Este laço verifica a condição no final do laço. Portanto, o laço do-while sempre será executado pelo menos uma vez. O laço do-while repete até que a condição se torne falsa. do { comandos; } while; 38
  • 39. Do-While #include <stdio.h> #include <stdlib.h> main() { int num; do{ printf(" n Digite um numero entre 0 e 51 n "); scanf("%d", &num); } while(num<=50); system("PAUSE"); } 39
  • 40. Return • É usado para retornar um valor de uma função. • É um comando de desvio. • Faz com que a execução retorne ao ponto em que a chamada à função foi feita. return expressão; • A expressão é o valor da função • Uma função pára de executar quando encontra o primeiro return. • As chaves ( } ) funcionam como um return. 40 • Funções do tipo void não tem return, pois são funções que não retornam nenhum valor.
  • 41. Goto – vá para • Fornece compatibilidade com linguagens como BASIC e FORTRAN. Está em desuso. • Pertence a uma classe à parte, a dos comandos de salto incondicional. O goto realiza um salto para um local especificado. Este local é determinado por um rótulo. Um rótulo, na linguagem C, é uma marca no programa. Você dá o nome que quiser a esta marca. • O goto pode saltar para um rótulo que esteja mais à frente ou para trás no programa. Uma observação importante é que o rótulo e o goto devem estar dentro da mesma função. goto rótulo; . 41 . rótulo;
  • 42. Break • Pode ser usado para terminar um case em um comando switch. • Pode ser usado para forçar um término imediato de um laço. • Quando break é encontrado dentro de um laço, o laço termina e o controle retorna para o comando seguinte. • Pode ser usado no corpo de qualquer estrutura de laço. 42
  • 43. Continue • Força a próxima interação do laço e pula o código que estiver abaixo. • While e do-while: faz com que o controle vá para o teste e depois continua o processo do laço • For: primeiro executa o incremento do laço, depois faz o teste condicional e no fim continua o laço. • Salta uma parte do programa, pula o código que estiver em seguida. 43
  • 44. Exit() • Força o término do programa inteiro. • void exit(int codigo_de_retorno); • O valor código_de_retorno e retornado ao processo chamador, que é normalmente o sistema operacional. • O número zero é normalmente usado como código de retorno. • Usado normalmente quando uma condição mandadatória para a execução do programa não é satisfeita. 44
  • 45. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int conta; for(conta=0;conta<10;conta++); printf("conta=%d n", conta); system("PAUSE"); } 45
  • 46. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int conta; for(conta=9;conta<10;conta--); printf("conta=%d n", conta); system("PAUSE"); } 46
  • 47. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int x,y for(x=0, y=0; x+y < 100; x=x+1, y=y+1); printf("%d n", x+y); system("PAUSE"); } 47
  • 48. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { char ch; for(ch='a'; ch<='z'; ch++); printf("o valor ASCII de %c e %d n ", ch, ch); system("PAUSE"); } 48
  • 49. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { char ch; for(;(ch=getch())!='X';) printf("%c", ch+1); system("PAUSE"); } 49
  • 50. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { for(;;printf("laco infinito n")) system("PAUSE"); } 50
  • 51. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { char c; for(;(c=getch())!='X';printf("%c",c+1)) system("PAUSE"); } 51
  • 52. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int conta, total; for(conta=0, total=0; conta<10; conta++) { total+=conta; printf("conta=%d, total=%d n", conta, total); } system("PAUSE"); } 52
  • 53. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int conta, total; for(conta=0, total=0; conta<10; conta++) { total+=conta; printf("conta=%d, total=%d n", conta, total); } system("PAUSE"); } 53
  • 54. Exemplos para testar no laboratório #include <stdio.h> #include <stdlib.h> main() { int i, j, k; printf("n"); for(k=0; k<=1; k++){ printf("n"); for(i=1; i<5; i++) printf("Tabuada do %3d ", +i+4*k+1); printf("n"); for(i=1; i<=9; i++){ for(j=2+4*k; j<=5+4*k; j++) printf("%3d x%3d = %3d ", j, i, j*i); } 54 } system("PAUSE"); }
  • 55. Mais exemplos • Pegar os livros da bibliografia básica e testar os exemplos dos capítulos. 55