Você está na página 1de 36

Algoritmos Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br selmini@fiap.com.

br Introduo a Programao de Computadores

www.fiap.com.br

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Introduo
O que um computador?
Mquina que processa dados; Processar significa realizar operaes nos dados de entrada de forma a extrair informaes;

Dado: tudo que pode ser processado; Informao: o resultado do processamento, descreve um domnio fsico ou abstrato; Modelo de processamento de dados:
entrada Processamento sada

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores
Basicamente todo computador pode ser dividido em seis unidades lgicas:
Unidade de entrada; Unidade de sada; Unidade de memria; Unidade lgica e aritmtica (ULA); Unidade central de controle (UC); Unidade central de processamento (UCP ou CPU central processing unit);

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores

CPU

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade de entrada


a seo receptora do computador; Ela obtm informaes de vrios dispositivos de entrada e as coloca disposio das outras unidades, para processamento; A maioria das informaes inserida nos computadores por meio de dispositivos como teclados e mouses; Outras unidades de entrada: comandos de voz, varredura de imagens e cdigos de barras, leitura de dispositivos de armazenamento secundrios e recebimento de informaes pela Internet (por exemplo, quando voc baixa vdeos do YouTube, e-books da Amazon e outros meios similares).

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade de sada


a seo de expedio do computador; Pega as informaes que foram processadas e as coloca em vrios dispositivos de sada para torn-las disponveis ao uso fora dele; A maior parte das informaes que saem de computadores hoje em dia exibida em telas, impressoras, tocadas em players de udio (como os populares iPods da Apple) ou usada para controlar outros dispositivos; Os computadores tambm podem enviar suas informaes para redes como a internet.

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade de memria


Frequentemente chamada de memria primria, a seo de armazenamento, com capacidade relativamente baixa; Retm informaes obtidas por meio da unidade de entrada (que sero processadas), e tambm informaes j processadas; As informaes na unidade de memria so volteis: elas normalmente se perdem quando o computador desligado.
7

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade lgica e aritmtica (ULA)


a seo de processamento do computador; Ela responsvel por executar clculos como adio, subtrao, multiplicao e diviso; Nos sistemas atuais, a ULA est prxima a UC, dentro da CPU;

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade central de processamento (CPU)


a seo administrativa do computador; Ela coordena e supervisiona o funcionamento das outras sees; A CPU diz unidade de entrada quando as informaes devem ser lidas para a unidade de memria, diz ULA quando as informaes da unidade de memria devem ser utilizadas em clculos e diz unidade de sada quando enviar as informaes da unidade de memria para certos dispositivos de sada;

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Organizao de computadores unidade central de processamento


Muitos dos computadores de hoje possuem vrias CPUs; Podem realizar muitas operaes simultaneamente esses computadores so chamados de multiprocessadores; Um processador multi-core executa o multiprocessamento em um nico chip integrado por exemplo, um processador dualcore tem duas CPUs e um processador quad-core tem quatro CPUs; Unidade de controle (UC): responsvel por buscar um programa na memria, instruo por instruo, e execut-lo sobre os dados de entrada.

10

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Lgica de programao
Em desenvolvimento de sistemas computacionais muito se fala em lgica de programao, mas o que lgica de programao? Lgica o que faz sentido; Ao escrever um programa devemos tomar cuidado para que os passos para resolver o problema tenham uma certa ordem de execuo e tambm uma certa coerncia, ou seja, tem que fazer sentido, tem que ter lgica; A lgica de programao a tcnica de encadear pensamentos para atingir um determinado objetivo;

11

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Lgica de programao
O encadeamento gera uma sequncia lgica; por meio da lgica de programao que definimos a sequncia lgica de passos (instrues) que o computador ir seguir para resolver um determinado problema;

12

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Teste de lgica
Joo menor que Pedro. Pedro menor que Jos. Podemos afirmar ento que:
a) Joo maior que Jos. b) Joo igual a Jos. c) Jos maior que Joo. d) No podemos afirmar nada.

Qual o prximo nmero da srie: 0,25 0,125 0,0625? Qual o prximo nmero da srie: 1 1 2 3 5 8 ?

13

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Algoritmos
A palavra algoritmos o termo central na cincia da computao e em programao de computadores; Um algoritmo uma sequncia lgica e finita de instrues para se atingir a soluo de um problema; Exemplos de algoritmos no dia-a-dia: receita de bolo, tomar banho, trocar uma lmpada, etc...; Um algoritmo no representa, necessariamente, um programa de computador, mas um programa de computador um algoritmo que foi escrito em uma linguagem de programao;
14

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Exemplo de algoritmos
Algoritmo para calcular a mdia de trs valores inteiros:
Incio Fornecer o primeiro valor inteiro; Fornecer o segundo valor inteiro; Fornecer o terceiro valor inteiro; Somar os trs valores; Pegar o resultado da soma e dividir por 3; Mostrar o resultado obtido; Fim

15

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Algoritmos
De acordo com a figura do slide 2, um algoritmo apresenta trs partes: entrada, processamento e sada; Quais so as entradas do exemplo apresentado? Qual o processamento? Qual a sada?

16

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Exemplo de algoritmos
De forma resumida, temos:
Incio Fornecer o primeiro valor inteiro; entrada Fornecer o segundo valor inteiro; Fornecer o terceiro valor inteiro; Somar os trs valores; processamento Pegar o resultado da soma e dividir por 3; Mostrar o resultado obtido; sada Fim

17

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Exemplo de algoritmos
Analise o problema abaixo e descubra qual a cor do vestido de cada senhora:
Trs senhoras: dona Branca, dona Rosa e dona Violeta passeavam pelo parque quando dona Rosa disse: No curioso que estejamos usando vestidos de cores branca, rosa e violeta, embora nenhuma de ns esteja usando um vestido de cor igual ao seu prprio nome? Uma simples coincidncia respondeu a senhora com o vestido violeta

18

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Exemplo de algoritmos
Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais um de seus trs pertences, que so: um lobo, uma cabra e um pacote de alfafa. Em cada viagem s poder ir o homem e apenas um de seus pertences. A seguinte regra dever ser respeitada: o lobo no pode ficar sozinho com a cabra e nem a cabra sozinha com o pacote de alfafa. Escreva um algoritmo para fazer a travessia dos pertences que esto em uma margem do rio para a outra (uma travessia segura).

19

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Exemplo de algoritmos
Criar um algoritmo que mova trs discos de uma torre de Hani, que consiste em trs hastes (A, B e C), uma das quais serve de suporte para trs discos de tamanhos diferentes (1, 2 e 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste. Escreva um algoritmo para resolver o problema apresentado.

20

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representao de algoritmos
Um algoritmo pode ser representado basicamente de quatro formas diferentes:
Descrio narrativa; Pseudocdigo; Grficos: fluxogramas e Nassin-Shneiderman-Chapin; Linguagens de programao.

21

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representao de algoritmos descrio narrativa


Nesta forma de representao, os algoritmos so expressos diretamente em linguagem natural (linguagem falada); Exemplo: Obter os trs valores inteiros; Somar os trs valores; Dividir o resultado da soma por trs; O resultado da diviso a mdia entre os trs valores informados.

22

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representao de algoritmos linguagem de programao


Representa uma forma de escrever os algoritmos para que um computador possa entender e executar as instrues; Exemplo de um cdigo em linguagem C:
#include <stdio.h> #include <stdlib.h> int main() { int p1, p2, p3; float m; printf(Informe o primeiro valor: ); scanf(%d, &p1); printf(Informe o segundo valor: ); scanf(%d, &p2); printf(Informe o terceiro valor: ); scanf(%d, &p3); m = (p1+p2+p3)/3; printf(O resultado %f, m); system(pause); return(0); }

23

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representao de algoritmos diagrama de NassinShneiderman-Chapin


Informar o primeiro valor p1 Informar o segundo valor p2 Informar o terceiro valor p3 Calcular a mdia M: p1 + p 2 + p3

3
M >= 6

Exibir Mdia maior que 6

Exibir Mdia menor que 6

24

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representaao de algoritmos - fluxograma


Incio

p1

p2

p3

M = (p1+p2+p3)/3

M >= 6
Aprovado Reprovado

Fim

25

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representaao de algoritmos - pseudocdigo


uma forma simples de representar algoritmos; A pseudolinguagem usa a ideia de uma linguagem de programao, mas as instrues so escritas em linguagem natural; Vantagens: foco no desenvolvimento da lgica sem regras drsticas a serem memorizadas; No h convenes e nem padronizaes;

26

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Representao de algoritos - pseudocdigo


Exemplo:
Incio inteiro p1, p2, p3 real m imprimir(Informe o primeiro valor) ler(%d, &p1) imprimir(Informe o segundo valor) ler(%d, &p2) imprimir(Informe o terceiro valor) ler((%d, &p3) m = (p1+p2+p3)/3 imprimir(a mdia , m) Fim

Inicialmente adotaremos a pseudolinguagem como forma de escrever nossos algoritmos;

27

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao
Os primeiros programas de computadores eram escritos em linguagem de mquina; Linguagem de mquina representa um conjunto de instrues que todo computador possui e, que seu processador capaz de executar; Exige conhecimento sobre o funcionamento da mquina para escrever programas corretamente; Para facilitar a programao de computadores surgiram as linguagens de programao;
28

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao
Uma linguagem de programao nada mais do que um conjunto de regras sintticas e semnticas utilizadas para escrever instrues para que o computador possa executar; O computador entende apenas a sua linguagem nativa: linguagem de mquina; Para que um programa possa ser executado, o cdigo fonte escrito em qualquer linguagem de programao deve ser traduzido para a linguagem de mquina; O processo de traduo realizado por um programa ou vrios programas;

29

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao
O processo de traduo pode ser por compilao ou interpretao; Na compilao o cdigo fonte convertido integralmente para cdigo de mquina e depois executado. A execuo mais rpida, mas o cdigo dependente da plataforma; Linguagens compiladas: C, C++, C#, VB, Dephi, etc...;

30

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao processo de compilao


Cdigo Fonte Linguagem X

Anlise lexicogrfica (Scanner) Anlise sinttica e semntica (Parser) Gerador de cdigo intermedirio

Cdigo de mquina para a linguagem X

Cdigo intermedirio e no otimizado para a linguagem X

Otimizao do cdigo intermedirio

Gerador de cdigo objeto para a linguagem X

31

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao
No processo de interpretao, o interpretador traduz cada linha do cdigo fonte para cdigo de mquina e o executa imediatamente; A traduo e a interpretao ocorrem juntas; O cdigo gerado portvel, ou seja, no depende de sistema operacional; Por outro lado, a execuo mais lenta em relao ao processo de compilao; Exemplo de linguagens interpretadas: Java, C#, Python, PHP, 32 etc...;

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Linguagem de programao
As diversas linguagens de programao podem ser classificadas em baixo nvel e alto nvel; As linguagens de alto nvel foram desenvolvidas com o propsito comercial, facilitando e agilizando o processo de desenvolvimento; Exemplo de linguagens de alto nvel: Java, C#, Dephi, VB, PHP, etc...; As linguagens de baixo nvel so linguagens onde as instrues so baseadas em linguagem de mquina; Exemplo: assembly (no assembler);
33

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Curiosidades
O primeiro programa de computador foi criada por Ada Lovelace, filha do escritor ingls Lord Byron. Foi utilizado na calculadora programvel criada por Charles Babbage; Uma das primeiras linguagens de programao para computadores foi Plankalkl, criada na Alemanha Nazista; A primeira linguagem de alto nvel amplamente usada foi Fortan (criada em 1954); O primeiro compilador foi escrito por Grace Hopper em 1952 para a linguagem de programao A-0;
34

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Curiosidades
Em 1957 foi criada B-0, sucessora de A-0, que daria origem a Flow-Matic (1958), antecessora imediata de Cobol, de 1959; A linguagem de programao Simula 67 introduz o conceito de classes;

35

Bacharelado em Sistemas de Informao Algoritmos Introduo a Programao de Computadores Prof. Dr. Antonio Marcos SELMINI profselmini@uol.com.br

Bibliografia
DEITEL, Paul, DEITEL, Harvey. C Como Programar. 6 edio. So Paulo: Pearson Prentice Hall, 2011.

36