UFC

Universidade Federal do Ceará
Fundamentos de Programação
(CK087)
Horários:
segunda, quarta e sexta, 10 às 12h
Local: 936/Auditório

email
ufc@fredbf.com


1. EMENTA
       Apresentação dos Fundamentos e das técnicas necessárias para o desenvolvimento de soluções de problemas através de computador. Inicialmente é abordada a metodologia para construção de algoritmos, apoiada no uso do Teorema da Estrutura. Dessa forma são detalhadas as estruturas básicas de programação, a "sequência", o "desvio" e o "laço", tudo apoiado por uma pseudo-linguagem de programação, onde são tratados, além das estruturas já citadas, conceitos sobre "tipos e estruturas de dados", "mecanismos para a construção de tipos", noções de "variáveis e constantes" e utulização de "subprogramas", tudo apoiado por uma linguagem de programação pedagógica, sendo muito utilizada a Linguagem Pascal.


2. CONTEÚDO
 
Descrição
Assunto
CH
1.1. Resolução de problemas (como resolver um problema; como resolver um problema através do computador; o que é um algoritmo)
INTRODUÇÃO
8h
1.2. Construção e representação de algoritmos (pseudo linguagem; noção de eficiência de um algoritmo; o que é heurística)
2.1. Estruturas de programação (sequência; desvio - seleção simples, seleção múltipla; laço - indexado, controlado por condição)
ALGORITMOS
32h
2.2. Desenvolvimento de algoritmos (exemplos de algoritmos numéricos; exemplos de algoritmos não numéricos)
3.1. Ambiente de programação (sistema operacional; compilador; interpretador; estrutura de um programa) 
PROGRAMAÇÃO
80h
3.2. Tipos de dados (conceito; tipos primitivos; tipos construídos; mecanismos de construção de tipos; variáveis e constantes; instruções para implementação de tipos de dados)
3.3. Interação com o usuário (conceito; dispositivos para interação com o usuário; instruções para implmentação de interação com o usuário)
3.4. Expressões aritméticass (atribuição; operações aritméticas associadas a cada tipo de dado)
3.5. Estruturas de controle (sequência; desvio de sequência; laço; instruções para a implementação de desvio e de laço)
3.6. Uso de arquivos (armazenamento e recuperação de dados; dispositivos para armazenagem de dados; instruções para a implementação do uso de arquivos de dados)
3.7. Subprogramas (conceito; implementação do uso de subprogramas) 


3. ANDAMENTO DA DISCIPLINA
 
04/08
Não houve aula 
(1) Motivo: indefinição de horários
06/08
Apresentação inicial da disciplina 
(1) Ler Aula1 e Aula2 do material da UFMG
(2) Fazer Lista de Exercícios 1
08/08
Motivação inicial
(1) Problema do ordenamento das cartas
(2) Formalizando uma solução
(3) Escrita de um algoritmo 
11/08
Não houve aula
(1) Motivo: feriado de dia dos estudantes  
13/08
Tipos de Representação e Propriedades de Algoritmos
(1) Revisando aula passada: (a) descrição do exercício; (b) melhor algoritmo da aula passada; (c) escrito em linguagem algorítmica; (d) escrito em pascal; (e) escrito em fluxograma;
(2) Representações: (a) linguagem narrativa; (b) fluxograma; (c) linguagem algorítmica;
(3) Propriedades: (a) não ambíguo; (b) número finito de passos; (c) ordem dos passos
(4) Exercícios com as cartas na mão: (a) ordenar as cartas seguindo o procedimento de ir colocando a menor à esquerda; (b) escolher a menor carta; (c) calcular a média aritmética das cartas; (d) calcular a quantidade de cartas pares; (e) calcular a média das cartas ímpares;
15/08
Não houve aula
(1) Motivo: feriado municipal
18/08
Exercitando o raciocínio com fluxogramas (diagramas de bloco)
(1) Faça um algoritmo em que o usuário entre com com dois números, e apresente o maior valor (Explicar o conceito de ler e escrever no algoritmo)
(2) O usuário entra quatro números e você apresenta o somatório deles
(3) Leia um valor em reais, (supondo a cotação do dólar = 1.5 reais) e apresente seu valor convertido para dólares
(4) Uma empresa deseja aumentar o salário dos funcionários com mais de um ano de 'casa', sendo um aumento de 10% para os que têm menos de 10 anos e 25% para aqueles com mais de 10 anos;
(5) Imprima os números de 1 a 100 em ordem decrescente;
(6) O usuário deve digitar a quantidade de elementos a serem somados, e no final apresentar a soma de valores;
(7) O usuário deve ir digitando números e quando o usuário digitar um número negativo, o algoritmo deve parar e apresentar a quantidade de números lidos;
(8) O usuário deve digitar 100 números, e o algoritmo deve apresentar a quantidade de números pares lidos;
20/08
Exercitando o raciocínio com fluxogramas (diagramas de bloco)
(1) Faça um algoritmo que peça que o usuário digite dois inteiros. Em seguida, inverta o valor dessas duas variáveis e apresente seus valores para o usuário. (Explicar o conceito de variável)
(2) Faça um algoritmo que peça ao usuário para digitar um inteiro positivo N. Seu algoritmo deve apresentar o somatório dos números positivos pares e inferiores a N;
(3) Faça um algoritmo que receba doi inteiros positivos A e B. Seu algoritmo deve imprimir para o usuário, se A é divisível por B; 
(4) Faça um algoritmo que receba doi inteiros positivos A e B e apresenta o MDC desses números.
22/08
Exercitando o raciocínio com fluxogramas (diagramas de bloco)
(1) Faça um algoritmo que peça ao usuário para digitar os inteiros positivos H e M, que representam valores em horas e minutos, respectivamente. Em seguida, seu algoritmo pede para que o usuário digite uma opção de 'a' até 'c', e de acordo com a opção digitada, ele imprime na tela: (a) apenas H convertido para minutos; (b) quantidade total de minutos presentes em H:M; (c) quantidade total de segundos presentes em H:M;
(2) Faça um algoritmo que peça ao usuário para digitar um inteiro positivo N e que diga se N é primo ou não.
(3) Faça um algoritmo que leia o peso P e a idade I de 20 pessoas. Seu algoritmo deve apresentar a média de peso para as seguintes faixas etárias: (a) até 15 anos; (b) de 16 a 30 anos e (c) de 31 anos em diante;
(4) Faça um algoritmo que leia dois valores positivos A e B e que escreva A elevado a B, usando apenas os operadores aritméticos: +, -, *, / e MOD
25/08
Aula NORMAL 
(1) O treinamento foi adiado para o final de Setembro (data ainda não definida)
(2)
(3) 
(4)
27/08
Aula NORMAL 
(1) O treinamento foi adiado para o final de Setembro (data ainda não definida)
(2)
(3) 
(4)
29/08
Aqui
(1)
(2)
(3) 
(4)
01/09
Aqui
(1)
(2)
(3) 
(4)
MT_1.1
03/09
Aqui
(1)
(2)
(3) 
(4)
05/09
Aqui
(1)
(2)
(3) 
(4)
08/09
Aqui
(1)
(2)
(3) 
(4)
MT_1.2
10/09
Aqui
(1)
(2)
(3) 
(4)
12/09
Aqui
(1)
(2)
(3) 
(4)
15/09
Aula NORMAL 
(1) O treinamento foi adiado para Outubro (data ainda não definida)
(2)
(3) 
(4)
MT_1.3
17/09
Aqui
(1)
(2)
(3) 
(4)
Prova_Av1
19/09
Avaliação 1
(1)
(2)
(3) 
(4)
22/09
Aqui
(1)
(2)
(3) 
(4)
24/09
Aqui
(1)
(2)
(3) 
(4)
26/09
Aqui
(1)
(2)
(3) 
(4)
29/09
Aqui
(1)
(2)
(3) 
(4)
MT_2.1
01/10
Aqui
(1)
(2)
(3) 
(4)
03/10
Aqui
(1)
(2)
(3) 
(4)
06/10
Aqui
(1)
(2)
(3) 
(4)
MT_2.2
08/10
Aqui
(1)
(2)
(3) 
(4) 
10/10
Aqui
(1)
(2)
(3) 
(4)
13/10
Aqui
(1)
(2)
(3) 
(4)
MT_2.3
15/10
Aqui
(1)
(2)
(3) 
(4)
17/10
Aqui
(1)
(2)
(3) 
(4)
20/10
Aqui
(1)
(2)
(3) 
(4)
22/10
Aqui
(1)
(2)
(3) 
(4)
Prova_Av2
24/10

Avaliação 2
(1)
(2)
(3) 
(4)
27/10
Aqui
(1)
(2)
(3) 
(4) 
29/10
Aqui
(1)
(2)
(3) 
(4) 
31/10
Aqui
(1)
(2)
(3) 
(4)
03/11
Aqui
(1)
(2)
(3) 
(4)
MT_3.1
05/11
Aqui
(1)
(2)
(3) 
(4)
07/11
Aqui
(1)
(2)
(3) 
(4)
10/11
Aqui
(1)
(2)
(3) 
(4)
MT_3.2
12/11
Aqui
(1)
(2)
(3) 
(4)
14/11
Aqui
(1)
(2)
(3) 
(4)
17/11
Aqui
(1)
(2)
(3) 
(4)
MT_3.3
19/11
Aqui
(1)
(2)
(3) 
(4)
21/11
Aqui
(1)
(2)
(3) 
(4)
24/11
Aqui
(1)
(2)
(3) 
(4)
MT_3.4
26/11
Aqui
(1)
(2)
(3) 
(4)
28/11
Aqui
(1)
(2)
(3) 
(4)
01/12
Aqui
(1)
(2)
(3) 
(4)
Prova_Av3
03/12
Avaliação 3
(1)
(2)
(3) 
(4)
Rep
05/12
Reposição 1 ou 2 ou 3
(1)
(2)
(3) 
(4)
08/12
Aqui
(1)
(2)
(3) 
(4)
Final
10/12
Avaliação Final
(1)
(2)
(3) 
(4)
12/12
Publicação Final das Notas
(1)
(2)
(3) 
(4)

4. BIBLIOGRAFIA
 
  • Livros:
    • Fundamentos da Programação de Computadores: Algoritmos, Pascal e C/C++. Ana F. G. Ascencio e Edilene A. V. de Campos. Editora Pearson. (Livro-texto)
    • Pascal e técnicas de programação. Eber A. Schmitz e Antônio A. de S. Teles. Editora LTC.
    • Turbo Pascal 7.0: Comandos e Funções. Roberto Rinaldi. Editora Érica.
  • UNICAMP, prof. Paulo Sérgio de Moraes:
  • UFPE, profa. Anjolina Grisi de Oliveira:
    • Algumas notas sobre Pascal - Parte I: revpasc1 
    • Algumas notas sobre Pascal - Parte II: Procedimentos e Funções: revpasc2 
  • UERJ, prof. Alexandre Rojas:
  • FACE, prof. Ricardo Tolentino:
  • UNIVERSIDADE TIRADENTES, prof. José Maria Júnior
  • Outros materiais interessantes:

5. LISTAS DE EXERCÍCIOS
 
  • Lista de Exercícios 1:
    • Quando fazer? 

6. EXERCÍCIOS-DESAFIO
 
  • Exercícios-Desafio 1:
    • Quando fazer?

7. COMPILADORES
 

8. AVALIAÇÕES
 
  • Cada avaliação é composta por uma nota da prova escrita (9.0) + somatório dos mini-testes (cada um vale 0.5):
    • Av1 = MT_1.1 + MT_1.2 + MT_1.3 + Prova_Av1
    • Av2 = MT_2.1 + MT_2.2 + MT_2.3 + Prova_Av2
    • Av3 = MT_3.1 + MT_3.2 + MT_3.3 + MT_3.4 + Prova_Av2
    • Av1, Av2 e Av3 podem computar no máximo 10 pontos, sendo desprezados os pontos excedentes ;
  • Os mini-testes são obrigatórios e não possuem reposição :
    • Entretanto, o aluno poderá faltar um mini-teste em Av1 e Av2, e dois em Av3, que sua nota não será prejudicada;
  • Reposição:
    • O aluno só tem direito a fazer apenas uma reposição das três provas;
    • A reposição ocorre no final do semestre;

AVALIAÇÃO 1

NOME

MT_1.1

MT_1.2

MT_1.3

Prova_Av1

Rep_Av1

Av1

 

 

 

 

 

 

 

 

 

 

 

 


AVALIAÇÃO 2

NOME

MT_2.1

MT_2.2

MT_2.3

Prova_Av2

Rep_Av2

Av2

 

 

 

 

 

 

 

 

 

 

 

 


AVALIAÇÃO 3

NOME

MT_3.1

MT_3.2

MT_3.3

MT_3.4

Prova_Av3

Rep_Av3

Av3