Mudanças entre as edições de "PRG1-2013-2-Engenharia Programação 1 - Engenharia"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 123: Linha 123:
  
 
Neste sentido, vamos entender minimamente o funcionamento de um computador.
 
Neste sentido, vamos entender minimamente o funcionamento de um computador.
 
=== Como funciona um computador? Como ele executa programas ("receitas")? ===
 
 
*Partes de um computador:
 
**UCP ([http://en.wikipedia.org/wiki/Central_processing_unit CPU]) (Unidade Central de Processamento)
 
**Barramentos
 
**[http://en.wikipedia.org/wiki/Memory_%28computers%29 Memórias]: Primária (semicondutora -> RAM e ROM) e Secundárias (disco, pendrive)
 
**Dispositivos de Entrada e Saída de Dados (Teclado, Monitor etc)
 
 
*O computador é digital:
 
** Dados e Instruções são sequências de bits
 
** Representação de dados em sistemas computacionais:  uso de códigos (ex:[http://pt.wikipedia.org/wiki/ASCII código ASCII]);
 
  A -> 01000001
 
  B -> 01000010
 
** As instruções também são palavras binárias interpretadas pela CPU;
 
 
De forma simplificada podemos dizer que as instruções ficam em uma
 
memória de programa enquanto os dados a serem processados pelo programa
 
ficam em uma memória de DADOS;
 
 
O programa que está na '''memória de programa''' está escrito
 
em LINGUAGEM DE MÁQUINA
 
 
*Funcionamento Simplificado de um Computador
 
 
 
Suponha que um programa a ser executado se encontra em uma memória de programa.
 
Ao ligar o sistema, a CPU busca na memória de programa uma instrução a ser executada
 
(ciclo de busca) e, então, executa a instrução (ciclo de execução). Na SEQUÊNCIA,
 
a CPU busca a PRÓXIMA instrução na memória de programa, e assim sucessivamente...
 
 
O fluxo de execução do programa é, a princípio SEQUENCIAL no sentido
 
que a execução de uma instrução é realizada somente após a execução da instrução
 
antecedente.
 
 
[http://www.sj.ifsc.edu.br/~tisemp/SOP/arquitetura_aula1.pdf (apresentação do Prof.Semprebom sobre computadores)]
 
  
 
=== Possíveis linguagens de programação ===
 
=== Possíveis linguagens de programação ===

Edição das 16h04min de 14 de agosto de 2013

PRG1 - PROGRAMAÇÃO I

DADOS DA DISCIPLINA

CARGA HORÁRIA

TOTAL: 72 HORAS (4 HORAS/SEMANA)

TEÓRICA: 36 HORAS

LABORATÓRIO: 36 HORAS

DIAS COM AULA: 36 (18 semanas)

PRÉ REQUISITOS: LÓGICA

EMENTA

Introdução a lógica de programação e algoritmos. Constantes, variáveis e tipos de dados. Operadores aritméticos, relacionais e lógicos. Concepção de fluxograma e pseudocódigo. Estruturas de decisão e estruturas de repetição. Introdução a linguagem de programação c. Vetores de caracteres e multidimensionais. Ponteiros e aritmética de ponteiros. Funções: chamada por valor e por referência. Chamada recursiva de funções. Tipos de dados compostos. Operação com arquivos textos e binários.

Bibliografia Básica

  • SCHILDT, Herbert. C Completo e Total - 3.ed. [S.l.]: Makron, 1997. 830p. ISBN 978-8534605953

Bibliografia Básica

  • SCHILDT, Herbert. C Completo e Total - 3.ed. [S.l.]: Makron, 1997. 830p. ISBN 978-8534605953

Referências Complementares

AULAS

AULA 1 DIA 15/08/2013

AULA 1 DIA 15/08/2013

Como fazer um churrasco

Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:

EmbedVideo received the bad id "U0xSYIXE9vo#!" for the service "youtube".
O que tem o churrasco com a nossa aula??
Trata-se de uma sequência de passos para execução  
de um objetivo.
EXERCÍCIO: Na forma textual, descrever as etapas
para fazer um bom churrasco.

O que é um algoritmo

Um algoritmo pode ser visto como uma sequência de instruções ou operações que resolvem um dado problema.

A receita de um bom churrasco corresponde 
a um algoritmo.

Como representar um algoritmo ?

Uma forma é representar na forma textual ordenada:

1.Comprar a carne
2.Colocar carvão na churrasqueira
3.Acender o carvão
4.Cortar a carne (picanha)
5.Espetar a carne
6.Salgar a carne
7.Colocar a carne na churrasqueira
8.Aguardar a carne ficar no ponto desejado
9.Bater a carne
10.Servir a carne

Outras formas são mais apropriadas para o uso no meio computacional:

  • pseudo-código
  • fluxogramas
A PENSAR: É possível mudar a ordem das instruções?
É possível paralelizar algumas instruções?

O problema da raposa, do milho e da galinha

EmbedVideo received the bad id "yifW9XueSaI#!" for the service "youtube".


EXERCÍCIO 1: Descrever na forma de etapas um 
solução para o problema da raposa, do milho e da galinha.
Note que somente é possível escrever o algoritmo se tivermos uma solução para o problema.
EXERCÍCIO 2: Descrever na forma de etapas uma 
solução para o problema dos canibais/padres.

Torres de Hanoi

Veja este jogo:

EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube".
EXERCÍCIO 3: Escrever na forma de etapas numeradas a solução para o problema 
das torres de Hanói usando 3 discos.
EXERCÍCIO 4: Escrever na forma de etapas numeradas a solução para o problema 
das torres de Hanói usando 4 discos.

E para quem são os algoritmos?

Uma receita de bolo é apropriada para ser executada 
por um ser humano. 
Um procedimento de como trocar um pneu também. 
Mas muitas vezes  queremos que o algoritmo seja executado 
por uma máquina! O computador é perfeito para isto!
Neste curso vamos nos concentrar no desenvolvimento de
algoritmos simples,  desde a sua concepção até  a sua  
implementação através de uma LINGUAGEM DE
PROGRAMAÇÃO -  a linguagem C , por exemplo.
Um PROGRAMA implementa um algoritmo. É o algoritmo 
materializado na forma de uma sequência de instruções.

Neste sentido, vamos entender minimamente o funcionamento de um computador.

Possíveis linguagens de programação

Na prática, é inviável desenvolver programas complexos em
LINGUAGEM DE MÁQUINA.
Em geral, utilizamos linguagens de ALTO NÍVEL que podem, de
alguma forma, serem traduzidas (compiladas) para a linguagem
de baixo nível ou interpretadas em tempo de execução.

Exemplo:

  • Linguagem C
  • Fortran
  • Basic
  • C++
  • Pascal
  • Java
  • Python
 Neste curso utilizaremos a linguagem C. Por que? 
 É uma linguagem muito usada na implementação de produtos 
 eletrônicos, incluindo àqueles voltados as Telecomunicações.

Compilando um programa C

Neste curso usaremos o compilador da coleção gcc do projeto GNU. O manual completo do gcc pode ser encontrado aqui.

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);


NOTA: crie um diretório para trabalhar nos exercícios que se seguem:

mkdir ExerciciosC
cd Exercicios

Exemplo: salve o programa abaixo como teste.c

 

#include <stdio.h>

main()
{
  printf("Alo Mundo\n");
}
  • Compilar/gerar executável do programa usando o gcc:
 gcc teste.c -o teste
  • Testar o programa:
./teste
Nota: o atributo -o permite que se forneça um nome para o executável diferente de a.out

É possível somente compilar (gerar código objeto):

 gcc -c teste.c

Observe os subprodutos listando com detalhes:

 ls -l


Um exemplo completo

PROBLEMA: Computar a média de dois números reais fornecidos pelo teclado. Mostrar o resultado no monitor.

SOLUÇÃO:

ALGORITMO
DADOS DE ENTRADA: NUM1 e NUM2
DADOS DE SAÍDA: MEDIA
INÍCIO
 1.Ler NUM1
 2.Ler NUM2
 3.MEDIA <- (NUM1+NUM2)/2
 4.Mostrar MEDIA
FIM
/* Calculador de media de dois números reais */
#include <stdio.h>

main()
{
  float num1,num2, media;

  printf("Entrar com o primeiro número\n");
  scanf(&num1);
  printf("Entrar com o segundo número\n");
  scanf(&num2);
  media = (num1+num2)/2;
  printf ("media = \n", media);
}

EXERCÌCIO 5: Implementar o algoritmo com o Scratch.

Plano de Ensino

Agora que temos uma ideia do que será tratado neste curso, vamos apresentar o plano de ensino.