Mudanças entre as edições de "PRG-2011-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 456: Linha 456:
 
C que é a multiplicação das duas. Lembrar que  
 
C que é a multiplicação das duas. Lembrar que  
  
:<\math>c_{ij}=\sum_{k=1}^{N}a_{ik}b_{kj}</math>
+
:<math>c_{ij}=\sum_{k=1}^{N}a_{ik}b_{kj}</math>
  
 
== 28/09/2011 ==
 
== 28/09/2011 ==

Edição das 17h45min de 22 de setembro de 2011

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

3/08/2011:

Objetivos da Aula

-apresentar plano de ensino;

-conceitos básicos de programação e algoritmos (até pg 10 da apostila)

-apresentar o básico do fluxograma para ler 3 números e fazer a média;

5/08/2011:

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

2.Modifique o algoritmo acima para calcular, além do comprimento, a área da circunferência.

3.Construir um fluxograma para ler 3 números e calcular a média dos dois maiores números lidos.

4.Refazer o exercício 3 para calcular a média do maior e do menor número entre os 3 lidos.

10/08/2011

Objetivos

-Trabalhar estruturas de decisão e repetição simples

Exercícios

  1. Escreva um programa que leia N números e calcule a média deles;
  2. Retrabalhar o exercício 4 da aula anterior para deixá-lo genérico: média entre o maior e o menor de n n números. Supor que n é o primeiro núumero lido.

Solução 1: Usando um loop estilo GOTO

12/08/2011

Troca das turmas

-Trabalhar estruturas de decisão e repetição simples

Exercícios

  1. Você trabalha na Airbus e deve construir programa que lê as informações do manche quando ele é empurrado ou puxado (é um airbus antigo, os novos tem joystick) e gera um alarme quando o ângulo de arfagem é maior ou menor que 45 graus. O comando de leitura é LerProfundor(variavel). Ver http://pt.wikipedia.org/wiki/Profundor
  2. 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 que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada.
  3. Faça um algoritmo para fazer a divisão de dois números reais. Antes de dividi-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.
  4. Escreva um programa que leia cinco números do teclado e mostre os dois maiores números.

17/08/2011

19/08/2011

24/08/2011

Avaliação surpresa.

26/08/2011

Não teve aula

31/08/2011

Objetivos

  1. continuar o trabalho com fluxogramas;
  2. tipo cadeia de caracteres;
  3. vetor de caracteres;

Desenvolvimento da Aula

-Apresentação do tipo vetor de caracteres (string);

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.

Do ponto de vista de nossas representações em fluxogramas, vamos tratar uma cadeia de caracteres como uma variável única, referenciada por um nome.

Exercícios

1.Elaborar um fluxograma que permite controlar o acionamento de uma porta através de uma senha. Se a senha fornecida pelo usuário corresponde a uma senha previamente armazenada, a porta deve ser aberta. Caso não corresponda, uma mensagem será mostrada indicando que a senha não confere.

2.Incrementar a solução do exercício 1 para um sistema que permite armazenar até 10 senhas diferentes em um vetor de senhas.

3.Incrementar a solução do exercício 2 para um sistema que armazena em uma tabela, o nome de usuários e outra tabela que armazena as senhas. A linha correspondente ao usuário é a mesma linha que corresponde a senha na tabela de senhas.

02/09/2011

Objetivos

  1. continuar o uso de fluxogramas;
  2. apresentar a caixa correspondente ao for (laços controlados);
  3. exercícios combinando vetores de cadeias com vetores de reais e inteiros,
  4. procura por padrões em uma cadeia;

Referência adicional sobre fluxogramas

Fluxogramas

Exercícios

1.Implementar o exercício 3 da aula anterior usando a caixa de laços controlados.

2.Implementar um fluxograma que permite acrescentar senhas no caso do exercício 2 da aula anterior. Suponha que quando for fornecida uma senha de valor "1234", o sistema desvia o fluxo para entrada de nova senha. Uma senha somente pode ser inserida se existir espaço livre na tabela. Espaços livres contem senhas vazias do tipo "".

3.Considere que uma cadeia de caracteres já está armazenada em vetor X. Esta cadeia é terminada em NULL. Elabore um fluxograma que permita ler um caracter do mundo externo e contar o número de caracteres existentes na cadeia.

07/09/2011

Feriado

09/09/2011

Objetivos

  1. Revisão Geral: tipos de dados (inteiro,real,caracteres, vetores, strings); constantes e variáveis; expressões;estruturas de controle: decisão e controle;
  2. Teste relâmpago;
  3. Apresentação do Portugol: tipos de dados, definição de variáveis, entrada e saída de dados, estrutura de decisão SE.

Teste relâmpago

Portugol (extraído da página do Prof.Marcelo Sobral e Tiago Semprebom)

As aulas de Lógica de Programação usarão um software de auxílio ao ensino de algoritmos chamado Portugol, desenvolvido na Escola Superior de Engenharia do Instituto Politécnico de Tomar, em Portugal.

Guia rápido de instalação e utilização do Portugol

Abaixo segue uma breve ajuda de como obtê-lo, instalá-lo e usá-lo. Esse guia assume que você esteja usando o Ubuntu Linux 9.04 ou superior.

  1. Faça o download do Portugol.
  2. Descompacte-o com o seguinte comando:
    tar xzf portugol23.tar.gz
    
  3. Repare que existe agora um subdiretório portugol no diretório onde você o descompactou. Execute o Portugol com o seguinte comando:
    java -jar portugol/Portugol.jar
    
    Obs: você precisará ter Java instalado. Caso não o tenha, execute o comando:
    sudo apt-get install openjdk-6-jre
    
  4. Copie esse arquivo para poder ver fluxogramas coloridos, e grave-o no memso diretório onde está o Portugol.
  5. Veja a ajuda do Portugol, e use-a sempre que tiver dúvidas !


A tela inicial do Portugol segue abaixo, junto com um programa demonstrativo.

Editor-Portugol.png

Exemplos de programas iniciais em Portugol:

  1. Lendo um número e mostrando-o na tela em seguida:
    Inicio
      inteiro x
    
      Escrever "Digite um numero: ",
      Ler X
      Escrever "Numero digitado: ", x
    Fim
    
  2. Lendo dois números, somando-os e mostrando o resultado na tela:
    Inicio
      inteiro x, y
    
      Escrever "Digite um numero: ",
      Ler x
      Escrever "Digite outro numero: ",
      Ler y
      Escrever "Soma = ", x+y
    Fim
    
    O programa abaixo é equivalente:
    Inicio
      inteiro x, y, z
    
      Escrever "Digite um numero: ",
      Ler x
      Escrever "Digite outro numero: ",
      Ler y
      z <- x + y
      Escrever "Soma = ", z
    Fim
    

Problema base: Entrar com o seu nome e com a sua idade e apresentar um texto dizendo se voce tem mais ou menos que vinte anos.

Tipos de Dados e definição de varáveis e constantes

Ver:

Estrutura de Decisão SE

Ver:

Exercícios

1.Fazer em Portugol um programa para calcular a área de um círculo. Definir o PI como constante.

2.Refazer o exercício anterior com a opção de calcular a área ou a circunferência.

14/09/2011

OBJETIVOS

  1. Estruturas de Repetição: ENQUANTO, PARA, REPETE, FAZ ENQUANTO
  2. Tipos de Dados Básicos;
  3. Tipos Estruturados (arrays)

Estrutura ENQUANTO

inicio
    inteiro contador
    contador <- 0
    enquanto contador < 10 faz
        escrever contador , "\t"
        contador <- contador + 1
    fimenquanto
fim

Estrutura PARA

inicio
    inteiro contador
    para contador de 0 ate 9 passo 1
        escrever contador , "\t"
    proximo
fim

Estrutura REPETE

inicio
    inteiro mes
    repete
        escrever "introduza um mes :"
        ler mes
    ate mes > 0 e mes < 13
    escrever "\nmes introduzido :" , mes
fim

Estrutura FAZ ENQUANTO

inicio
    inteiro mes
    faz
        escrever "introduza um mes :"
        ler mes
    enquanto mes < 0 ou mes > 13
    escrever "\nmes introduzido :" , mes
fim


Tipos de Dados Básicos

ver página de ajuda do Portugol

Tipos de Dados Estruturados

ver página de ajuda do Portugol

Exercícios

  1. Ler um vetor de 10 reais e calcular a média dos elementos do vetor. Faça um fluxograma de apoio.
inicio
     constante inteiro TAM_MAX_VETOR <- 10
     real vetor_x[TAM_MAX_VETOR], media,soma
     inteiro i
     
     // Leitura dos dados para o vetor
     para i de 0 ate TAM_MAX_VETOR-1 passo 1
         escrever "Entre com vetor_x[", i, "]\n"
         ler vetor_x[i]
     proximo
     
     //Totalização da soma dos elementos
     soma <- 0
     para i de 0 ate TAM_MAX_VETOR-1 passo 1
         soma <- soma + vetor_x[i]
     proximo    
     
     //Calculo da media
     media <- soma/10
     escrever "\nmedia=", media  
  
fim
  1. Ler um vetor de N reais e calcular a média dos elementos do vetor. Defina um vetor de um certo tamanho. Leia inicialmente o número N. Teste N em relação ao tamanho definido. Faça um fluxograma de apoio.
  2. Ler um vetor de N reais e calcular a média entre o maior e o menor. Faça um fluxograma de apoio.

16/09/2011

OBJETIVOS DA AULA

Avaliação Básica de Portugol

Problemas base para a avaliação de amanhã

OBS: Note que além de ser avaliado o programa, também será avaliada a desenvoltura do aluno em executar passo-a-passo o programa, explicando as instruções.

1.Fazer um programa para ler 2 números reais em variáveis chamadas alfa e beta. No caso de elas apresentarem valores iguais, o programa deve imprimir a mensagem:

"As variáveis possuem valores iguais"

caso contrário a mensagem a ser impressa é:

"A variável <nome_variavel> possui o maior número"

2.Fazer um programa para ler um número inteiro para uma variável. Se o número for positivo, o programa deverá então imprimir todos os números inteiros entre 0 e o valor da variável. Caso contrário deverá apresentar a mensagem "Número negativo" e o programa se encerra. Exemplo: suponha que o usuário entre com o número 5, então a saída do programa é:

0 1 2 3 4 5

Se o usuário fornecer -3, então a saída é simplesmente a mensagem "Número negativo". Se o número for 0 a mensagem deve ser "ZERO!"

21/09/2011

OBJETIVOS

  1. Arrays no Portugol
  2. Exercícios

Arrays no Portugol

Exercícios

1-Implementar em Portugol, o algoritmo já implementado para abrir uma porta dado uma senha.

inicio
    variavel texto senha_armazenada <- "Inter"
    variavel texto senha_lida
    enquanto 1 = 1 faz
        ler senha_lida
        se senha_lida = senha_armazenada entao
            escrever "abrir porta\n"
        senao
            escrever "senha nao confere\n"
        fimse    
    fimenquanto
fim

2-Refazer o exercício para uma tabela com 10 senhas.

inicio
    constante inteiro tam_tabela <- 10
    constante texto tabela_senhas [ tam_tabela ] <- {"Inter" , "Gremio" , "Figueira" , "Avai" , "Coritiba" , "AtleticoPR" , "SaoPaulo" , "Palmeiras" , "Flamengo" , "Vasco"}
    variavel texto senha_lida
    variavel inteiro contador
    enquanto 1 = 1 faz
        contador <- 0
        ler senha_lida
        enquanto ( contador < 10 ) E ( tabela_senhas [ contador ] =/= senha_lida ) faz
            contador <- contador + 1
        fimenquanto
        se contador < 10 entao
            escrever "abrir porta\n"
        senao
            escrever "senha nao conta na lista de senhas\n"
        fimse
    fimenquanto
fim

3-Refazer o exercício para uma tabela de 10 usuários com uma tabela de 10 senhas.

inicio
    constante inteiro tam_tabela <- 10
    constante texto tabela_usuarios[ tam_tabela ] <- {"joao","maria", "jose","lara","vera","lucia","carlos","sofia","lourdes","odilon"}
    constante texto tabela_senhas [ tam_tabela ] <- {"Inter" , "Gremio" , "Figueira" , "Avai" , "Coritiba" , "AtleticoPR" , "SaoPaulo" , "Palmeiras" , "Flamengo" , "Vasco"}
    variavel texto senha_lida, usuario
    variavel inteiro contador
    enquanto 1 = 1 faz
        contador <- 0
        ler usuario
        enquanto ( contador < tam_tabela ) E ( tabela_usuarios [ contador ] =/= usuario ) faz
            contador <- contador + 1
        fimenquanto
        se contador < tam_tabela entao
            ler senha_lida
            se tabela_senhas[contador] = senha_lida entao
                escrever "abrir porta\n"
            senao
                escrever "Senha nao confere\n"
            fimse
        senao
            escrever "usuario nao conta na lista de senhas\n"
        fimse
    fimenquanto
fim

4-Refazer o exercício para incluir uma opção para incluir senhas. Suponha que quando for fornecido um usuario de valor "1234", o sistema desvia o fluxo para entrada de novo usuário/senha. Uma senha somente pode ser inserida se existir espaço livre na tabela de usuários. Espaços livres contem senhas vazias do tipo "".

23/09/2011

OBJETIVOS

  1. Arrays Multi dimensionais
  2. Exercícios

Arrays no Portugol

EXERCÍCIOS

1.Elaborar um programa em Portugol para ler duas matrizes de reais, A e B, ambas de dimensão MxN e calcular a uma matriz C que é a soma destas duas matrizes. Fazer um fluxograma antes de implementar. 2.Elaborar um programa para ler duas matrizes de reais, A e B, de dimensões MxN e NxP e então calcular a matriz C que é a multiplicação das duas. Lembrar que

28/09/2011

30/09/2011

05/10/2011

07/10/2011

14/10/2011

19/10/2011

21/10/2011

19/10/2011

26/10/2011

04/11/2011

09/11/2011

11/11/2011

16/11/2011

18/11/2011

23/11/2011

25/11/2011

30/12/2011

02/12/2011

07/12/2011

09/12/2011

14/12/2011

16/12/2011