Mudanças entre as edições de "PRG-2012-1-ERALDO"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 1 132: Linha 1 132:
 
  | |[[imagem:fluxoDoWhile-Eraldo.jpg|150px]]
 
  | |[[imagem:fluxoDoWhile-Eraldo.jpg|150px]]
 
||<syntaxhighlight lang=c>
 
||<syntaxhighlight lang=c>
 +
contador = 0;
 
do {
 
do {
 
         scanf("%d",&x);
 
         scanf("%d",&x);
Linha 1 137: Linha 1 138:
 
         if (soma>150)  
 
         if (soma>150)  
 
           y=z+x;
 
           y=z+x;
 +
        contador++;
 
} while(contador<5);
 
} while(contador<5);
 
</syntaxhighlight>|| Note que instruções while e if são tratadas como instruções normais que podem ser aninhadas normalmente em outros comandos.
 
</syntaxhighlight>|| Note que instruções while e if são tratadas como instruções normais que podem ser aninhadas normalmente em outros comandos.
 
|}
 
|}

Edição das 11h35min de 16 de maio de 2012

Dados Gerais

Nome do Professor: Eraldo Silveira e Silva

email: eraldo@ifsc.edu.br

Material de Referência

Horário de Atendimento Paralelo

Quarta das 16 às 17h.

Aulas

Dia 27/02/2012

Objetivos

  1. Plano de Aula.
  2. Introdução ao funcionamento do computador.
  3. Tarefa: ler até a página 10 da apostila.

Dia 29/02/2012

Objetivos

  1. Conceitos em lógica de programação: sequência lógica, instruções, algoritmo e programa;
  2. Conceito de variáveis e constantes;
  3. Relação entre variáveis e a memória de um computador;
  4. Fluxogramas: símbolos para representação de instruções simples e decisão;
  5. Desenvolver os primeiros fluxogramas para resolver problemas simples.

Exercícios

  1. Apresentar um fluxograma para ler 3 números e fazer a média;
  2. Fazer um teste de mesa usando como valores de entrada 2.0, 5.0 e 3.0;
  3. Considere um algoritmo para calcular o comprimento de uma circunferência. Quem são os dados de entrada e os dados de saída. Fazer um fluxograma para resolver o problema;
  4. Modifique o algoritmo acima para calcular, além do comprimento, a área da circunferência;
  5. Construir um fluxograma para ler 3 números e calcular a média dos dois maiores números lidos;
  6. Refazer o exercício 4 para calcular a média do maior e do menor número entre os 3 lidos.

Tarefa para casa

Ler capítulos 2, 3 e 4 da apostila.

Dia 05/03/2012

Objetivos

  • Fixar o conceito de fluxograma usando caixas de instruções e de decisão;
  • Fixar o conceito de teste de mesa;
  • Conceituar variáveis inteiras e reais (tipos de variáveis em geral);
  • Fixar o conceito de constantes.
  • Trabalhar expressões com operadores básicos (*,/,+,-).

Solução de exercícios passados para casa

  1. Construir um fluxograma para ler 3 números e calcular a média dos dois maiores números lidos;
  2. Construir um fluxograma para ler 3 números e calcular a média do maior e do menor número entre os 3 lidos.

Exercícios em sala

  1. Refazer o exercício para ler 3 números e calcular a média dos dois maiores números lido usando variáveis auxiliares MAIOR e MENOR;
  2. Refazer o exercício 4 para calcular a média do maior e do menor número entre os 3 lidos usando variáveis auxiliareas MAIOR e MENOR;
  3. Construir um fluxograma para ler 6 números e calcular a média dos dois maiores números lidos. Faça um teste de mesa;
  4. Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada;

OBS: sempre anote no lado do fluxograma os tipos das variáveis.

Exercícios para casa

  1. Faça um algoritmo para fazer a divisão de dois números reais. Antes de dividí-los deve ser feito um teste de validade. Caso não seja possível dividi-los, deve ser mostrada uma mensagem de erro. Se for possível, deve-se mostrar o resultado da divisão;
  2. Fazer um algoritmo para computar a área e perímetro de um retângulo. Entrar com os dois lados;
  3. Fazer um programa para computar as áreas de um retângulo e de um círculo. O programa deve mostrar uma mensagem indicando qual figura possui maior área;
  4. Considere que a função de uma reta é dada por: . Elabore um fluxograma para calcular o valor de y dado o valor de x.

Dia 6/03/2012

Apresentação dos TCCs

Dia 12/03/2012

Objetivos

  1. Resolver exercícios de casa.
  2. Avaliar a capacidade do aluno elaborar pequenos fluxogramas para resolver problemas com sequências simples e caixas de decisão.
  3. Variáveis do tipo cadeia de caracteres.

Avaliação

Elaborar um fluxograma e um teste de mesa para resolver o seguinte problema. Ler o valor de 3 resistores. Calcular o valor da resistência equivalente aos três resistores em série. Na sequência, calcular a corrente que passaria nestas resistências para uma tensão de 5V aplicada a esta resistência. As entradas inválidas (resistência negativa devem ser rejeitadas).

Variáveis tipo cadeia (string)

  1. Elaborar um fluxograma para um sistema de segurança que lê uma senha. Se a senha conferir com uma senha pré-armazenada então a porta deve se abrir.
  2. Estender o programa anterior para ler usuário e senha.
  3. Estender o programa anterior considerando que existem dois usuários (cada um com a sua senha) no sistema.


Dia 14/03/2012

Objetivos

  1. Variáveis do tipo cadeia de caracteres.
  2. Estruturas de repetição (loop simples)
  3. Conceito de subrotina;
  4. Conceito de veriáveis globais ao sistema.

Exercícios

  1. Estender o programa para bloquear um usuário se ele tentar até 3 vezes consecutivas no sistema com a senha incorreta.
  2. Estender o programa para incluir um usuário admin que permite modificar o userid e a senha de um determinado usuário. Considere que a senha do admin é uma constante. Assuma que existem duas posições de memória associadas ao USR1 e USR2, e duas posições associadas a senha (PWD1 e PWD2). Inicialmente estas variaveis são strings vazias.
  3. Considere a existência de um sensor que indica se a porta está aberta ou fechada. Se a porta estiver aberta o sistema simplesmente apresenta uma mensagem de porta aberta. Se a porta estiver fechada ele funciona normalmente.
  4. Estender o programa para que um usuário possa ele mesmo modificar a sua senha.
  5. Estender o programa para que o admin desbloqueie um usuário bloqueado.

Dia 21/03/2012

Objetivos

  1. Variáveis do tipo cadeia de caracteres - visão de vetor de caracteres terminadas em NULL
  2. Mostrar o aspecto de ukma cadeia de caracteres na memória do computador
  3. Estruturas de repetição estilo WHILE com fluxograma para detectar final de cadeia
  4. Reforçar o uso de subrotinas com exercícios para calcular o tamanho da cadeia e para detectar a ocorrência de caracteres na cadeia.

Desenvolvimento da Aula

Um caracter pode ser armazenado em uma "caixa" de memória correspondente a um byte. Basta usar uma codificação adequada, Por exemplo, o uso de código ASCII permite representar a letra A como o byte 41H.

Uma cadeia de caracteres (string) pode ser implementada como uma sequência de caracteres, ou seja, um vetor de caracteres. Para marcar o final da cadeia, muitas linguagens (o C, por exemplo) se utilizada do 0 (NULL) no final da cadeia.

Exercícios

  1. Elaborar um fluxograma para computar o tamanho de uma cadeia de caracteres que foi lida para uma varíavel.
  2. Elaborar um fluxograma para computar o número de ocorrências do caracter "a" em uma cadeia lida pelo teclado.
  3. Implementar um fluxograma para tornar maiúsculas todas as vogais de uma cadeia de caracteres.

Dia 26/03/2012

Objetivos

  • Reforçar o conceito de subprogrmas, parâmetros passados e retornados
  • Exercícios sobre cadeia de caracteres

Exercícios

  1. Elaborar um fluxograma para encapsular em subrotina o algoritmo de computação do tamanho de uma cadeia de caracteres

passada como parâmetro. A subrotina deve retornar o tamanho da cadeia.

ComputarTamnhoString.jpg

  1. Elaborar um fluxograma para comparar o tamanho de duas cadeias que foram fornecidas pelo teclado. Uma mensagem deve ser mostrada caso a primeira cadeia seja maior, menor ou igual a segunda cadeia;

ComparaTamanhoDuasCadeias.jpg

  1. Elaborar um fluxograma para encapsular em uma subrotina, o algoritmo de comparação de tamanho de duas cadeias. Estas cadeias são fornecidas como parâmetro. O procedimento deve retornar 0 se as cadeias são iguais, 1 se a primeira é maior que a segunda e -1 se a primeira é menor que a segunda;
  2. Elaborar um fluxograma para receber uma cadeia de caracteres pelo teclado. O procedimento deve mostrar uma mensagem indicando se a cadeia contém a cadeia "casa".

Dia 26/03/2012

Objetivos

  1. tipo caracter
  2. Exercícios preparatórios para a avaliação.

Exercícios

  1. Elaborar uma subrotina na forma de fluxograma, para computar o número de ocorrências do caracter 'a' em uma cadeia de caracteres passada como parâmetro. A subrotina deve retornar o número de caracteres;
  2. Modificar o exercício anterior para receber o caracter como parâmetro, generalizando a solução;
  3. Elaborar uma subrotina para receber uma cadeia de caracter repassada como parâmetro (por referência). A subrotina deve inverter a cadeia;
  4. Elaborar uma subrotina para recer uma cadeia de caracteres (por referência) e um caracter como parâmetro. A subrotina deve acrescentar este caracter no final da cadeia;
  5. Refazer o exercício para acrescentar o caracter no início da cadeia.

Dia 02/04/2012

Objetivos

  1. Exercícios de prepaparação para avaliação

Exercícios

  1. Elaborar uma subrotina para receber uma cadeia de caracter repassada como parâmetro (por referência). A subrotina deve inverter a cadeia;
  2. Elaborar uma subrotina para recer uma cadeia de caracteres (por referência) e um caracter como parâmetro. A subrotina deve acrescentar este caracter no final da cadeia;
  3. Refazer o exercício para acrescentar o caracter no início da cadeia.
  4. Refazer o exercício para inserir o caracter após a primeira ocorrência de uma caracter 'a";
  5. Refazer o exercício anterior para repassar o caracter como parâmetro.

Dia 04/04/2012

Objetivos

  1. Avaliação (primeiras duas aulas)

Exercícios de referência

  1. Elaborar um fluxograma de um programa principal que lê três números reais. O procedimento deve mostrar (imprimir) todos os números acima da média calculada entre os três números. Mostrar um teste de mesa mostrando a evolução das variáveis do problema (incluindo a média);
  2. Elaborar um fluxograma de uma subrotina que recebe uma cadeia de caracteres como parâmetro e um caracter. A subrotina deve retornar o número de ocorrências deste caracter. Fazer um exemplo, na forma de fluxograma, de como esta subrotina pode ser chamada;
  3. Elaborar um fluxograma de uma subrotina que recebe uma cadeia de caracteres como parâmetro (passada como referência). A subrotina deve excluir todas as vogais da cadeia. Por exemplo: se a cadeia for "casa", deve ficar "cs"

Dia 08/04/2012

Objetivos

  1. Explorar vetores de inteiros e reais

Exercícios

  1. Elaborar um fluxograma para ler 10 números reais para um vetor X.
  2. Modificar o exercício anterior para ler N números reais para um vetor.
  3. Modificar o exercício anterior para fazer também a média dos N números.
  4. Colocar o procedimento anterior na forma de uma subrotina que recebe o vetor X como parâmetro e retorna a média.
  5. Elaborar um fluxograma para ler os N números para um vetor X e mostrar o número de ocorrências dos números que estão acima da média. Usar a subrotina de cálculo da média já implementada anteriormente.
  6. Elaborar um fluxograma de uma subrotina que que recebe dois vetores X1 e X2 e seus respectivos tamanhos N1 e N2. A subrotina deve retornar 0 se a média dos elementos de X1 for maior que X2, deve retornar 1 se a média de X1 for menor que a de X2 e retornar 2 se a média for igual a X2.

Dia 11/04/2012

Objetivos

  1. Entrega da avaliação
  2. Introdução a linguagem C
  3. Conceito de programa fonte, objeto e executável
  4. O processo de compilação com gcc
  5. A função main()
  6. Declaração de variáveis inteiras e reais
  7. Função de entrada de dados scanf() e de saída de dados


Introdução a linguagem C

Conceito de programa fonte, objeto e executável

O processo de compilação com gcc

O processo de desenvolvimento do programa envolve:

  • Editar o programa com um editor de texto tal como o vi ou gedit;
  • Salvar o programa com a terminação ".c" (ou ".h") se for um cabeçalho;

Exemplo: salve o pŕograma abaixo como teste.c

 

#include <stdio.h>

main()
{
  printf("Alo Mundo\n");
}
  • Compilar o programa com o gcc:
 gcc teste.c -o teste
  • Testar o programa:
./teste

Declarando variáveis inteiras e reais locais

No "c" temos que declarar as variáveis que serão utilizadas no programa. Se estas variáveis forem declaradas DENTRO da função elas serão "vistas" somente localmente (escopo local). Este conceito será estendido para blocos de códigos posteriormente.

 
#include <stdio.h>

main()
{
  /* aqui começam as declarações de variáveis */
  int x; /* declaração de uma variável inteira */
  float y;  /* declaração de uma variável real */

  /* aqui começam as instruções do programa principal */ 
  x=5;   /* atribuindo o valor 5 (constante) a variável x */
  y=6.5; 
}

Funções de entrada e saída de dados

No "c" não existe instrução especialmente para leitura ou saída de dados. Este procedimento é realizado através de funções da biblioteca. Na sequência são mostradas duas funções "clássicas" de entrada e saída de dados.


 
#include <stdio.h>

main()
{
 
  int x; /* declaração de uma variável inteira */
  float y;  /* declaração de uma variável real */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%f",&y);

  printf ("O valor de x é %d\n",x);
  printf ("O valor de y é %f\n",y); 
}

Exercícios

  1. Ler 2 números reais e imprimir a média deles.
     
    #include <stdio.h>
    main()
    {
       float num1, num2, media;
    
       printf("Entre com o primeiro numero ");
       scanf ("%f", &num1);
    
       printf("Entre com o segundo numero ");
       scanf ("%f", &num2);
    
       media = (num1 + num2) / 2;
    
       printf ("\nMedia = %f \n", media);
    }
    
  2. Ler 3 números reais e imprimir o produto dos três.
  3. Ler dois números complexos, em formato retangular, e calcular a soma dos mesmos. Obs: Ler de forma independente a parte real e a parte imaginária de cada um deles.
  4. Ler as aulas 1 e 2 das aulas de C da UFMG (ver referências no início).

Dia 16/04/2012

Objetivos

  • instrução de decisão if() e if() else;
  • instruções de atribuição e expressões;
  • tipos de dados: int, float, double
  • mapeando um fluxograma (principal) em um programa C

LINK PARA O EDITOR YED

Se você quiser um editor de fluxogramas pode utilizar a ferramenta abaixo:

Se baixar o zip com o java, descompactar, entrar no diretório e executar com:

java -jar yed.jar


Instrução de decisão if() e if() else

 

#include <stdio.h>

main()
{
 
  int x; /* declaração de uma variável inteira */
  int y;  /* declaração de uma variável inteira */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%d",&y);

  if (y>x)
     printf("MSG1:y é maior que x\n");


  if (y>x)
     printf("MSG2:y é maior que x\n");
  else
     printf("MSG3:y é igual ou menor que x\n");
 
}

Outro exemplo, usando blocos:

 
#include <stdio.h>

main()
{
 
  int x,y,z; /* declaração de uma variável inteira */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%d",&y);

  if (y>x) {
     printf("MSG1: y é maior que x\n");
     z = y-x;
     printf("MSG2: Neste caso z =  %d\n", z);
  } else {
     printf("MSG3: y é igual ou menor que x\n");
     z = x-y;
     printf("MSG4: Neste caso z =  %d\n", z);
  }
 
}

Exercícios

  1. Fazer um fluxograma para calcular a média de três números reais que são fornecidos pelo teclado e então imprimir uma mensagem mostrando os números que são maiores que a média.
  2. Implementar o fluxograma anterior em C.
  3. Implementar um programa para calcular a hipotenusa de um triângulo retângulo cujos catetos são fornecidos pelo teclado.OBS: Usar a função sqrt([1]) cujos parâmetros e retorno são do tipo double. Usar o include math.h e o comando: gcc -lm exemplo4.c -o exemplo4
  4. Incrementar o programa anterior para que seja calculada a área do triângulo.

Dia 16/04/2012

Objetivos

  • fixar conceitos da aula anterior através de exercícios e explorando:
    • instrução de decisão if() e if() else;
    • instruções de atribuição e expressões;
    • tipos de dados: int, float, double
    • mapeamento de um fluxograma (principal) em um programa C
  • uso de define
  • aninhamento de ifs

Revisão do processo de compilação

ProcessoCompilacao.jpg

USO de DEFINE

O define é um comando do pré-processador do C. Observe abaixo como ele pode ser usado

 
#include <stdio.h>
#define PI 3.1416

main()
{
 
  float x; /* declaração de uma variável real */
  float y;  /* declaração de uma variável real */

  printf ("Entre com o valor de x ");
  scanf("%f",&x);

  y = 2*PI*x;
}

Usando funções da biblioteca matemática

Para usar as funções da biblioteca matemática padrão, fazer o seguinte:

  • No arquivo-fonte incluir o header math.h da biblioteca matemática:
 
#include <stdio.h>
#include <math.h>

main()
{
 
  double x,y; /* declaração de duas variáveis reais */

  printf ("Entre com o valor de x ");
  scanf("%lf",&x);

  y = sqrt(x);
  printf ("Raiz de x = %lf", y);
}
  • Compilar e linkar o arquivo da forma:
 gcc -lm ex1.c -o ex1

Exercícios

  1. Implementar um programa para calcular a área e o comprimento de uma circunferência, dado como entrada o raio.
  2. Implementar um programa para ler um número complexo no formato retangular e convertê-lo para o formato polar. Usar as funções sqrt[2] e atan [3] da biblioteca matemática. Como converter:
    ou
  3. Fazer um fluxograma e implementar um programa C para calcular as raízes de uma equação do segundo grau, dado como entrada os coeficiente a,b e c.
  4. Implementar um programa para calcular o valor de y para um dado valor de x, considerando que:
  5. Implementar um programa para converter radianos em graus;
  6. Modificar o exercício para apresentar um menu que permite escolher se quer transformar graus em radianos ou vice-versa.

DIA 23/04/2012

OBJETIVOS

  • Comando de repetição while()
  • Relação de instruções C com blocos do fluxograma;
  • Exercícios

Comando while ()

O comando while permite implementar loops com controle no início do loop.

#include <stdio.h>
main() 
{
  int contador;
  
  contador=0;
  while (contador<5) {  
     printf("valor do contador =  %d\n", contador);
     contador=contador+1;
  }
}

=

Relação de comandos do fluxograma com Programa C

Fluxograma C Comentário
Fluxo1.jpg
main()
{
   printf("Alo Mundo\n");
}

O fluxogram do programa principal corresponde a função main() do C. A primeira instrução que se executa é a primeira instrução da função main() e a última instrução é a última do main()

Fluxo2.jpg
if (y>5)
  x=x+1;
Fluxo3.jpg
if (y>5) {
  x=x+1;
  z=z+1;
}
Observar que quando existe mais de uma instrução simples sob o controle do if, deve-se usar as chaves (conceito de bloco).
Fluxo4.jpg
if (y>5) {
  x=x+1;
  z=z+1;
} else {
  x=x-1;
  z=z-1;
}
comando if com a parte else (SENÃO)
Fluxo5.jpg
while(contador<5) {
   printf("Entre com x\n");
   scanf("%f",&x);
   soma=soma+x;
   contador = contador + 1;
}
comando while() aplicado sobre um bloco de instruções. Note que se for uma instrução simples, as chaves podem ser omitidas.
Fluxo6.jpg
if (z>5) {
   while(contador<5) {
        printf("Entre com x\n");
        scanf("%d",&x);
        soma=soma+x;
        if (soma>150) 
           y=z+x;
   }
   if (z == 10)
      y=y+1;
}
Note que instruções while e if são tratadas como instruções normais que podem ser aninhadas normalmente em outros comandos.

Exercícios

  1. Fazer um fluxograma e um programa em C que lê 5 números e mostra a quantidade de números lidos que é maior que a média destes números.
    #include <stdio.h>
    
    main()
    {
    	float x,y,z,v,w,media;
            int contador;
    
            contador = 0;
            /* entradad de 5 números */
    	printf("Entre com numero\n");
            scanf("%f",&x);
    	printf("Entre com numero\n");
            scanf("%f",&y);
    	printf("Entre com numero\n");
            scanf("%f",&z);
    	printf("Entre com numero\n");
            scanf("%f",&v);
    	printf("Entre com numero\n");
            scanf("%f",&w);
    
            media = (x+y+z+v+w)/5;
    
            if(x>media)
                contador = contador + 1;
            if(y>media)
                contador = contador + 1;
            if(z>media)
                contador = contador + 1;
            if(v>media)
                contador = contador + 1;
            if(w>media)
                contador = contador + 1;
             
            printf("media = %f\n", media);
            printf ("Numero de numeros acima da media = %d\n", contador);
    }
    
  2. Fazer um fluxograma e um programa em C para calcular a média de números reais positivos que serão fornecidos pelo teclado. O final da entrada de dados se dá quando um número negativo for fornecido. Usar o comando while()

Ex2Aula23-04-2012.jpg

  1. Implementar um programa C que lê um número inteiro positivo e produz na saída: 0 1 2 3 <número>. Usar o comando while(). Assuma que o usuário sempre fornece números positivos, para facilitar.
  2. Modificar o programa anterior para o caso do número fornecido ser negativo. Neste caso o programa dar uma mensagem e se encerrar.
  3. Modificar o programa anterior para o programa perguntar novamente caso o número seja negativo ou zero.

DIA 2/05/2012

OBJETIVOS

  • Definir a data da avaliação/recuperação (MARCAMO 14/05/2012);
  • Expressões com operadores relacionais e lógicos;
  • Exercícios

Expressões relacionais

Os operadores relacionais permitem realizar comparações entre dois operandos. Os operadores são os seguintes:

Operador Significado
> maior que
>= maior ou igual que
< menor que
<= menor ou igual que
== igual a (se o operando a esquerda é maior que o da direita)
!= diferente de (se o operando a esquerda é diferente do da direita)
Note que o valor resultante de uma expressão relacional é 0 (se falso) ou 1 (se verdadeiro) 

Exemplo:

#include <stdio.h>

main()
{
  int x,y;
  x = 10;
  y = (x>10);
  printf ("valor de y = %d\n", y);
  x = 12;
  y = (x>10);
  printf ("valor de y = %d\n", y);
}
NOTA IMPORTANTE: no C qualquer expressão que resulte em 0 é considerada FALSA e 
                 qualquer expressão que resulte em diferente de 0 é VERDADEIRA

Expressões Lógicas

Os operadores lógicos permitem a construção de expressões lógicas através dos seguintes operadores:

Operador Significado
&& AND
|| OR
!= NOT
NOTA: Uma expressão lógica também resulta em 0 ou 1

Exemplo:

#include <stdio.h>


main()
{
  int x,y;
  x=5;
  y=(x==5);
  printf ("valor de y = %d\n", y);
  y=(x==12); 
  printf ("valor de y = %d\n", y); 
}

Construindo expressões com os operadores lógicos e relacionais

Agora podemos construir expressões mais complexas, conforme o exemplo:

#include <stdio.h>

main()
{
  int x,y;
  printf("Entre com x\n");
  scanf("%d",&x);
  printf("Entre com y\n");
  scanf("%d",&y);
  if (x>6 && y <=5)
      printf("X é menor que 6 E y é menor ou igual 5\n");
  printf ("O valor da expressão x>6 && y <=5 é %d\n", x>6 && y <=5 );
}
SEMPRE É BOM REPETIR: no C qualquer expressão que resulte em 0 é considerada FALSA e 
                 qualquer expressão que resulte em diferente de 0 é VERDADEIRA

Exercícios

  1. Elaborar um fluxograma e implementar um programa em C para ler 10 números reais e calcular a média dos números que estiverem na faixa de 10.5 e 50.5 (incluindo os limites). Ex1Aula-02-05-2012.jpg
    #include <stdio.h>
    main()
    {
      int cont=0,cont_aux=0;
      float x,media, soma_acum=0;
    
      while (cont<10) {
        printf("Entre com x\n");
        scanf("%f",&x);
        if (x>=10.5 && x<=50.5) {
           cont_aux = cont_aux + 1;
           soma_acum = soma_acum + x;
        }
        cont = cont + 1;
      }
      if (cont_aux>0) {
          media = soma_acum / cont_aux;
          printf("media de %d numeros = %f\n", cont_aux, media);
      }else 
          printf("Não existem números lidos na faixa\n");
    }
    
  2. Incremente o exercício anterior para calcular também a média dos números que não estiverem na faixa indicada.
  3. Em uma disciplina de introdução a programação, a avaliação é realizada da seguinte forma: se o aluno obter média de 3 avaliações igual ou superior a 7.0 e a nota de um trabalho final igual ou superior a 6.0, o aluno passa. Se a média das avaliações for igual ou superior a 9.0 o aluno passa independentemente do trabalho. Se o aluno obtiver 10 no trabalho, ele passa independente das avaliações. Faça um programa em C cuja entrada são as notas das avaliações e do trabalho. Em qualquer outra situação o aluno reprova.O programa deve imprimir se o aluno passa ou reprova.

DIA 7/05/2012

OBJETIVOS

  • Operadores aritméticos;
  • Vetores
  • Exercícios.

Operadores aritméticos

Já temos vistos expressões aritméticas com operadores básicos (+,-,*,/). Além destes operadores temos os seguintes:

Operador Significado
% resto de uma divisão
++ incrementa o operando em uma unidade
-- decrementa o operando em uma unidade

Exemplo 1

#include <stdio.h>
main()
{
   int x,y;
   printf("Entre com x\n");
   scanf("%d", &x);
   y=x%2;
   printf("resto x divido por 2 =%d\n",y);
}

Exemplo 2


#include <stdio.h>

main()
{
   int x,y;
   printf("Entre com x\n");
   scanf("%d", &x);
   y=x++;
   printf("Valor de y =%d e o valor de x = %d\n",y, x);
   x=1;
   y=++x;
   printf("Valor de y =%d\n",y);
}

Exemplo 3

#include <stdio.h>
main()
{
   int x,y;
   printf("Entre com x\n");
   scanf("%d", &x);
   y=x--;
   printf("Valor de y =%d\n",y);
}

Note que existe uma diferença entre

 y = x--;

e

 y = --x;

Vetores

Um vetor pode ser facilmente definido no C:

main()
{
  float x[10]; /* vetor com 10 floats */
  int i;
  x[0] = 22.5; /* colocando 22.5 na posição 0 do vetor */
  x[9] = x[0] + 2.5;
  printf("Entrar com o número na posição 5\n");
  scanf("%f",&x[5]);
  /* usando uma expressão como índice */
  i=2;
  x[i*2]=i*1.5;
  /*usando loop para acessar o vetor */
  while (i<8) {
     x[i]=0.0;
     i++;
  }
}
NOTA: vetores sempre começam na posição 0

Exercícios

  1. Implementar um programa em C para ler 10 números reais (float) para um vetor. Usar o comando while.
    #include <stdio.h>
    
    main()
    {
    	float x[10];
    	int i;
    
     	i=0;
     	while (i<10) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
     		i++;
    	}	
    }
    
  2. Modificar o exercício para computar a média dos 10 números que estão no vetor. Usar um DEFINE para definir o tamanho do vetor.
    #include <stdio.h>
    #define TAM_VETOR 10
    
    main()
    {
    	float x[TAM_VETOR], soma_acum=0, media;
    	int i;
    
     	i=0;
     	while (i<TAM_VETOR) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma_acum = soma_acum + x[i];
     		i++;
    	}	
    	media = soma_acum/TAM_VETOR;
    	printf("\nMedia vetor = %f\n", media);
    }
    
  3. Modificar o exercício anterior para computar a quantidade de números do vetor que estão acima da média.
    #include <stdio.h>
    #define TAM_VETOR 10
    
    main()
    {
    	float x[TAM_VETOR], soma_acum=0, media;
    	int i,cont;
    
    	/* Leitura dos números e
    		cálculo da soma acumulada */
     	i=0;
     	while (i<TAM_VETOR) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		soma_acum = soma_acum + x[i];
     		i++;
    	}	
    	
    	/* Cálculo da média */
    	media = soma_acum/TAM_VETOR;
    	printf("\nMedia vetor = %f\n", media);
    	
    	/* Cáculo da quantidade de 
    		números acima da média */
     	i=0;
    	cont=0;
     	while (i<TAM_VETOR) {
    		if (x[i] > media) 
    			cont++;
     		i++;
    	}	
    	printf("Quantidade acima da média = %d\n",cont);
    }
    
  4. Implementar um programa em C para ler dois vetores de inteiros, cada um com 5 elementos e então computar um terceiro vetor que é a soma destes vetores (elemento 0 com elemento 0, elemento 1 em com elemento 1 etc);
    #include <stdio.h>
    #define TAM_VETOR 10
    
    main()
    {
    	float x[TAM_VETOR], y[TAM_VETOR], vetor_soma[TAM_VETOR];
    	int i=0;
    	while (i<TAM_VETOR) {
    		printf("Entre com x[%d] -> ", i);
    		scanf("%f",&x[i]);
    		printf("Entre com y[%d] -> ", i);
    		scanf("%f",&y[i]);			
    		vetor_soma[i] = x[i] + y[i];
    		printf("vetor_soma[%d] -> %f\n", i,vetor_soma[i]);
                    i++;
    	}
    }
    

DIA 9/05/2012

OBJETIVOS

  • Reforçar a necessidade de indentação do código
  • Exercícios de preparação para avaliação

Indentação

Indentação Estilos

Exercícios

  1. Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos.
    main()
    {
      int x,y;
      float media;
    
      printf("Entre com x\n");
      scanf("%d",&x);
      printf("Entre com y\n");
      scanf("%d",&y);
      if (x==y)
         printf("números iguais\n");
      else {
         printf("números diferentes\n");
         media = (x+y)/2.0;
      }
    }
    
  2. Implementar um programa para ler 4 números inteiros e imprimir uma mensagem se a soma dos dois primeiros for igual ou menor a soma dos dois últimos.
    main()
    {
       int num1,num2,num3,num4;
       int soma1,soma2;
    
       printf("Entre com num1\n");
       scanf("%d", &num1);
       printf("Entre com num2\n");
       scanf("%d", &num2);
       printf("Entre com num3\n");
       scanf("%d", &num3);
       printf("Entre com num4\n");
       scanf("%d", &num4);
    
       soma1 = num1+num2;
       soma2 = num3+num4;
       
       if(soma1<=soma2)
          printf("Soma dos dois primeiros <= que a soma dos dois últimos\n");
    }
    
  3. Implementar um programa para ler dois números reais e, na sequência, um número inteiro. Se o número inteiro for 1 os dois números iniciais deverão ser somados, se for 2 eles serão subtraídos, se for 3 eles serão multiplicados e se for 4 serão divididos. Mostrar mensagem de erro se o número inteiro não estiver na faixa de 1 a 4. Mostrar mensagem caso a divisão não seja possível.
    main()
    {
       float num1,num2;
       int operacao;
    
       printf("Entre com num1\n");
       scanf("%f", &num1);
       printf("Entre com num2\n");
       scanf("%f", &num2);
    
       printf("Entre com a operacao\n");
       scanf("%d", &operacao);   
    
       /* Esta solução pode ser otimizada - veremos
          mais tarde */
       if (operacao>=1 && operacao <=4) {
          if (operacao==1) 
             resultado = num1 + num2;
          if (operacao==3) 
             resultado = num1 - num2;
          if (operacao==3) 
             resultado = num1 * num2;
          if (operacao==4) {
             if (num2!=0)
                 resultado = num1 / num2; 
             else 
                 printf("Divisao por zero\n");
          }
          printf("O resultado da operacao %d é %f\n",operacao,resultado);
       } else {
           printf("Operacao inválida");
       }
    }
    
  4. Implementar um programa em C para receber a resistência em ohms de 2 resistores e então calcular a resistência série e paralela dos mesmos.
  5. Dado o código de cores dos resistores, fazer um programa que permite mostrar o valor de resistência em Kilo - ohms.Tabela de Cores
  6. Faça um programa que leia valores de moedas e some as quantidades de tipos de moedas informadas. Para sair do programa o usuário deve digitar um número negativo. Valores inexistentes devem ser ignorados. Por exemplo, se o usuário digitar 25, 50, 25, 5, 10, 5, o programa deve informar: 2 moedas de 5 centavos, 1 moeda de 10 centavos, 2 moedas de 25 centavos, 1 moeda de 50 centavos. São aceitos apenas valores de moedas de 1, 5, 10, 25 e 50 centavos. Seu programa deve ler 10 valores de moedas, e então apresentar o resultado.
  7. Incrementar o programa anterior para calcular o total em reais equivalente as moedas lidas.
  8. Incrementar o programa anterior para que no final do programa uma mensagem seja dada para o usuário que possui mais do que 5 moedas de 50 e 3 moedas de 25 e mais do que 2 reais. A mensagem deve mandar o usuário comprar um X-salada.
  9. Elaborar um fluxograma e um programa para ler N números reais para um vetor e, em seguida, computar a média de todos os números maiores ou iguais a 5.5. A média deve ser impressa.
  10. Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada;

DIA 14/05/2012

AVALIAÇÃO 1

DIA 16/05/2012

OBJETIVOS

  • Exercícios da prova
  • Comando de repetição do while

Exercícios da Avaliação

1.Considere o fluxograma abaixo. a) Elabore um programa em C equivalente. Considere que TODAS as variáveis são inteiras. b) Coloque todos os valores finais das variáveis do programa.

Ex1prova-11-05-2012.jpg

2.Implementar um programa em C para ler 5 números inteiros e imprimir uma mensagem se a média dos dois primeiros for igual ou menor a soma dos três últimos.

3.Elaborar um fluxograma e um programa para ler 10 números reais para um vetor e, em seguida, computar a média de todos os números menores ou iguais a 11.5 E maiores que 5.5. A média deve ser impressa.

4.Implementar um programa em C para receber a resistência em ohms de 2 resistores e então calcular a resistência série e paralela dos mesmos. Se uma (ou ambas) resistências forem negativas, mostrar uma mensgem e encerrar o programa.

Fluxograma C Comentário
FluxoDoWhile-Eraldo.jpg
contador = 0;
do {
        scanf("%d",&x);
        soma=soma+x;
        if (soma>150) 
           y=z+x;
        contador++;
} while(contador<5);
Note que instruções while e if são tratadas como instruções normais que podem ser aninhadas normalmente em outros comandos.