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

Memria
ROM

Unidades de
Entrada
Unidades
de Sada

Unidade de Controle
Memrias
Secundrias

Memria
Cache

Registradores

Unidade
Lgica e
Aritmtica

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
SEQENCIAL

ESTRUTURA DE
CONTROLE
CONDICIONAL

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

Sistema
Operacional

Programa
Executvel

CPU

Programa
Executvel

Sistema
Operacional

CPU

GERAO DO PROGRAMA
EXECUO DO PROGRAMA
EXECUTVEL
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?

y maior

x 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>
voidmain(void){
intx,y;
scanf("%d,%d",&x,&y);
if(x>y){
printf("%dmaior.",x);
}
else{
printf("%dmaior.",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