PRG-2012-1-ERALDO

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

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;
  • Mapeando um fluxograma (principal) em um programa C

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 real */

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

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

  if (y>x)
     printf("y é maior que x");


  if (y>x)
     printf("y é maior que x");
  else
     printf("y é igual ou menor que x");
 
}

Outro exemplo, usando blocos:

 
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("y é maior que x\n");
     z = y-x;
     printf("Neste caso z =  %d\n", z)
  } else {
     printf("y é igual ou menor que x");
     z = x-y;
     printf("Neste caso z =  %d\n", z)
  }
 
}

Exercícios

Exercícios

=