PRG29002 - Programação I - Eng.Telecom 2016-2

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

Professor da Disciplina: Cleber Jorge Amaral
e-mail: cleber.amaral@ifsc.edu.br
Monitoria: Programa_de_monitoria_dos_cursos_superiores_de_Telecomunicações

Ementa de PRG29002

Critérios e instrumentos de avaliação

  • Conceitos numéricos entre 0 e 10. 0 é reservado para alunos com frequência insuficiente
    • N1 = Prova teórica sobre pseudocodigo e fluxograma (sem apoio de computador)
    • N2 = Prova prática sobre C
    • N3 = Apresentação de projeto de desenvolvimento em C (Avaliação do projeto = 30% e da performance do aluno na apresentação = 70%)
    • Recuperação realizada após cada prova e do trabalho uma reapresentação que valerá no máximo conceito 7.
    • Média = (N1+N2+N3)/3
  • Ter 75% de frequência.

Datas importantes

  • 19/09 - Prova 1: Lógica de algoritmos em fluxograma e pseudocódigo
    • Possivel recuperação da p1 a marcar
  • 21/11 - Prova 2: Prática em linguagem C
    • Possivel recuperação da p2 a marcar
  • 12/12 e 16/12 - Apresentação do projeto final
  • 19/12 - Possivel recuperação do projeto final

Eventos da área de desenvolvimento

  • Outubro de 2016 - QCon Rio de Janeiro QConRio
  • Outubro de 2016 - The Developers Conference Porto Alegre TDC
  • Março de 2017 (previsto) - Arduino Day São Paulo ArduinoDay
  • Abril de 2017 - Qcon São Paulo QConSP
  • Maio de 2017 (previsto) - The Developers Conference Florianópolis TDC
  • Junho de 2017 (previsto) - JavaOne São Paulo JavaOne
  • Julho de 2017 (previsto)- The Developers Conference São Paulo TDC

Material de aula

Diário de aula

Introdução aos algoritmos utilizando fluxograma

Aula inaugural e introdução aos algoritmos
  • Apresentada ementa através dos slides disponibilizados.
  • Introduzido conceito de algoritmo, discutido definição de problema bem definido
  • Trabalhamos um problema na forma de brainstorming que não foi bem especificado mas serviu para introduzir o conceito de abstração e deixar o pensamento livre para criar soluções de um controle eletrônico dos status das chaves do almoxarifado
    • No desenvolvimento definimos a necessidade de uma estrutura de dados (tabela) para ter o cadastro das chaves que devem ser controladas. Estas chaves foram identificadas por um conjunto de letras único (R1, R2, CAD2 - para representar as chaves do Lab. Redes 1, Lab. Redes 2, e Lab CAD2 respectivamente como exemplo). Neste caso esta tabela ficou com apenas um campo que serve tanto de descrição como de identificação já que este conjunto de letras deve ser único.
    • Vimos que seria necessário uma estrutura na forma de um quadro (tabela) que armazenaria o estado da chave. Serve como representação virtual do estado físico do objeto. No exercício fizemos que a chave que está fora (emprestada) poderia ser expressa com estado 1, a chave presente no quadro físico com código 0. Acabamos não definindo bem como fazer mas sabemos que de alguma forma teríamos que relacionar as chaves que estão fora com uma identificação da pessoa que pegou.
    • Nesta linha vimos que também seria necessário uma estrutura para conter as pessoas que podem pegar chaves. Sem se preocupar com detalhes de permissão a quais chaves, consideramos que uma pessoa cadastrada poderia pegar qualquer chave disponível. Neste cadastro teriamos um campo de identificação, como nos limitamos a um sistema com teclado e monitor ficamos com a matricula e um outro campo contendo o nome da pessoa já que o programa teria que mostrar em tela o nome já que não é comum as pessoas memorizarem as matriculas dos colegas.
  • Ficou como exercício para casa:
    • Gerar um descritivo mais detalhado deste problema, fazendo com que fique bem definido. Neste caso, imagine-se como sendo o cliente, os detalhes que não foram especificados você mesmo deve especificar afim de que fique bem definido
    • Agora coloque-se como executor deste projeto, como você resolve o problema que você mesmo ajudou a definir?
    • Faça na forma de tabelas, diagramas ou texto mesmo, representações de como estes dados estão se relacionando
    • Em sala não tivemos tempo para definir como funcionaria a gravação do histórico das chaves, pense numa forma de controlar este processo. Já usou excel, consegue imaginar uma maneira?
    • Consegue imaginar o fluxo de operação? Digo, o programa mostrará um menu, o usuário entrará com uma informação, o programa então mostra certa mensagem... como são os ciclos de empréstimo e devolução? Como funcionaria a consulta de histórico? E o cadastro de chaves e pessoas?
Algoritmos - fluxogramas
  • Concluindo a análise do problema das chaves, uma descrição que proponho é: Desenvolver um programa em C para registrar os empréstimos e devoluções de chaves do almoxarifado de tele. Deve ser possível cadastrar as chaves (através de um apelido: R1, R2, CAD2...), cadastrar as pessoas autorizadas a pegar as chaves (matricula e nome) e mostrar um quadro em tela que exibe o estado atual dos empréstimos. Deve enfim possuir uma função que mostra o histórico de emprestimos e devoluções. Este problema agora pode ser perfeitamente descrito em um algoritmo, não? Vejamos como poderia ficar a interface:
    • Exemplo de Menu principal do programa
- - - - - - - - - - - - - - - - - - - - - - - 
Estado atual das chaves:
R1 = Emprestada (João)
R2 = Disponível
CAD2 = Emprestada (Pedro)
CAD3 = Disponível
- - - - - - - - - - - - - - - - - - - - - - - 
1: pegar/devolver uma chave
2: cadastro de chaves
3: cadastro de pessoas
4: ver histórico de empréstimos
5: sair do programa
Digite a opção ______
  • Exemplo da opção 1 (pegar/devolver)
Digite sua identificação: ___
Digite o nome da chave a pegar ou devolver: ____
  • Exemplo da opção 2 (cadastro de chaves)
As chaves atualmente cadastradas são: R1, R2, CAD2, CAD3
Digite um nome existente para deletar ou um novo nome para criar uma nova: ____
  • Agora que temos um exemplo de um problema bem definido.
  • Vimos antes que uma consulta como "Qual a melhor maneira de vir do IFSC do centro até o IFSC de São José" não seria bem definida. Há vários detalhes que não estão declarados.
  • Outro exemplo, imagine como poderia ser desenvolvido um algoritmo que tem a missão de realizar a distribuição de móveis em uma casa. Esta é uma tarefa complexa, muitos até contratam arquiteto e decorador para esta tarefa pois envolve preferencias, requisitos de circulação, utilização de pontos de hidráulica, elétrica, uso de eletrodomésticos, enfim, são muitos detalhes técnicos e de gosto do usuário.
  • Problemas desta natureza precisam de técnicas de inteligencia artificial como "Machine Learning" que dá a habilidade a máquina de aprender sem ter sido explicitamente programada para aquela tarefa. Eles vão aprendendo com a massa de dados que vai sendo gerada e pelo comportamento do usuário que está operando o software. Com o tempo ele "aprende" que o usuário costuma se deslocar de carro, por exemplo, que pelo seu histórico costuma se deslocar em determinados horários, por sua agenda do Google planeja ir a determinado local, enfim.
  • Introdução ao fluxograma
    • Ver o vídeos e desenvolver em sala os algoritmos na forma de fluxogramas
    • Desenvolver um algoritmo na forma de fluxograma que lê uma nota que varia de 0 a 10, e imprime em tela "Aluno aprovado" ou "aluno reprovado" sabendo que são aprovados alunos com nota >= 6.0
    • Desenvolver um algoritmo na forma de fluxograma que lê três temperaturas e exibe em tela a menor delas. PDF com o fluxograma pronto
  • Exercícios:
    1. Desenvolve um algoritmo na forma de fluxograma para cálculo da média de dois números fracionários exibindo o resultado
    2. Desenvolva um algoritmo na forma de fluxograma que calcula a média de consumo de um veículo. Deve obter a distância que um veículo percorreu e a quantidade de litros consumida, exibindo em tela o consumo médio em km/l.
    3. Desenvolva um algoritmo na forma de fluxograma que lê dois valores inteiros e apresenta qual é o valor maior
    4. Desenvolva um algoritmo na forma de fluxograma que lê dois valores inteiros e apresenta a diferença do maior para o menor
    5. Desenvolve um algoritmo na forma de fluxograma que obtém a nota do aluno e mostra em tela o conceito sabendo que A se for >= 9.0, B >= 7.5 e < 9.0, C >= 6.0 e < 7.5 e D < 6.0
Fluxogramas
  • Resolver um ou dois dos exercícios da aula passada
  • Desenvolver o fluxograma para o algoritmo de controle das chaves do almoxarifado

Pseudo-código

Pseudo-código utilizando Portugol - Introdução e condicionais

Ver exemplos de códigos Portugol dentro do software portugol (menu Arquivo->Abrir exemplo)

Exercícios:

  1. Desenvolva um algoritmo na forma de pseudocódigo que obtenha três números inteiros distintos e escreva na tela os valores do menor para o maior. (id:0.10)
  2. Implemente um pseudocódigo que converte “celsius para fahrenheit” ou “fahrenheit para celsius” conforme opção que deve ser apresentada pelo algoritmo. (id:0.09)
  3. Implemente por fluxograma e pseudocódigo um controlador de acesso que verifica se a senha digitada é igual a senha padrão “1234” abrindo a porta. O sistema deve sinalizar tanto no caso de acesso liberado ou negado. (id:0.07)
  4. Desenvolva um algoritmo na forma de pseudocódigo que obtenha duas datas fornecidas pelo usuário (três números inteiros cada: dia, mês e por último ano com 4 dígitos) e mostra como resultado qual das duas datas é cronologicamente maior. (id:0.13)
  5. Implementar em pseudocódigo um algoritmo que através do valor ôhmico dado diz qual é a sequencia de cores de um resistor. Considere apenas resistores de 4 bandas de cores incluindo a tolerância, porém neste exercício ignore a tolerância. Desconsidere resistores de precisão, aqueles com multiplicadores ouro e prata. Considere que o multiplicador máximo é de 10MOhm (violeta). (id:0.12)
  6. Implementar em pseudocódigo um algoritmo que através de uma sequencia de cores de um resistor dado dá o valor ôhmico do resistor. Considere apenas resistores de 4 bandas de cores incluindo a tolerância, porém neste exercício ignore a tolerância. Desconsidere resistores de precisão, aqueles com multiplicadores ouro e prata. Considere que o multiplicador máximo é de 10MOhm (violeta). (id. 0.17)
  7. Implemente em pseudocódigo o algoritmo descrito no fluxograma abaixo (clique na imagem para ampliar) (id:0.08):
    Bhaskara.png
  8. Implementar em pseudocódigo algoritmo que imprime em tela o ranking de países através das medalhas obtidas nas olimpíadas. Sabendo que fica melhor colocado no ranking o país que soma mais medalhas de ouro, caso haja empate aquele que soma mais prata entre os empetados e caso haja empate na quantidade de prata também será melhor colocado no ranking o que tiver mais bronzes. O algoritmo deve ser capaz de armazenar e ranquear três países. Dica: crie as variáveis paisA_ouro, paisA_prata e paisA_bronze como numéricas para armazenar as medalhas obtidas pelo país A, da mesma forma para o país B e país C. Você pode limitar a quantidade de medalhas total e determinar pesos para obter um valor absoluto de pontuação. (id:0.18)
  9. Implemente um algoritmo em pseudocódigo que informa ao usuário se ele é obrigado ou não a fazer sua declaração de imposto de renda. O algoritmo deve solicitar ao usuário que responda sim ou não para as seguintes questões, sendo que o contribuinte deve declarar se se enquadrar em uma delas ou conforme descreve as condições (o texto está resumido, caso de dúvidas ver fonte):
    1. Recebeu RENDIMENTOS TRIBUTÁVEIS superior a R$ 28.123,91
    2. Recebeu RENDIMENTOS ISENTOS superior a R$ 40.000,00
    3. OBTEVE GANHO DE CAPITAL NA ALIENAÇÃO DE BENS ou BOLSAS DE VALORES
    4. Caso relacionado a ATIVIDADE RURAL: obteve receita superior a R$ 140.619,55 ou pretenda compensar, PREJUÍZOS de anos anteriores
    5. Tem POSSE total superior a R$ 300.000,00, estando dispensado se seus bens estiverem lançados na declaração do cônjuge
    6. Passou à CONDIÇÃO DE RESIDENTE no Brasil em qualquer mês
    7. Quem optou pela ISENÇÃO DO IMPOSTO SOBRE A RENDA INCIDENTE SOBRE O GANHO DE CAPITAL auferido na VENDA DE IMÓVEIS RESIDENCIAIS
  10. Implemente um algoritmo que solicita ao usuário entrar com 10 temperaturas, o algoritmo deve usar um laço de repetição para isso. No final deve mostrar a maxima, minima e média das temperaturas (id:0.16)
  11. Desenvolva em pseucodigo um algortimo que testa o vencedor de uma rodada de truco. A sequencia das cartas esta descrita na imagem abaixo bem como dos naipes franceses. Além da sequencia ali descrita, uma carta será sorteada e fará com que se torne a mais forte (manilha) aquela de força imediatamente superior sorteada (no caso da carta sorteada ser um 3 a manilha é o 4). A rodada é vencida numa disputa de melhor de três. As manilhas nunca empatam, neste caso prevalesce o naipe conforme sequencia. No caso de empate no último turno vence a rodada quem venceu o primeiro turno. Na ocorrência de empate nos três turnos vence a rodada quem foi o primeiro a jogar.
    Truco.jpg

Proposta de solução para o exercício 1. Por: Guilherme dos Santos Januário: Observar que este algoritmo falha em algumas condições de entrada

algoritmo declare n1, n2, n3, m numerico

escreva "Digite três números:" leia n1, n2, n3 se n1 > n2 e n1 > n3 e n3 > n2 entao

 escreva n1, ", ", n3, ", ", n2 

se n2 > n1 e n2 > n3 e n3 > n1 entao

 escreva n2, ", ", n3, ", ", n1

se n3 > n2 e n3 > n1 e n1 > n2 entao

 escreva n3, ", ", n1, ", ", n2

se n1 > n2 e n1 > n3 e n2 > n3 entao

 escreva n1, ", ", n2, ", ", n3 

se n2 > n1 e n2 > n3 e n1 > n3 entao

 escreva n2, ", ", n1, ", ", n3

se n3 > n2 e n3 > n1 e n2 > n1 entao

 escreva n3, ", ", n2, ", ", n1

fim_algoritmo. </syntaxhighlight>

Uma outra proposta de código para o problema 1: algoritmo

 declare n1, n2, n3 numerico
 escreva "Digite três números:"
 leia n1, n2, n3
 se n1>=n2 e n1>=n3 entao
   se n2>=n3 entao
     escreva n3, "-", n2, "-", n1
   senao 
     escreva n2, "-", n3, "-", n1
 senao se n2>=n1 e n2>=n3 entao
   se n1>=n3 entao
     escreva n3, "-", n1, "-", n2
   senao 
     escreva n1, "-", n3, "-", n2
 senao
   se n1>=n2 entao
     escreva n2, "-", n1, "-", n3
   senao 
     escreva n1, "-", n2, "-", n3

fim_algoritmo. </syntaxhighlight>

Observe que os dois algoritmos apresentados acima possuem falhas em algumas condições caso as entradas possuam números iguais

Pseudo-código utilizando Portugol - repetições

Exercícios - série 1

  1. Implemente um algoritmo que solicita ao usuario entrar com um numero negativo qualquer. O algoritmo deve mostrar todos os números impares e pares de 0 até este negativo indicado. Utilize a estrutura para, verifique qual o passo adequado para resolver esta questão. (id:1.07)
  2. Desenvolva uma algoritmo para marcar o placar de um jogo de futebol, deve solicitar ao usuário digitar A ou B, ao digitar A é somado um gol a equipe A e o mesmo para a B. Se digitado F deve encerrar e mostrar o placar final. (id:1.11)
  3. Implemente um algoritmo que obtém um número do usuário e utilizando laço para verifica se um número primo. Valide seu algoritmo comparando com a lista de primos Lista de números primos (id:1.14)
  4. Implemente um algoritmo que obtém dois números inteiros positivos do usuário e utilizando laço de repetição realização a multiplicação destes dois números através de operações de soma. (id:1.09)
  5. Implemente um algoritmo que obtém dois números inteiros positivos do usuário e utilizando laço de repetição realização a divisão destes dois números através de operações de subtração. (id:1.10)
  6. Faça um algoritmo que apresente a sequencia de Fibonacci dado um valor “n” que representa a quantidade de números em série que se deseja exibir
  7. Implemente um algoritmo que utiliza uma estrutura "PARA" afim de desenhar uma moldura com 10 colunas e "n" linhas. A quantidade de linhas "n" deve ser obtida do usuário. Se o usuário digitar 6 ficaria conforme mostrado a seguir:

XXXXXXXXXX X X X X X X X X XXXXXXXXXX </syntaxhighlight>

Exercícios - série 2

  1. Rode e teste o exemplo do "Quadro 42 - Exemplo de uso de vetores em Portugol" do TCC de Antônio Medeiros, compare com a implementação de teste de números primos feito na lista anterior. Com o uso de vetores o que mudou?
  2. Implemente um algoritmo que solicita do usuário 10 números, após a leitura mostra ao usuários os números na ordem inversa em que foram digitados
  3. Escreva um algoritmo que solicita ao usuário digitar 6 números para uma aposta na megasena. O algoritmo deve utilizar a estrutura repita, gravar em variaveis distintas cada número que deve estar entre 1 e 60. Deve garantir que os 6 números são diferentes entre si e no final mostrar os números digitados
  4. Implemente o pseudocódigo de uma calculadora que realiza operações de soma ou subtração de dois números. A calculadora deve operar em um laço infinito encerrando sua operação se o usuário digitar "q"
  5. Implemente o pseudocódigo de um programa que solicita o nome e idade de 5 pessoas gravando em dois vetores distintos (um literal e outro numérico). No final imprime em tela o indice de memória de cada usuário e seus dados como no exemplo a seguir "O nome do usuário '1' é 'Joao' e tem 40 ano(s)" (Neste exemplo o usuário digitou nome: Joao, Idade: 40). Utilize estrutura de repetição REPITA.
  6. Implemente o pseudocódigo de um programa que utiliza uma matriz para armazenar informações NUMERICAS de um estoque de produtos. Cada linha desta matriz representa um produto, usaremos o limite de 5 produtos para este exercicio. A matrriz deve ter 3 colunas, a primeira representará a quantidade em estoque, a segunda o valor de custo e a terceira o preço de venda. O programa deve apresentar uma entrada de dados para receber do usuário parâmetros destes 5 produtos. No final um relatório deve ser apresentado mostrando a quantidade em estoque e o lucro bruto em % que está sendo aplicado para cada produto. Utilize estrutura de repetição ENQUANTO.
  7. Implemente em pseudocódigo um programa que obtém o nome de 10 alunos e suas 4 notas para cada aluno. No final deve imprimir um relatório mostrando cada aluno por nome, a média de suas notas e sua situação final (aprovado se a média for >= 6). Utilize vetores, matrizes e estruturas de repetição PARA.

Exercícios complementares:

  • Sessão 12.5 (página 294) de Araújo, Everton Coimbra de. Algoritmos: fundamento e prática; 3ª ed. [S.l]:Visual Books, 2007. 414p. ISBN 9788575022092.
Pseudo-código utilizando Portugol - sub-rotinas e registros

Exercícios

  1. Execute o código do TCC do Antonio Medeiros, "Quadro 49 - Exemplo de passagem de parâmetros por referência em Portugol"
  2. Execute o código do TCC do Antonio Medeiros, "Quadro 50 - Exemplo de uso de sub-rotina que retorna valor em Portugol"
  3. Implemente um algoritmo que realiza análises combinatórias pelo uso de uma sub-rotina de cálculo de fatorial. Neste caso o usuário deve entrar com um inteiro e o algoritmo deve retornar o número de possíveis combinações para aquele dado.
  4. Implemente um algoritmo que utilizando as sub-rotinas pré-definidas do portugol (seno e cosseno) criando outras sub-rotinas para cálculos da tangente, arco-seno, arco-coseno e arco-tangente. Neste caso utilizando angulos em radianos
  5. Implemente um algoritmo anterior agora aceitando angulos em graus
  6. Execute o código do TCC do Antonio Medeiros, "Quadro 56 - Exemplo de uso de vetor de registros em Portugol"
  7. Desenvolva uma algoritmo para marcar o placar de um jogo de futebol, deve solicitar ao usuário digitar o nome das equipes A e B, guardando esta informação em campos de registros bem como deve possuir campos para armazenar o placar de cada equipe. Depois que o usuário digitar os nomes deve aguardar o anúncio de gols. Ao digitar A é somado um gol a equipe A e o mesmo para a B. Se digitado F deve encerrar e mostrar o placar final mostrando os nomes das equipes.
  8. Implemente o pseudocódigo de um programa que solicita o nome e idade de 5 pessoas gravando em uma estrutura de dados tipo registro com dois campos (um literal e outro numérico). No final imprime em tela o indice de memória de cada usuário e seus dados como no exemplo a seguir "O nome do usuário '1' é 'Joao' e tem 40 ano(s)" (Neste exemplo o usuário digitou nome: Joao, Idade: 40).

Parte da implementação do problema das funções trigonométricas algoritmo

 declare angulo,s,c,t numerico
 escreva "Digite um angulo: "
 leia angulo
 s <- arredonda(seno(angulo))
 escreva "O seno do angulo ",angulo," é: ",s
 c <- arredonda(cosseno(angulo))
 escreva "O cosseno do angulo ",angulo," é: ",c
 t <- arredonda(tangente(angulo))
 escreva "O tangente do angulo ",angulo," é: ",t

fim_algoritmo

sub-rotina tangente (x numerico)

 declare aux numerico
 aux <- seno(x) / cosseno(x)
 retorne aux

fim_sub_rotina tangente </syntaxhighlight>

C

Introdução ao C e funções de saída e entrada de dados
  • Atividade
    • Ler apostila de C da UFMG
  • Exercícios
    1. Implemente um programa em C que calcula a média de dois números reais digitados pelo usuário e imprime em tela a resposta deste cálculo
    2. Implemente um programa em C que recebe “a”, “b” e “c”, calcula e exibe o delta (delta = b*b-4ac).
    3. Implemente um programa em C que calcule a Potência dissipada por uma carga dados V e I.
    4. Implemente um programa em C que calcula a resistência R dados P e I.
    5. Implementar um programa C para converter um ângulo em radianos para graus.
    6. Implementar um programa C para converter um ângulo em graus para radianos.
Condicionais em C
  • Exercícios
    1. Implementar um programa que lê um número inteiro e imprime se o número é par ou ímpar. SUGESTÃO: Usar o operador de resto.
    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 implemente em C um algoritmo que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada.
    3. Implementar um programa em C para ler dois números inteiros e imprime uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos.
    4. Implementar um programa para ler 4 números inteiros e imprime uma mensagem se a soma dos dois primeiros for igual ou menor que a soma dos dois últimos.
    5. Implemente um programa em C que recebe duas datas fornecidas pelo usuário (três números inteiros cada: dia, mês e ano com 4 dígitos). Deve ser calculada qual a maior data e exibi-la em tela (pesquise sobre if...else para resolver este problema)
    6. 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.
    7. Melhore o programa de cálculo de delta, e calcule as raízes de uma equação de segundo grau. Faça testes para saber se há duas raízes reais (delta > 0), apenas uma (delta = 0) ou não há raízes reais (delta < 0). Usar a função sqrtf ou sqrt de <math.h> (utilizando funções de math.h talvez seja necessário adicionar a flag "-lm" na compilação).
    8. Uma empresa irá ajustar o salário de seus funcionários de acordo com a categoria de trabalho dos funcionários: CAT A (10% de aumento), CAT B (15% de aumento) e CAT C (20% de aumento). Faça um programa que leia o plano de trabalho e o salário atual de um funcionário e calcula e imprime o seu novo salário. Use o comando switch.
    9. Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso. Use o comando switch.

Referências

Referências bibliográficas

  • Araújo, Everton Coimbra de. Algoritmos: fundamento e prática; 3ª ed. [S.l]:Visual Books, 2007. 414p. ISBN 9788575022092.
  • KERNIGHAN, Brian W.; RITCHIE, Dennis M C: a linguagem de programação padrão ANSI; 1ª ed.[S.l]:Campus, 1989. 304p. ISBN 9788570015860.
  • SCHILDT, Herbert C Completo e Total; 3ª ed. [S.l]:Makron Books, 2009. 827p. ISBN 9788534605953.
  • FORBELLONE, Andre L. Lógica de Programação; 3ª ed. [S.l]:Makron Books, 2005. 197p. ISBN 9788576050247.
  • KING, K.N. C Programming: A Modern Approach; 2ª ed. [S.l]:W. W. Norton & Company, 2008. 832p. ISBN 9780393979503.
  • MANZANO, Jose Augusto Navarro Garcia Estudo Dirigido em Linguagem C. ; 16ª ed. [S.l]:Erica, 2012. 216p. ISBN 9788571948877.
  • NEVES, Júlio Cézar Programação Shell Linux; 5a ed. Rio de Janeiro:Brasport, 2005. 408p. ISBN 8574522031.
  • VEIGA, Roberto G. A. Comandos do Linux: guia de consulta rápida; ed. São Paulo:Novatec, 2004. 144p. ISBN 85-7522-060-8.

Referências adicionais

Ferramentas úteis

  • VisualG3: Uma IDE para desenvolvimento de programas em pseudocódigo (freeware), permite editar e compilar programas utilizando uma sintaxe própria de pseudocódigo muito parecida com a que trabalhamos em sala. Muito útil para verificar o funcionamento real dos algoritmos. Ver exemplos de códigos visualG3 em Exemplos VisualG3
  • LibreOffice: O LibreOffice é um programa gratuito (freeware) e de código aberto (opensource). Além de editor de textos, planilhas e apresentações tem a ferramenta Draw que permite a criação de fluxogramas.
  • VirtualBox: O Oracle VirtualBox é um programa gratuito (freeware) que permite criar e instanciar máquinas virtuais. O uso de máquinas virtuais é bastante interessante quando desejamos ter diferentes sistemas operacionais em um computador bem como quando se está realizando ensaios e deseja-se isolar estes experimentos do sistema principal.
  • Debian: O Debian, é umas das distribuições Linux mais estáveis existentes, suportando atualmente 12 arquiteturas de processador. É software livre e de código aberto e mantido por uma ampla comunidade com mais de 18000 desenvolvedores. Sua versão atual é a 8.5 (codinome Jessie, do filme Toy Story).
  • Ubuntu: O Ubuntu é uma distribuição linux (freeware e opensource) bastante estável e com uma comunidade bastante ativa que está sempre atualizando o sistema e presente nos foruns e redes sociais para dirimir dúvidas.
  • LinuxMint: O LinuxMint é uma distribuição linux (freeware e opensource) bastante estável e confortável aos usuários windows, pois traz um gerenciador de janelas configurado de uma forma mais natural para estes usuários e vem com um conjunto de programas pré-instalados que consegue atender a maior parte das demandas inicias.
  • dbDesigner4: O dbDesigner é uma ferramenta gratuita para elaboração de diagramas de bancos de dados relacionais. Não trabalhamos com bancos na disciplina PRG29002, porém trabalhamos com dados, esta ferramenta é útil para organizá-los em diagramas.

Avaliações

Conceitos
Conceitos
Matrícula A1 R1 ? ? ? ?
161006340-6 5 7
161005803-8 1 2
161001156-2 8 7
142003344-1 2 7
152000674-8 1 3
142001213-4 0 2
152000584-9 6 0
142001549-4 0 0
152000614-4 6 0
152000195-9 0 0
151006902-0 2 3
152000492-3 6 0
161000791-3 7 0
161006555-7 3 7
151005047-7 0 0
161000400-0 3 8
161000397-7 6 0
161001792-7 9 0
142003391-3 5 7
161001388-3 5 8
132002139-5 0 0
161005026-6 7 0
161000776-0 5 8
142001175-8 1 6
161006541-7 7 0
132005743-8 0 0
161006345-7 8 0
151003419-6 0 5
151001656-2 3 1
161001497-9 0 1
122001586-5 0 0
142003303-4 0 0
152000345-5 0 0
Estatísticas
Consolidação
Conceito A1 R1 ? ? ? ?
10 0% 0% 0% 0% 0% 0%
9 5% 0% 0% 0% 0% 0%
8 5% 5% 0% 0% 0% 0%
7 5% 22% 0% 0% 0% 0%
6 22% 0% 0% 0% 0% 0%
<=5 38% 22% 0% 0% 0% 0%
Ausentes 22% 50% 100% 100% 100% 100%

Plano de aula

Aula Data Horas Conteúdo Recursos
1 12/8 2 Aula inaugural, apresentação do professor e turma, apresentação da disciplina e introdução aos algoritmos
2 15/8 2 Prática: Introdução ao fluxograma
3 19/8 2 Algoritmos continuação (representação por pseudo-codigo, apresentacao o portugol)
4 22/8 2 Prática: Resolução de problemas em pseudocódigo e fluxogramas (declaração de variáveis, leia e escreva, uso de condicionais e biblioteca portugol)
5 26/8 2 Pseudocódigo: Estruturas de repetição e sub-rotinas
6 29/8 2 Prática: Resolução de problemas em pseudocódigo e fluxogramas
7 2/9 2 Pseudocódigo: Uso de vetores e sub-rotinas
8 5/9 2 Prática: Resolução de problemas com vetores e sub-rotinas
9 9/9 2 Introdução ao C, primeiros conceitos de compilação, variáveis, if… else, printf e scanf
10 12/9 2 Prática: Aula de exercicios de C
11 16/9 2 Continuação C, condicionais, operadores relacionais, operadores lógicos
12 19/9 2 Prática: Estruturas de repetição em C
13 23/9 2 Revisão de algoritmos para preparação para prova e Funções no C
14 26/9 2 Prática: Exercicios de funções
15 30/9 2 Avaliação 1 - Algoritmos, resolução de problemas e C básico
16 3/10 2 Prática: Correção da Avaliação
17 7/10 2 Resolução de exercícios de vetores
18 10/10 2 Prática: Resolução de exercícios de fixação de vetores.
19 14/10 2 Estruturas
20 17/10 2 Prática: Exercícios adicionais de preparação para avaliação 1 de Laboratório
21 21/10 2 Exercícios adicionais de preparação para avaliação 1 de Laboratório
22 24/10 2 Prática: Avaliação de Laboratório
23 28/10 2 FERIADO: DIA DO SERVIDOR PUBLICO
24 31/10 2 Prática: Correção da avaliação
25 4/11 2 Ponteiros
26 7/11 2 Prática: Exercicios ponteiros
27 11/11 2 Vetor de Ponteiros e Ponteiro Para Estruturas
28 14/11 2 PROVAVEL RECESSO
29 18/11 2 Desenvolvimento do Projeto
30 21/11 2 Prática: Desenvolvimento do Projeto
31 25/11 2 Avaliação II de Laboratório
32 28/11 2 Prática: Desenvolvimento do Projeto
33 2/12 2 Desenvolvimento do Projeto
34 5/12 2 Prática: Desenvolvimento do Projeto
35 9/12 2 Desenvolvimento do Projeto
36 12/12 2 Prática: Desenvolvimento do Projeto
37 16/12 2 Desenvolvimento do Projeto
38 19/12 2 Prática: Recuperação