Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Objetivos
Situar a atividade de programao de computadores Apresentar conceitos fundamentais relativos programao de computadores
2. Motivao
A programao de computadores uma atividade que leva representao dos passos necessrios resoluo de um problema em linguagem de programao. Para dar incio ao aprendizado dessa atividade, importante compreender seu contexto, seu propsito, os conceitos bsicos subjacentes, bem como tomar contato com o ferramental necessrio a sua realizao.
3. Conceitos
3.1 O que um computador? Para que serve? (de sofisticada mquina de calcular mdia) Um computador uma coleo de componentes que realizam operaes lgicas e aritmticas sobre um grande volume de dados. (Miyazawa, 2001) Computador ferramenta de trabalho (ex. editores de textos, planilhas, sistemas de informao, etc). Computador mdia: serve como canal na comunicao humana (ex. FAX, Web, ICQ, apresentao multimdia, etc). 3.2 Como funciona um computador? (organizao de um computador)
Memria RAM Unidades de Entrada Unidade de Controle Memrias Secundrias Unidades de Sada
Unidade Lgica e Aritmtica
Memria ROM
Memria Cache
Registradores
3.3 O que algoritmo? Qual sua relao com programao de computadores? (definio geral de algoritmo, sua origem, exemplos) Um procedimento para resolver um problema matemtico (ex. achar o mximo divisor comum) em um nmero finito de passos que freqentemente envolve a repetio de uma operao; ou de forma mais abrangente: um procedimento passo-a-passo para resolver um problema ou realizar algum objetivo. (Manber, 1989:1) Origem: matemtico persa Mohammed al-Khowrzim (em Latim: Algorismus) Algoritmo mais antigo (400 a 300 AC): Algoritmo de Euclides, que calcula o mximo divisor comum (MDC) de dois nmeros inteiros positivos. mdc (x, y) = mdc (y, x mod y); mdc (x, 0) = x. Entrada: 2 valores inteiros positivos m e n (m > n) Sada: mximo divisor comum de m e n. Passo 1: Adote x = m e y = n; Passo 2: Adote r = (resto de x dividido por y); Passo 3: Adote novos valores x = y e y = r; Passo 4: Se r diferente de 0, volte ao passo 2; seno pare com a resposta x.
Figura 2: Algoritmo de Euclides (Miyazawa, 2001:3)
O enfoque deste curso em algoritmos computacionais, ou seja, algoritmos que descrevem uma seqncia de aes que podem ser traduzidos para alguma linguagem de programao (Miyazawa, 2001:2). Algoritmo correto: sempre termina e para qualquer instncia de entrada produz uma sada correta. Programar consiste em representar/descrever um algoritmo em alguma linguagem de programao. 3.4 Quais so os ferramentais (bsicos) necessrios programao de computadores? (fluxograma, pseudo-linguagem, linguagem de programao, ambiente de programao) Fluxograma: auxilia a explicar a seqncia de instrues em algoritmos e programas. Na Figura 2, a seguir, um retngulo representa um passo ou mdulo do algoritmo, uma seta indica o prximo comando a ser executado, um losango indica uma condio que interfere no fluxo do algoritmo ou programa.
Pseudo-linguagem: notao que se assemelha a uma linguagem de programao, mas que tambm possibilita ao programador concentrar-se no problema a ser modelado sem se prender a uma linguagem de programao especfica. Essa notao mistura definies formais sobre dados e estruturas de controle, com informaes em estilo livre (ver Figura 2). Linguagem de programao: uma linguagem desenvolvida para viabilizar a programao de computadores. Ambiente de programao: conjunto de tecnologias que d suporte programao de computadores (ex. Sistema Operacional, editor de texto, compilador, etc).
programas pela CPU, gerenciamento da memria principal e da memria secundria para uso dos programas em execuo, etc. Ex.: Linux, Unix, Windows XP, OS2, MS-DOS. Linguagem de Mquina: conjunto de instrues que podem ser interpretados e executados diretamente pela CPU de um dado computador. especfica para cada computador. Linguagem Assembler (Linguagem de Baixo Nvel): Representao da linguagem de mquina atravs de cdigos mnemnicos. Tambm especfica de cada mquina. Linguagem de alto nvel: linguagem que independe do conjunto de instrues da linguagem de mquina do computador. Cada instruo de alto nvel eqivale a vrias instrues da linguagem de mquina, sendo assim mais produtiva. Ex.: Pascal, C, Algol, BASIC, Lisp, Prolog, etc. Compilador: tradutor de programas escritos em uma linguagem de programao para programas em linguagem de mquina (ex. GCC). Uma vez que o programa foi convertido para cdigo de mquina, este pode ser executado independente do compilador e do programa original.
Programa Fonte Compilador Programa Executvel Programa Executvel
Sistema Operacional
CPU
Sistema Operacional
CPU
Execuo do Programa
Interpretador: um programa que executa outros programas escritos em alguma linguagem de programao. A execuo de um programa interpretado em geral mais lenta que o programa compilado. Por outro lado, o uso de programas interpretados permite que trechos de cdigo possam ser trocados por novos facilmente, fazendo com que o programa fonte possa mudar durante sua execuo. Este um dos grandes motivos de se usar programas interpretados em sistemas especialistas. Duas linguagens para as quais podemos encontrar interpretadores so Lisp e Prolog.
Programa Fonte
Interpretador
Sistema Operacional
CPU
5. Exemplos
1) Algoritmo que indica qual dentre dois nmeros o maior1.
incio
x recebe m y recebe n
no
y maior
H um erro no algoritmo, uma vez que se x no maior que y, ento y pode ser maior ou igual a x. Sugesto: pedir para os alunos corrigirem o erro.
#include <stdio.h> void main(void) { int x, y; scanf ("%d, %d", &x, &y); if (x > y) { printf ("%d maior.", x); } else { printf ("%d maior.", y); } } Figura 8: Representao do Algoritmo em Linguagem de Programao C
2) Algoritmo de Euclides, que calcula o mximo divisor comum (MDC) de dois nmeros inteiros positivos. mdc (x, y) = mdc (y, x mod y); mdc (x, 0) = x. 3) Ordenao de uma seqncia aleatria de nmeros.
Referncias
Hennessy, John L., Patterson, David A. Organizao e Projeto de Computadores A Interface Hardware e Software, 2 edio, LTC editora. Manber, Udi. Introduction to Algorithms: A Creative Approach, Addison-Wesley, 1989, 478p. Miyazawa, Flvio K. Notas de Aula de Algoritmos e Programao de Computadores, Instituto de Computao, Unicamp, 2001, 169p. Rubira, Ceclia M. F. Notas de Aula, 1 semestre de 2000. Tramontina, Gregrio B. Aula 1 MC102 Turmas K e L, 24 de Agosto 2004.