Você está na página 1de 6

MC102 Algoritmos e Programao de Computadores 1 Aula Introduo Programao de Computadores

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

Figura 1: Organizao Bsica de um Computador Seqencial (Miyazawa, 2001:1)

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.

Estrutura de Controle Condicional Estrutura de Controle Seqencial Estrutura de Controle Repetitiva

Figura 3: Exemplo de estruturas de controle usadas em programao estruturada (Miyazawa, 2001:9)

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

4. Alguns Termos tcnicos


Hardware: componentes mecnicos e eletro-eletrnicos que compem o computador. Parte dura do computador. Software: seqncia de instrues e comandos que fazem o computador realizar determinada tarefa, tambm chamados de programas de computador. Devem estar armazenados em algum tipo de memria. Bit: menor unidade de informao de um computador (pode assumir os valores 0 ou 1). Bytes: conjunto de oito bits. Perifrico: qualquer componente do computador (hardware) que no seja a CPU. Ex.: leitoras de disquete, monitores, teclados, vdeos, impressoras, etc. Sistema Operacional: coleo de programas que gerencia e aloca recursos de hardware e de software. Exemplos de tarefas que um sistema operacional realiza so: leitura de dados pelo teclado, impresso de informaes no vdeo, gerenciamento da execuo de vrios

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

Gerao do Programa Executvel

Execuo do Programa

Figura 4: Etapas para execuo de um programa compilado (Miyazawa, 2001:3)

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

Figura 5: Execuo de um programa interpretado (Miyazawa, 2001:3)

5. Exemplos
1) Algoritmo que indica qual dentre dois nmeros o maior1.
incio

x recebe m y recebe n

no

x maior sim que y? x maior

y maior

Figura 6: Representao do Algoritmo usando fluxograma

Passo 1: Adote x = m e y = n; Passo 2: Se x maior que y, ento resposta x; seno resposta y.


Figura 7: Representao do Algoritmo usando pseudo-linguagem

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.

Você também pode gostar