material algoritmos e estruturas de dados - 1º bimestre

159
Eng. Comp . Eng. Comp . ALGORITMOS E ESTRUTURAS DE DADOS MATERIAL DA PRIMEIRA PROVA 2 7 / 1 0 / 2 0 2 2 1

Upload: elaine-cecilia-gatto

Post on 01-Jul-2015

1.967 views

Category:

Education


1 download

DESCRIPTION

Material Algoritmos e Estruturas de Dados - 1º Bimestre

TRANSCRIPT

Page 1: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

1

Eng.Comp.

ALGORITMOS E ESTRUTURAS DE

DADOSMATERIAL DA PRIMEIRA

PROVA

Page 2: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

2

Informática

• O termo foi criado na França em 1962. • information automatique = informação automática.• Definição: é a ciência que estuda o tratamento

automático e racional da informação; encarregada pelo estudo e desenvolvimento de máquinas e métodos para processar informação.

• Principais funções:– Desenvolvimento de novas máquinas;– Desenvolvimento de novos métodos de trabalho;– Construção de aplicações automáticas existentes.

Page 3: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

3

Computação

• A palavra computador vem de computar que tem sua orgiem no latim do verbo computare qu significa contar ou calcular. Portanto, um computador, no sentido mais geral, é qualquer recurso, ou equipamento que ajude o homem a contar ou calcular.

• É um dispositivo físico capaz de realizar cálculos e fazer decisões lógicas com uma velocidade de milhões e até bilhões de vezes mais rápida do que o homem pode fazer e com grande precisão, desde que receba as instruções adequadas.

Page 4: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

4

Computação

• Por que surgiu a computação? – A computação surgiu da idéia de auxiliar o

homen nos trabalhos rotineiros e repetitivos – cálculos e gerenciamento. É uma ferramenta útil e necessária.

• Vantagens:– Rapidez de execução;– Confiabilidade dos resultados obtidos –

precisão;– Grande capacidade de armazenamento de

informações.

Page 5: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

5

Evolução dos modernos equipamentos de computação

• É comum se dividir em gerações os computadores de acordo com a tecnologia dos componentes usados em seus circuitos eletrônicos.

• Com base nessa tecnologia e mais no critério de que esses computadores tenham sido projetados para serem comercializados, é possível estabelecer dados aproximados para início e término de cada geração.

• Na verdade, a divisão de computadores em gerações é muito mais complexa e se baseia na análise de diversas outras características, principalmente as funcionais.

• Todavia a escolha da tecnologia dos componentes como critério, é um bom ponto de partida.

Page 6: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

6

1940 – 1952

• 1ª Geração de Computadores:

– É constituído por todos os computadores construídos à base de válvulas à vácuo e cuja aplicação fundamental se deu nos campos científicos e militar. Exemplo: IBM 360, MARK I e UNIVAC.

Page 7: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

7

1952 – 1964

• 2ª Geração de Computadores:

– A substituição de válvula pelo transistor deu início à chamada segunda geração de computadores. Utilização de linguagens de alto nível: cobol, fortan, algol. Exemplos: IBM 1401, IBM 7094.

Page 8: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

8

1964 – 1971

• 3ª Geração de Computadores:

– Nesta geração, o elemento mais significativo é o circuito integrado – CI. Surgido em 1964 e que consiste no encapsulamento de uma grande quantidade de componentes discretos – resistências, condensadores, diodos, transistores – instalando-se um ou vários circuitos numa pastilha de silicone. Tecnologia SSI – integração em baixa escala – e MSI – integração em média escala. Grandes desenvolvimentos dos sistemas operacionais. Exemplos: UNIVAC 1108, IBM 360.

Page 9: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

9

1971 – 1981

• 4ª Geração de Computadores:

– Em 1971 aparece o microcomputador, que consiste na inclusão de toda a CPU de um computador num único circuito integrado. LSI – integração em grande escala. Microcomptuadores; redes. Exemplos: IBM 3090, PC.

Page 10: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

10

1981 – ?

• 5ª Geração de Computadores:

– Componentes em:

• Altíssima escala de integração VLSI• Ultra grande escala de integração ULSI• Altíssima velocidade de processamento• Processamento paralelo

Page 11: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

11

Esquema do pessoal de informática

• O pessoal de informática pode ser classificado em:• Direção: encarregado de dirigir e coordenar uma

central de processamento de dados – CPD – para obter um bom rendimento da equipe.

• Análise: encarregado do desenvolvimento de aplicações no que diz respeito ao projeto e desenvolvimento de algoritmos. Dar apoio técnico aos usuários.

• Programação: encarregado de transcrever para linguagem de computador os algoritmos elaborados na fase de análise.

• Implementação e operação: execução dos programas, distribuíção dos resultados e mantenção diária dos sitemas existentes.

Page 12: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

12

Sistema de computação• Um sistema de computação é formado por usuários, software e

hardware. O objetivo é processar dados. Processamento de dados: execução de processos sobre o dados original, para transformá-lo em uma informação.

HARDWARE SOFTWARE

USUÁRIOS

ENTRADA PROCESSAMENTO SAÍDA

ARMAZENAMENTO

Page 13: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

13

Software: conceitos básicos

• Software ou Programa é a parte lógica que data o equipamento físico com a capacidade par realizar algum trabalho. O programa nada mais é do que uma sequencia de instruções escritas em uma linguagem de programação, informando ao hardware o que fazer em que ordem. O software pode ser dividido em dois grandes grupos de programas: os básicos e os aplicativos.

• Softwares básicos são software destinados à operar e manter um sistema de computação. Incluem-se nesta categoria os sistemas operacionais – SO, os utilitários, os compiladores e os interpretadores.

Page 14: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

14

Sistema Operacional

• É o software que controla o hardware, atuando como interface entre o computador e o usuário.

• É responsável pelo trafego dos dados entre os componentes do sistema e por checar ininterruptamente todos os dispositivos do computador para tomar atitudes baseadas nas detecções feitas.

• Cada linha de computadores tem o seu próprio SO. Exemplos: DOS, OS/2, SYTE 7, UNIX.

• Alguns Sos começaram a englobar um ambiente operacional, que permite uma interface gráfica com o usuário,multiplas janelas na tela, como por exemplo o windows 95 e 98.

• Os Sos podem ser classificados em diversas categorias.

Page 15: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

15

Sistemas multitarefa e monotarefa

• Monotarefa: – permite a execução de um único programa

aplicativo. Somente um programa pode ser carregado para a memória.

• Multitarefa: – permite que vários programas aplicativos

sejam carregados para a memória. Somente um deles está ativo em um determinado instante, porém, todos estão disponíveis para uso. Exemplo: windows 95.

Page 16: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

16

Sistemas monousuário e multiusuário

• Monousuário:– Permite que apenas um usuário trabalhe

com ele.

• Multiusuário:– Diversas pessoas, usando terminais ou

micros em rede, usam os recursos de um computador central.

Page 17: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

17

Sistemas multiprocessados

• São máquinas mais sofisticadas que possuem diversas CPUs para agilizarem o processamento, executando várias tarefas simultaneamente, uma em cada CPU. Exemplo: windows NT, UNIX, etc.

• Utilitários ou programas auxiliares: são programas que ajduam a manter e aumentar a eficiência de um sistema de computação, como os utilitários de compactação de arquivos, protetores de tela, etc. Exemplo: Norton Utilities, PKZIP, etc.

Page 18: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

18

Sistemas multiprocessados

• Compilador: traduz o programa fonte escrito em uma linguagem de alto nível – por exemplo, Pascal – para a linguagem de máquina, gerando o programa executável que o computador consegue entender e processar diretamente.

• Interpretador: interpreta cada comando de programa fonte e executa as instruções que a ele correspondem, sem gerar um programa executável. Mais lentos que os compiladores.

Page 19: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

19

Linguagem de programação

• É um conjunto de regras que permitem ao homem escrever os programas – conjunto de instruções – que ele deseja que sejam executadas pelo computador.

Page 20: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

20

Linguagem de Máquina

• É um conjunto de instruções capazes de ativar diretamente os dispositivos eletrônicos do computador. Ela é constituída somente por zero ou um, o que dificulta a leitura e a compreensão pelas pessoas.

• Bit: binary digit ou digito binário, 0 ou 1. É a menor unidade de informação e apresenta dois estados identificáveis. Sim ou não, chave ligada ou desligada.

• Byte: é um conjunto de 8 bits, e constitui a unidade de medida básica e universal para a capacidade de armazenamento de todos os dispositivos do computador.

Page 21: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

21

Linguagem de Máquina

• Cada byte armazena o equivalente a um caracter.

• Os bytes são contados em potência de 2 e as unidades mais usadas são:

• 1 Kilo byte – bytes – 1024 bytes• 1 Mega byte – bytes – 1.048.576 bytes• 1 Giga byte - bytes• 1 Tera byte - bytes

Page 22: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

22

Programas aplicativos

• São programas especializados e que realizam tarefas específicas, como processador de textos, planilha eletrônica, gerenciador de banco de dados, folha de pagamento, controle de estoques, etc.

Page 23: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

23

Hardware

• É a parte física de um sistema de computação, ou seja, todos os elementos materiais que o compõem – circuitos eletrônicos, dispositivos mecânicos, elétricos e magnéticos, etc.

• Componentes básicos de um computador:– Dispositivo de entrada e saída – periféricos;– Memória;– Unidade central de processamento – UCP;

• Dispositivos de entrada: serve para receber os dados e programas preparados pelo homem e transformá-los em sinais eletromagnéticos – bits – manipuláveis pelo computador.

Page 24: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

24

Hardware

• Memória: é o dispositivo que armazena informações. Existem dois tipos principais de memória: memória principal ou central e memória auxiliar ou secundária.

• Memória principal ou central: é a memória interna do computador, caracterizada por ser de alta velocidade. Encarregada de armazenar os programas e dados necessários para que o sistema realize um determinado trabalho. É constituída principalmente por RAM e ROM.

• RAM – random access memory ou memória de acesso aleatório: Onde ficam armazenados os dados, os resultados intermediários onde ficam os programas que estão sendo executados pela UCP.

Page 25: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

25

Hardware

• ROM – ready only memory ou memória exclusivamente de leitura: Onde as informações são gravadas uma única vez, geralente pelo fabricante e nunca mais são alteradas. A memória ROM é não volátil, isto é, mesmo com o desligamento do computador, as informações nela contidas não são perdidas.

• PROM: não pode ser alterada – circuitos internos.• EPROM: luz ultravioleta – apaga e remove, programada.• EAROM: tensão em um dos pinos, processos elétricos –

altera e romove.• Memória auxiliar: é um dispositivo de armazenamento

de longo prazo, no qual o computador armazena dados que poderão ser posteriormente utilizados.

Page 26: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

26

Unidade central de processamento

• É a principal unidade de controle e processamento de um computador. Tem como funções coordenar, controlar e realizar todas as operações do sistema. É constituída por:– Unidade lógica e aritmética – ULA: realiza todos os

cálculos – operações aritméticas e lógicas.– Unidade de controle – UC: controla as intruções

dos programas que estão na memória, fazz com que o dispositivo de entrada leia os dados, tranfira os valores adequados da memória para a ULA, armazena e recupera dados e resultados intermediários armazenados na memória e passa os resultados para o dispositivo de saída.

Page 27: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

27

Números Binários

• Os números binários compõem o sitema numérico de base 2, e é formado por zeros e uns (0 e 1). Os numeros binários foram adotados nos computadores por motivos de precisão e economia, pois construir um circuito eletrônico capaz de detectar a diferença entre dois estados – presença ou ausência de corrente elétrica – é muito mais fácil e barato do que construir um circuito que detecte a difrerença entre dez estados diferentes.

Page 28: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

28

História e Evolução da Computação

Page 29: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

29

Histórico e evolução

A primeira tentativa bem-sucedida de criar uma máquina de contar foi o ÁBACO.

Page 30: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

30

Histórico e evolução

O primeiro instrumento moderno de calcular – na verdade, uma somadora – foi construído pelo físico, matemático e filósofo francês Blaise PASCAL, em 1642.

Page 31: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

31

Histórico e evolução

JACQUARD desenvolveu os cartões perfurados para entrada de dados.

Page 32: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

32

Histórico e evolução

MÁQUINA de BABBAGE Base do funcionamento de um

computador:– Alimentação de dados, através de cartões

perfurados.– Uma unidade de memória, onde os

números podiam ser armazenados e reutilizados.

– Programação sequencial de operações – hoje chamado de sistema operacional.

Page 33: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

33

Histórico e evolução

Herman HOLLERITH

- Juntou os cartões de Jacquard e o conceito de impulsos elétricos para transmissão de dados.

- Reconhecimento no censo americano de 1890.

- Tempo muito menor gerando economia.

Page 34: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

34

Histórico e Evolução

Guerra e Computação: o que tem a ver?

- As guerras trouxeram para a computação um enorme desenvolvimento.

- Os governos incentivaram o desenvolvimento de equipamentos que pudessem calcular trajetórias precisas, construir mísseis, e etc...

Page 35: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

35

Histórico e evolução

Alan TURING cria o Colossus, máquina que, uma vez plugada, programada e alimentada, resolvia qualquer questão de criptografia em poucos minutos.

Page 36: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

36

Histórico e evolução

ENIAC (Eletronic Numerical Integrator And Computer)

O computador mais famoso desta época. Foi construído em 1946.– 17.840 válvulas– Pesava 4 toneladas– 30 metros de comprimento e 3 metros de

altura– Ocupava área de 180 m2

– Capacidade de 5.000 somas por segundo

Page 37: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

37

Histórico e evolução

ENIAC

Page 38: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

38

Histórico e evolução

MARK

O Mark também reivindica o título de primeiro computador.

Page 39: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

39

Page 40: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

40

Page 41: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

41

Eng.Comp.

E hoje??E o futuro??

Page 42: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

42

Computador ou Tablet?

Page 43: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

43

Computação nas Nuvens

Page 44: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

44

TI VERDE

Page 45: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

45

Lógica de programação

• Significa o uso correto das leis de pensamento, da “ordem de razão” e de processos de raciocínio e simbolização formais na programação de computadores, objetivando racionalidade e o desenvolvimento de técnias que cooperem para produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

• Programação: é responsável pela instrução do computador do que e de como um problema deve ser resolvido.

• Algoritmo: é uma sequencia ordenada e sem ambiguidade de passos que visam atingir um objetivo bem definido e, consequentemente levam à solução de um problema.

Page 46: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

46

Lógica de programação

• Em um algoritmo, é importante salientarmos:– Deve descrever exatamente quais são as

instruções que devem ser executadas e em que sequencia;

– Eficiente: resolve o problema com o mínimo de recursos;

– Eficaz: consegue resolver o problema em qualquer situação. Todas as situações de exceção, que possa alterar o comportamento do algoritmo devem ser especificados e tratados.

Page 47: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

47

Como construir um algoritmo

Problema

Análise Preliminar

Solução

Teste de qualidade Alteração

Produto Final

Entenda o problema com a maior precisão possível

Desenvolva um algoritmo para resolver o problema

Execute o algoritmo para vários testes cujos resultados sejam conhecidos Algoritmo pronto para ser

aplicado – implementado

Se o resultado não for satisfatório, altere o algoritmo e teste novamente

Page 48: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

48

Exemplo

• Algoritmo para troca de uma lampada queimada.1. Remova a lâmpada queimada2. Coloque um a nova lâmpada

• Detalhando ou refinando os passos:– Vamos trocar uma lâmpada de rosquear. Se a lâmpada está

queimada não é necessário fazer o teste se está ou não funcionando. Temos uma lâmpada em casa igual àquela que queimou – voltagem e potência. Temos uma lâmpada para trocar pela outra. Temos uma escada para auxiliar na troca.

• Sempre enumerar os passos a serem executados.

• Primeiro fazer a grosso modo e depois detalhar.

Page 49: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

49

Exemplo

1.1. Coloque uma escada embaixo da lâmpada queimada.1.2. Suba na escada até alcançar a lâmpada queimada.1.3. Gire a lâmpada queimada no sentido anti-horário até que ela se solte.2.1. Escolha uma nova lâmpada da mesma potência/vontagem da queimada.2.2. Posicional a lâmpada nova no soquete.2.3. Gire a lâmpada no sentido horário, até que ela se firme.2.4. Desça da escada.

Page 50: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

50

Exemplo

• Ordenando os passos:1.1. Coloque uma escada embaixo da lâmpada queimada.2.1. Escolha uma nova lâmpada da mesma potência/vontagem da queimada.1.2. Suba na escada até alcançar a lâmpada queimada.1.3. Gire a lâmpada queimada no sentido anti-horário até que ela se solte.2.2. Posicional a lâmpada nova no soquete.2.3. Gire a lâmpada no sentido horário, até que ela se firme.2.4. Desça da escada.

Page 51: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

51

Detalhando mais ainda os passos – versão 1

1. Coloque uma escada embaixo da lâmpada queimada.2. Escolha uma lâmpada nova.3. Enquanto a potência/voltagem não for a mesma da queimada.

– Descarte a lâmpada escolhida.– Escolha outra lâmpada.

4. Suba um degrau da escada.5. Enquanto não possa alcançar a lâmpada queimada

– Suba um degrau da escada.6. Gire a lâmpada no sentido anti-horário.7. Enquanto a lâmapda nao estiver livre do soquete

• Gire a lâmpada no sentido anti-horário.8. Posicione a nova lâmpada no soquete.9. Gire a lâmpada no sentido horário.10. Enquanto a lâmpada não estiver firme no soquete.

– Gire a lâmpada no sentido horário.11. Desça da escada.

Page 52: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

52

Detalhando mais ainda os passos – versão 2

1. Coloque uma escada embaixo da lâmpada queimada.2. Escolha uma lâmpada nova.3. Enquanto a potência/voltagem não for a mesma da queimada.

– Descarte a lâmpada escolhida.– Escolha outra lâmpada.

4. Suba um degrau da escada.5. Enquanto não possa alcançar a lâmpada queimada

– Suba um degrau da escada.6. Gire a lâmpada no sentido anti-horário.7. Enquanto a lâmapda nao estiver livre do soquete

• Gire a lâmpada no sentido anti-horário.8. Posicione a nova lâmpada no soquete.9. Gire a lâmpada no sentido horário.10. Enquanto a lâmpada não estiver firme no soquete.

– Gire a lâmpada no sentido horário.11. Desça um degrau da escada.12. Enquanto não possa alcançar o chão.

– Desça um degrau da escada.

Page 53: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

53

Estrutura condicional

Se condiçãoEntão

Comandos 1Senão

Comandos 2

Page 54: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

54

Tipos de dados• O objetivo principal de qualquer computador é a resolução de

problemas através da manipulação de dados, que podem ser de vários tipos.

• Tipos primitivos: tipos de dados básicos utilizados na construção de algoritmos.– Inteiro: informação pertencente ao conjunto dos números

inteiros. Exemplo: -10, 0, 5, 100.– Real: informação pertencente ao conjunto dos números

reais. Exemplo: 5.2 (tem que usar ponto e não vírgula), -3.93, 0.0, 7.

– Caracter: informação composta por um conjunto de caracteres alfanuméricos. Exemplo: ‘a’, ‘ABC’, “F10B5’, ‘$?!5’.

– Lógico: informação que pode receber (assumir) apenas dois valores possíveis: verdadeiro (V) ou falso (F).

Page 55: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

55

Tipos de dados

• Constante: um dados é constante quando não se modifica durante a execução do algoritmo (programa). Pode ser de qualquer tipo primitivo.

• Variáveis: um dado é variável quando possui um conteúdo (valor) que pode variar durante a execução de algoritmo (programa).

• Embora a variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Toda variável é conhecida no algoritmo por um nome ou identificador. Ele é formado por uma única letra ou então por uma letra seguida de letras ou dígitos. Exemplo: X, Y, Z, salário, ano, etc.

Page 56: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

56

Observações

• O cálculo – em computação – é feito com dados, geralmente são números, porém podem ser caracteres. O computador faz cálculos, o programa executa as instruções que damos. Dados são jogados dentro da variável ou constante.

• Tipos primitivos são utilizados no algoritmo, porque já vem definido na linguagem. A maioria das linguagens utilizam os quatro tipos de dados.

• Tipo inteiro: números dos conjuntos dos números inteiros, positivos, negativos e nulos.

• Números naturais: só números inteiros positivos.• Tipo real: mais abrangentes, casas decimais. A casa

decimal é representada por ponto e não vírgula.

Page 57: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

57

Observações

• Os números inteiros está contido no conjunto dos números reais.

• O caracter tem que vir com apóstrofo – ou aspas simples – ‘ABC’ – cadeia de caracteres.

• Tipo lógico: ou é verdadeiro ou é falso. Por exemplo: x = 7 > 2, então x = V.

• Tipo constante: espaço de memória onde o dado é jogado e não muda o valor. Exemplo: pi = 3.14.

• Variável: espaço de memória do computador onde é guardado um dado e pode ser alterado.

• Cada espaço tem um nome obrigatoriamente. Três espaços de memória para três variáveis.

Page 58: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

58

Observações

• Se chama variável porque os valores podem se alterar. Só precisa saber o nome da variável.

• Geralmente a variável terá um nome parecido com o programa – nome sugestivo.

• O DOS só reconhece 8 digítos – caracteres. • O tamanho do espaço – ou seja, bytes de

memória – vai variar conforme o tipo das variáveis.

• O número máximo para os números inteiros são (faixa de valores): -32.756 a 32.756.

Page 59: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

59

Observações

Memória

7 -3 X

2 0 Y

-5 1 Z

O 7 é apagado e substituído por -3. Só podemos guardar um valor em cada espaço.

X = 7Y = 2Z = -5

X = -3Y = 0Z = 1

Page 60: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

60

Expressões aritméticas

• São expressões em que os operadores são aritméticos e os operandos são constantes e/ou variáveis numéricos.

Operadores Aritméticos

Operador Função

+ Adição

- Subtração

* Multiplicação

/ Divisão

Operadores Aritméticos

Operador Função

pot(x,y) Potenciação. Ex: pot(2,3) = 8

rad(x,y) Radiciação. Ex: rad(4) = 2

sqrt(x) sqrt(4)

mod Resto da divisão. Ex: 9 mod 4 = 1

div Quociente da divisão. Ex: 9 div 4 = 2

sqr(x) Quadrado de x. Ex: sqr(4) = 16

Page 61: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

61

Prioridades

Parenteses mais internospot rad sqr* / div mod+ - Exemplo:

pot(5,2) – 4/2 + rad(1+3*5)/2pot(5,2) – 4/2 + rad(1+15)/2

pot(5,2) – 4/2 + rad(16)/225 – 4/2 + rad(16)/2

25 – 2 + 4/225 – 2 + 2

23 + 225

Page 62: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

62

Expressões lógicas

• São expressões cujos operadores são lógicos, ou relacionais e cujos operandos são relações, constantes e/ou variáveis do tipo lógico.

• Operadores relacionais: são utilizados para realizar comparações entre dois valores do mesmo tipo. Estes valores podem ser constantes, variáveis ou expressões aritméticas.

Operador Função

= Igual a

> Maior que

< Menor que

> = Maior ou igual a

< = Menor ou igual a

< > Diferente

Page 63: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

63

Expressões lógicas

• O resultado obtidode uma expressão realcional é sempre um valor lógico – V ou F. Exemplo:

2 * 4 = 24 / 38 = 8

VOperadores Lógicos:

Operador Função

Não ( ~ ) Negação

E ( ^ ) Conjunção

Ou ( v ) Disjunção

Page 64: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

64

Tabelas verdade

• Sejam p e q proposições:Negação

p não p

V F

F V

Conjunção

p q p e q

F F F

F V F

V F F

V V V

Disjunção

p q p ou q

F F F

F V V

V F V

V V V

O resultado de uma expressão lógica é sempre um valor lógico – V ou F.

Prioridades:

nãoe ou

Prioridades entre todos os parênteses:

Parênteses mais internosOperadores aritméticosOperadores relacionaisOperadores lógicos

Page 65: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

65

Exemplos

d = sqr(b) – 4 * a * c

2 < 5 e 15 / 3 = 52 < 5 e 5 = 5V e VV

∆=𝑏2−4 𝑎𝑐

Page 66: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

66

Exemplos

não V ou pot(3,2) / 3 < 15 - 35 mod 7não V ou 9 / 3 < 15 - 35 mod 7 (operadores atitméticos)

não V ou 3 < 15 - 35 mod 7 (operadores atitméticos)não V ou 3 < 15 - 0 (operadores relacionais)

não V ou 3 < 15 (operadores relacionais)não V ou V (operadores lógicos)

F ou V (operadores lógicos)V

Page 67: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

67

Exemplos

não ( 5 < > 10 / 2 ou V e 2 – 5 > 5 – 2 ou V )não ( 5 < > 5 ou V e 3 > 3 ou V )

não ( F ou V e F ou V )não ( V e F ou V )

não ( F ou V )não ( V )

F

Page 68: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

68

Paradigmas de Programação

• Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa.

Page 69: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

69

Paradigma Imperativo ou Procedural

• Primeiro faça isso e depois faça aquilo

• Sequência de comandos passo-a-passo

• Algol, Basic, C e Pascal

Page 70: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

70

Paradigma Declarativo ou Funcionais

• Qual é o problema?

• Descrever um problema, sem se preocupar com qual algoritmo será utilizado para resolvê-lo.

• Algoritmo “universal”, capaz de solucionar qualquer problema. O problema se adapta a esse algoritmo, e não o contrário.

• Baseia-se em verdades universais e regras de inferência.

• Linguagem Prolog;

Page 71: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

71

Paradigma funcional

• Subdividir o problema em outras funções e resolver cada uma separadamente, pois os resultados encontrados serão utilizados posteriormente.

• Sobre o paradigma funcional, é fácil ilustrar através de um fluxograma.

• Cada bloco recebe no topo uma entrada de dados e retorna, na base, os dados de saída.

• A solução geral é dividida em várias funções que, no final, se associam para mostrar o resultado na tela.

• Linguagem Haskell

Page 72: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

72

Paradigma orientado a objetos

• Um conjunto de classes faz a interação entre objetos (instâncias) e, com a troca de mensagens entre eles, forma-se o software como um todo.

• Linguagem Java

Page 73: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

73

Outros

• Linguagens de scripts• Linguagens para banco de dados• Linguagens para simulação• Linguagens visuais• Etc

Page 74: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

74

Linguagens de Baixo Nível

• Linguagem Assembly• São linguagens simbólicas ou código

de máquina• Abstração de dados baixa

Page 75: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

75

Linguagens de Médio Nível

• São linguagens dificieis de programar pois estão tanto na camada mais alta quanto na mais baixa

• Abstração de dados média

• Linguagem C

Page 76: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

76

Linguagens de Alto Nível

• São mais fáceis de programar

• O programador não precisa saber vários detalhes sobre o computador para usar estas linguagens

• Abstração de dados alta

• Linguagem Java

Page 77: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

77

Interpretação e Compilação

• Ambos são tradutores de código• Interpretador não gera executável• Compilador gera executável• Interpretador interpreta as linhas de

código e não mostram erros• Compilador analisa a gramática e

sintaxe da linguagem e aponta erros. Só funciona, de fato, depois que os erros são eliminados.

Page 78: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

78

Introdução

• Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas.

• Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica.

• Por outro lado existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as idéias principais do algoritmo, dificultando seu entendimento.

Page 79: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

79

Introdução

• Dentre as formas de representação de algoritmos mais conhecidas podemos citar:

• Descrição Narrativa;• Fluxograma Convencional;• Pseudocódigo, também conhecido

como Linguagem Estruturada ou Portugol.

Page 80: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

80

Narração Descritiva

• Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplo de uma receita de bolo:

– Misture os ingredientes– Unte a forma com manteiga– Despeje a mistura na forma– Se houver coco ralado– então despeje sobre a mistura– Leve a forma ao forno– Enquanto não corar– deixe a forma no forno– Retire do forno– Deixe esfriar

Page 81: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

81

Narração Descritiva

• Exemplo de um pneu furado:

– Troca de um pneu furado:– Afrouxar ligeiramente as porcas– Suspender o carro– Retirar as porcas e o pneu– Colocar o pneu reserva– Apertar as porcas– Abaixar o carro– Dar o aperto final nas porcas

Page 82: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

82

Narração Descritiva

• Exemplo do cálculo da média de um aluno:

– Cálculo da média de um aluno:– Obter as suas 2 notas de provas– Calcular a média aritmética– Se a média for maior que 7,– o aluno foi aprovado,– senão ele foi reprovado

Page 83: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

83

Narração Descritiva

• Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões.

• Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas.

• Uma instrução mais precisa seria: "afrouxar a porca, girando-a 30º no sentido anti-horário".

Page 84: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

84

Fluxograma

• É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos.

• Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade.

• Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa.

• Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo.

• Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma fita magnética ou um monitor de vídeo.

Page 85: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

85

Fluxograma

• O pacote office possui os símbolos do fluxograma. Na aba INSERT, na parte ILLUSTRATIONS, existe o botão SHAPES. Na setinha aparecem os símbolos de desenho, entre eles o FLOWCHART, ou FLUXOGRAMA.

Page 86: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

86

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Process ou Processo

Representa todo tipo de ação (em Matemática seriam as Operações Aritméticas e Lógicas, a Atribuição, etc).

Process Alternate ou Processo Alternativo

Raramente utilizado, indica uma forma diferente de se fazer o mesmo processo.

Decision ou Decisão

Uma ação que é efetuada de acordo com uma condição. Exemplo: Se o aluno tirou nota 7, então ele está aprovado, caso contrário, está reprovado.

Data ou Dados Representa o símbolo de dados, entrada e saída simultaneamente.

Predefined Process ou Processo Pré-

DefinidoRaramente utilizado. Processo já conhecido que será aplicado ao fluxo.

Page 87: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

87

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Document ou Documento

Símbolo utilizado para indicar a criação de um documento.

Multi-Document ou Múltiplos Documentos

Símbolo utilizado para indicar a criação de vários documentos.

Terminator ou Terminador Utilizado para inicar e terminar o fluxograma

Preparation ou Preparação Raramente utilizado.

Manual Input ou Entrada Manual

Corresponde à instrução de entrada de dados através do teclado. Atualmente é considerado o símbolo para qualquer entrada de dados.

Page 88: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

88

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Manual Operation ou Operação Manual

Raramente utilizado. Corresponde à operação manual de algum processo.

Connector ou Conector Raramente utilizado.

Off-Page Connector ou Conector Fora de

Página Raramente utilizado.

Card ou Cartão Símbolo que corresponde ao cartão perfurado, que não é mais utilizado atualmente.

Punched Tape ou Fita Perfurada

Símbolo que corrresponde à fita perfurada, que não é mais utilizada atualmente.

Page 89: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

89

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Summing Junction ou Somador Tem a função da tabela verdade E.

OR – OU Tem a função da tabela verdade OU.

Collate ou Agrupamento Símbolo utilizado para agrupar dados.

Sort ou Classificação Símbolo utilizado para classificar os dados, por exemplo, em ordem alfabética

Seta de Fluxo Indica para onde está indo a informação

Page 90: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

90

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Internal Storage ou Armazenamento

InternoRaramente utilizado. Símbolo que representa o armazenamento em memória.

Extract ou ExtraçãoSímbolo utilizado para extração de dados. Em banco de dados, através de comandos SQL, conseguir extrair algumas informações, até então tidas como desconexas, da base de dados.

Merge ou Mesclar Símbolo utilizado para mesclar os dados. No excel, esse “comando” transforma duas colunas em uma.

Stored Data ou Dados Armazenados Referente aos dados que estão guardados.

Delay ou AtrasoReferente à tempo de atraso. Por exemplo, quanto tempo o resultado de uma conta, vai ficar aparecendo na tela?

Page 91: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

91

FluxogramaSÍMBOLO FUNÇÃO DESCRIÇÃO

Sequential Storage Access ou

Armazenamento de Acesso Sequencial

Símbolo para armazenamento de dados de forma sequencial, significa que os dados serão acessados na ordem na qual foram armazenados.

Magnetic Disk ou Disco Magnético

Símbolo para armazenamento de dados, no caso o disco rígido (HD)

Direct Access Storage ou Armazenamento

de Acesso Direto

Símbolo para armazenamento de dados direto, significa que os dados podem ser recuperados diretamente sem passar por outros dados na seqüência.

Display ou Exibição É considerado também o símbolo para SAÍDA de dados, como uma impressora ou monitor.

Page 92: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

92

Exemplos

• Exemplo 1:

– Desenvolva uma solução para o problema a seguir utilizando as formas de representação “descrição narrativa”, “fluxograma” e “algoritmo” para demonstrar o seu raciocínio.

– Problema: O software (ou programa) a ser desenvolvido deve solicitar ao usuário dois números do tipo real. O usuário deve digitar esses números. Em seguida, o programa deve somar esses números e apresentar o resultado na tela.

Page 93: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

93

Exemplos• Exemplo 1:

– Solução:• Descrição narrativa:

– Apresentar na tela uma mensagem para o usuário, informando-o que deverá digitar dois números do tipo real.

– Após ler a mensagem, o usuário deverá inserir os números, através do teclado, que serão lidos e armazenados em duas variáveis diferentes;

– Em seguida, será aplicada a operação de soma nos dois operandos, isto é, nos dois números que foram inseridos pelo usuário, sendo o resultado armazendo em uma terceira variável;

– O resultado será então apresentado na tela para o usuário por um período de tempo, finalizando assim o programa.

Page 94: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

94

Fluxograma• Exemplo 1:

– Solução:• Fluxograma:

INÍCIO

“Digite dois números do

tipo real”

Leia X Leia Y

Z = X + Y

30 segundos

FIM“O resultado

da soma entre X e Y é Z”

Page 95: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

95

Fluxograma• Exemplo 1:

– Solução:• Algoritmo:

1. Início do algoritmo;2. Apresentar na tela a seguinte mensagem para o usuário:

“Digite dois números do tipo real”;3. Ler o número X e ler o número Y;4. Somar o número X com o número Y;5. Colocar o resultado em Z;6. Apresentar na tela a seguinte mensagem para o usuário:

“A soma entre os números X, ‘X’, e Y, ‘Y’, é Z, ‘Z’ ”.7. Manter a mensagem na tela por 30 segundos.8. Fim do algoritmo

Page 96: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

96

Exemplos

• Exemplo 2:

– Desenvolva uma solução para o problema a seguir utilizando as formas de representação “descrição narrativa”, “fluxograma” e “algoritmo” para demonstrar o seu raciocínio.

– Problema: O software (ou programa) a ser desenvolvido deve solicitar que o usuário digite as quatro notas que obteve em suas quatro provas. O usuário deve digitar esses números que são do tipo real. Em seguida, o programa deve fazer a média desses números e apresentar o resultado na tela.

Page 97: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

97

Exemplos• Exemplo 2:

– Solução:• Descrição narrativa:

– Apresentar na tela uma mensagem para o usuário, informando-o que deverá digitar os valores das notas das quatro provas que realizou.

– Após ler a mensagem, o usuário deverá inserir os números, através do teclado, que serão lidos e armazenados em quatro variáveis diferentes;

– Em seguida, será aplicada duas operações;» uma que soma os quatro operandos e armazena o

resultado em uma variável SOMA;» outra que divide o resultado da SOMA pelo valor 4

(quatro) e armazena o resultado da variável em MÉDIA;

– O resultado, MÉDIA, será então apresentado na tela para o usuário por um período de tempo, finalizando assim o programa.

Page 98: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

98

Fluxograma• Exemplo 2:

– Solução:• Fluxograma:

INÍCIO

“Digite os valores das

quatro provas”

Leia X, Y, Z, W

SOMA = X + Y + Z + W

30 segundosFIM “A nota final do

aluno é: , MÉDIA”

MÉDIA = SOMA / 4

Page 99: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

99

Fluxograma• Exemplo 2:

– Solução:• Algoritmo:

1. Início do algoritmo;2. Apresentar na tela a seguinte mensagem para o usuário:

“Digite as quatro notas das provas (tipo real)”;3. Ler os números X, Y, Z e W;4. Somar os números X, Y, Z e W;5. Colocar o resultado em SOMA;6. Dividir a SOMA por 4;7. Colocar o resultado em MÉDIA;8. Apresentar na tela a seguinte mensagem para o usuário: “A

média final do aluno é: , MÉDIA”;9. Manter a mensagem na tela por 30 segundos;10. Fim do algoritmo.

Page 100: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

100

Comandos para construção de algoritmos em pseudocódigo

Page 101: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

101

Declaração de variáveis

• Permite definir o nome das variáveis e o tipo de dado que elas poderão armazenar.

tipo: identificador;

Ex.:

inteiro: A; real: altura, peso;

Page 102: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

102

Comando de atribuição

• Permite que se forneça (atribua) um valor a uma determinada variável. O tipo do dado deve ser compatível com o tipo da variável.

Identificador expressão;

• Ex.:

A 7;Altura 1, 70;Peso 60;A 3 + 2;Peso altura * 10;

Page 103: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

103

Comandos de entrada e saída: Entrada de dados.

leia (identificador);• Sua finalidade é atribuir o dado a ser fornecido

pelo usuário à variável identificada. Sendo:• identificador: o nome da variável ou variáveis,

cujos conteúdos serão mostrados.• expressão: um valor ou valores que serão

mostrados aos usuários através de um dispositivo de saída.

• Ex.:escreva(A);escreva(‘você pesa’, pesa, ‘quilos’);

Page 104: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

104

Blocos

• Um bloco pode ser definido como um conjunto de ações, uma ação definida.

Inicio....fim

Page 105: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

105

Exemplo

inteiro: x, y;real: z;leia(x);escreva(x, ‘elevado ao cubo=’, pot(x,3));leia(y);escreva(x+y);z x*y;escreva(z);z z+1;x (y+x)mod2;

Considere as seguintes entradas para o algoritmo em questão:

x = 5y = 10

Rastreie o algoritmo e mostre quais são os valores armazenados nas variáveis em cada passagem e qual a saída na tela.

Page 106: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

106

Exemplo Memória

x 5 1

y 10

z 50 51

TELA

5 <enter>5 elevado ao cubo = 12510 <enter>15501

Page 107: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

107

Estrutura sequencial Modelo geral de algoritmo

algoritmo nome;início

//declaração de variáveis;ação1;ação2;...

açãon;

fim

Page 108: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

108

Exemplo

• Construa um algoritmo para ler dois números. Em seguida, calcule a soma desses números, armazenando o resultado em outra variável. Imprima os dados iniciais e a soma.

algoritmo exemplo;

inicioreal: x, y, z;leia(x);escreva(x);leia(y);escreva(y);z x + y;escreva(z);

fim

algoritmo exemplo;inicio

real: x, y, z;leia(x, y);escreva(x, y);z x + y;escreva(z);

fim

OU

Page 109: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

109

Exemplo

algoritmo exemplo;inicio

real: n1, n2, soma;escreva(‘digite um número’);leia(n1);escreva(‘digite outro número’);leia(n2);soma n1 + n2;escreva(‘primeiro número=’, n1);escreva(‘segundo número=’, n2);escreva(‘soma=’, soma);

fim.

Page 110: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

110

Pascal – estrutura básica

program nome;uses wincrt;begin...end.

NÚMEROS DE CASAS DECIMAIS: formatar a saída com A:5:2Primeiro digitar o programa e salvar, depois compilar e executar.

Page 111: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

14

/04

/20

23

111

Pascal – tipos de dados

• Inteiro: integer (operadores de soma, divisão, multiplicação, subtração, mod e div)

• Real: real (operadores de soma, subtração, multiplicação e divisão)

• Caracter: char• Cadeia de caracteres: string• Lógico: boolean (true ou false)

• DECLARAÇÃO DE VARIÁVEIS• Var: lista de identificação

Page 112: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

PSEUDOCÓDIGO MODELO1:

conforme_seja expressão (E) fazere1: ações

.

.e2: ações

.

.se_não

açãofim_conforme

PSEUDOCÓDIGO MODELO 2:

caso_de E fazer..

Fim_fazer

Page 113: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

PSEUDOCÓDIGO MODELO 3:

opção E de..

Fim_opção

PSEUDOCÓDIGO MODELO 4:

conforme E fazer..

fim_conforme

Page 114: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

PSEUDOCÓDIGO MODELO 5:

se E é n fazer...

fim_se

Page 115: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

MODELO 6:

conforme_seja (expressão) fazercaso expressão constante: [sentença]caso expressão constante: [sentença]outros: [sentença]fim_conforme

Page 116: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

EM PASCAL:

readln (seletor);CASE seletor OF alvo1:

BEGINInstruções

END;alvo2:

BEGINInstruções

END;ELSE comando4; END;

Page 117: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

EXEMPLO:algoritmo DiasSemana

varinteiro: DIA

inicioler(DIA)conforme_seja DIA fazer1: escrever(‘SEGUNDA’)2: escrever(‘Terça’)se-não

escrever(‘erro’)fim_conforme

fim

Page 118: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de decisão múltipla

EXEMPLO:algoritmo DiaSemana

varinteiro: DIA

inicioler(DIA)conforme_seja DIA fazer1: escrever(‘SEGUNDA’)2: escrever(‘Terça’)se_não

escrever(‘erro’)fim_conforme

fim

Page 119: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Fazer-enquanto/do-while

fazer<corpo do laço>

enquanto (condição_do_laço)

fazer<ações>

enquanto (<expressão>)

Page 120: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Fazer-enquanto/do-while

algoritmo exemplovar

inteiro: num, digitoSiginicio

num 198escrever(‘Numero: ’, num)escrever(‘Numero em ordem inversa: ’)fazer

digitoSig = num MOD 10escrever(digitoSig)num = num DIV 10

enquanto num > 0fim

Page 121: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

REPEAT

repetir<ações>

até_que <condição>

repetir<ações>

until <condição>

Page 122: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

REPEAT

algoritmo exemplovar

real: numerointeiro: contador

iniciocontador 1repetirler(numero)

contador contador+1ate_que contador > 30

escrever(‘numeros lidos 30’)fim

Page 123: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição sem teste

• A estrutura PARA repete a execução do bloco em um número definitivo de vezes pois ela possui limites fixos. Esta estrutura é utilizada quando sabe-se de antemão o número de vezes que o laço deverá ser executado.

Para V de Vi até Vf passo P façaInício

ação/ações;Fim para;

• V = variável de controle do tipo inteiro;• Vi = valor inicial da variável V;• Vf = valor final da variável V;• P = é o valor do incremento dado a variável V;

Page 124: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição sem teste

• Exemplo1:

algoritmo exemplo1;iníciointeiro: cont;para cont de 1 até 3 passo 1 faça

inícioescreva(‘número = ’, cont);

fim para;fim.

PASSO 1:0 + 1 = 11 + 1 = 22 + 1 = 3......

PASSO – 13 – 1 = 22 – 1 = 11 – 1 = 0Não existe 0 – 1, portanto, no PASSO -1, pára no 1, não chega a 0.

cont Vi Vf Passo 1 cont

1 1 3 1 + 1 = 2 2

2 1 3 2 + 1 = 3 3

3 1 3 3 + 1 = 4 4

4 1 3 ----- -----

Page 125: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição sem teste

• Exemplo2:

algoritmo exemplo2;iníciointeiro: cont;para cont de 5 até 7 passo 1 faça

inícioescreva(‘número = ’, cont);

fim para;fim. cont Vi Vf Passo 1 cont

5 5 7 5 + 1 6

6 5 7 6 + 1 7

7 5 7 7 + 1 8

8 5 7 ----- -----

Page 126: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição sem teste

• Exemplo3:

algoritmo exemplo3;iníciointeiro: cont;para cont de 1 até 500 passo 1 faça

inícioescreva(‘número = ’, cont);

fim para;fim. cont Vi Vf Passo 1 cont

1 1 500 1 + 1 2

.... 1 500 ..... ....

500 1 500 500 + 1 501

501 1 500 ---- ----

Page 127: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição sem teste

• Exemplo4:

algoritmo exemplo4;iníciointeiro: cont;para cont de 3 até 1 passo -1 faça

inícioescreva(‘número = ’, cont);

fim para;fim. cont Vi Vf Passo -1 cont

3 3 1 3 - 1 2

2 3 1 2 - 1 1

1 3 1 1 - 1 0

0 3 1 ----- ----

Page 128: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição em Pascal

• Passo 1:for variável := valorInicial to valorFinal do

BeginComandos;End;

• Passo -1:for variável := valorInicial to valorfinal do

BeginComandos;End;

• A variável deve ser, obrigatoriamente do tipo integer.

Page 129: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição

• Pseudocódigo

Para variável de VI até VF passo P faça

InícioComandos;

Fim para;

• Pascal

PASSO 1For variável := VI to VF do

BeginComandos;

End;

PASSO -1For variável := VI downto VF do

BeginComandos;

End;

Page 130: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Contadores e somatórios

• Exemplo: calcular e imprimir a soma dos cinco primeiros números inteiros positivos.

0 1 2 3 4 5

1. Zerar somatório: soma 02. Definir valor inicial: num 13. Inicializar contador: cont 14. Realizar operação desejada: soma soma + num5. Variar valor inicial: num num + 16. Incrementar/decrementar contador: cont cont + 1

Page 131: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Contadores e somatórios

algoritmo exemplo;início

inteiro: soma, num, cont;soma 0;num 1;para cont de 1 até 5 passo 1 faça

iniciosoma soma + num;num num + 1;

fim para;escreva (‘soma = ’, soma);

fim.

Page 132: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição com teste de condição no início – Enquanto/Faça

While condição doBegin

Comandos;End;

• Enquanto uma condição é verdadeira, uma ação ou ações são executadas repetidamente (enquanto, faça)

Enquanto condição façaInício

Ação/açõesFim enquanto;

Page 133: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição com teste de condição no início – Enquanto/Faça

• Exemplo: imprimir os números inteiros de 0 a 3.algoritmo exemplo;

iníciointeiro: n;n 0;enquanto n <= 3

inícioescreva (‘num = ’, n);n n+1;

fim enquanto;fim.

Page 134: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição com teste de condição no início – Enquanto/Faça

• A estrutura enquanto pode ser escrita como:InicializaçãoEnquanto condição faça

Início.....incremento / decremento.....

Fim enquanto;

Lema: um comando leia, ou de atribuição, antes do enquanto para entrar na repetição e, um ocmando leia, ou de atribuição, antes de fim enquanto para sair da repetição.

Page 135: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura de Repetição com teste de condição no início – Enquanto/Faça

• Exemplo: ler vários números e imprimí-los até que o número digitado seja zero.

algoritmo exemplo;início

real:n;escreva(‘digite um número ou zero para finalizar’);enquanto n<>0 faça

inícioescreva(‘n = ’, n);escreva(‘digite um número ou zero para final’);leia(n);

fim enquanto;fim.

Page 136: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.Estruturas de seleção

ou estrutura condicional

Page 137: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura condicional simples

se (condição)então

inicioação/ações

fim;

Se a condição for verdadeira, a ação/ações sob o então será executada; caso contrário – se a condição for falsa – encerra-se a seleção.

Page 138: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Exemplo

algoritmo exemplo;inicio

real: nota;escreva(‘digite uma nota’);leia(nota);se(nota<5)

entãoinicio

escreva(‘reprovado’);fim;

fim.

Page 139: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Estrutura condicional composta

se (condição)então

inicioação1/ações1

fim; senão

inicioação2/ações2

fimSe a condição for verdadeira, a ação1/ações1 sob o então será executada; caso contrário, se a condição for falsa, teremos a execução da ação2/ações2 que segue a cláusula senão.

Page 140: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Exemplo algoritmo exemplo;

inicioreal: nota;escreva(‘digite uma nota’);leia(nota);Se(nota<5)

entãoinicio

escreva(‘reprovado’);fim

senaoinicio

escreva(‘aprovado’);fim;

fim.

Page 141: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Variáveis compostas homogêneas: é um conjunto de dados do mesmo tipo.

• Variáveis compostas homogêneas unidimensionais: são variáveis compostas que necessitam de apenas um índice para individualizar um elemento do conjunto. Essas variáveis são chamadas de vetores.

• Declaração:nome_do_vetor: vetor[1..dimensao] de tipo_de_dados;

• Em que 1 .. Dimensao é a quantidade de elementos do vetor;

• Exemplo:nota: vetor[1..50] de reais;

Page 142: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Exemplo:• Media: vetor[1..5] de reais;

Posição do elemento no vetor Conteúdo do vetor

media[1] 3.2

media[2] 5.7

media[3] 9.5

media[4] 10

media[5] 1.3

Page 143: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetoresalgoritmo exemplo;inicio

inteiro: i;n: vetor[1..4] de reais;para i de 1 até 4 passo 1 faça

inicioescreva(‘digite um número’);leia(n[i]);

fim para;escreva(‘posição valor’);para i de 1 até 4 passo 1 faça

inicioescreva(i, n[i]);

fim para;fim.

Page 144: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Declaração de vetores em pascal:nome_do_vetor: array[1 ... dimensao] of

tipo_do_dado;• Em que 1 ... Dimensao é o tamanho do vetor.• Exemplo:var v: array[1..6] of integer;

• Atribuindo valores avulsos ao vetor:• V[5] 28; (posição 5 recebe o valor 28)

Page 145: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores program vetor1;var

n,i,maior:integer;nro:array[1..100] of integer;

beginwrite('forneca a quantidade de numeros: '); readln(n);writeln;for i:=1 to n do

beginwrite('forneca o ',i,'o. numero: ');readln(nro[i]);end;

writeln;maior:=nro[1];for i:=2 to n do

beginif (nro[i] > maior)then maior:=nro[i];end;

writeln('maior numero: ',maior);readln;

end.

Page 146: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

Não é possível:

Não se pode ler todo um vetor diretamente com um comando read. Não se pode escrever: read(v);

É necessário ler elemento por elemento, diretamente, ou com um laço de repetição como for.

Não se pode escrever todos os elementos de um vetor com um único comando write. Não é permitido escrever: write(v). Também nesse caso cada elemento deve ser tratado como uma variável independente, por exemplo:

for i:= 1 to 6 do write(v[i]:3);

Page 147: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores Não é possível copiar os valores dos elementos de um vetor para outro com um único comando de atribuição. Ou seja, dados dois vetores v e w, ambos do mesmo tamanho e do mesmo tipo, não é permitido fazer: w:= v; . Também aqui é necessário trabalhar elemento a elemento, e o comando for mais uma vez é indicado:

for i:= 1 to 6 do w[i]:= v[i];

Não existe comandos ou funções que dão o tamanho (número de elementos) de um vetor.

Não é permitido tentar acessar uma posição fora do intervalo de posições definido para o vetor. A tentativa causará um erro em tempo de execução e o programa abortará. No caso do vetor v acima, por exemplo, não é permitido escrever: v[8]:= 20, read(v[8]) ou write (v[8]) porque a faixa de valores das posições vai de 1 a 6 apenas.

Page 148: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores A faixa de valores das posições não precisa começar em 1. Qualquer intervalo de valores pode ser usado na definição de um vetor. Por exemplo, podemos definir um vetor assim:

var v:array[15..20] of real;

Nesse caso o vetor v terá apenas os elementos: v[15], v[16], v[17], v[18], v[19] e v[20]

As posições não precisam ser necessariamente números inteiros. Podem ser qualquer tipo ordinal, ou seja, que possa ser definido por uma seqüência ordenada de valores.

Por exemplo, os caracteres em Pascal formam uma seqüência ordenada na tabela de caracteres, e podem portanto serem marcadores de posição em um vetor.

Page 149: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

Podemos definir um vetor assim:

var letras: array['a'..'z'] of integer;

Nesse caso os elementos do vetor são: letras['a'], letras['b'], ….., letras['z']

Um uso possível para esse vetor poderia ser que cada posição poderia guardar a quantidade de vezes que a letra dessa posição aparece em uma determinada frase.

Page 150: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Variável composta homogênea unidimensional

• Conjunto de variáveis de mesmo tipo• Alocadas sequenciamente na

memória• Índice: referencia sua localização

dentro da estrutura20 21 22 23 24 25 26 27 28 29X

2 3

X [ 1 ] X [ 10 ]

4 5 6 7 8 9 101

Page 151: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Tamanho do vetor: quantidade de elementos que o vetor poderá armazenar

VARnome_da_variavel: ARRAY[índice_inicial

.. índice_final] OF tipo_dos_dados_do_vetor;

• nome_da_variavel é o nome da variável do tipo vetor;

Page 152: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

VARnome_da_variavel: ARRAY[índice_inicial ..

índice_final] OF tipo_dos_dados_do_vetor;

• índice_inicial é o valor correspondente ao índice da primeira posição do vetor;

• índice_final é o valor correspondente ao índice da última posição do vetor;

• tipo_d0s_dados_d0_vetor é o tipo básico dos dados que serão armazenados no vetor.

Page 153: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• O valor do índice_inicial deve ser maior ou igual ao valor do índice_final

• Exemplo1:Var

Vetor1: ARRAY[1..10] of integer;

• Exemplo 2:Var

Vetor2: ARRAY[5..9] of real;

Page 154: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• O índice também pode ser representando por caracteres

• Exemplo3:Var

Vetor1: ARRAY[‘C’.. ‘G’] of integer;• Os valores que indicam o índice_inicial e o

índice_final devem representar valores fixos literais ou constantes, não podendo ser substituídos por variáveis.

• Literal é um valor fixo, definido quando se escreve o programa. Por exemplo, x:=10.3, 10.3 é um literal.

Page 155: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores

• Exemplo 4: x: ARRAY[1..10] of real;• Exemplo 5: vet: ARRAY[5..9] of char;• Exemplo 6: x: ARRAY[‘D’.. ‘G’] of

integer;• Exemplo 7:–Const min = 3;–Const max = 7;–V: ARRAY[min..max] of integer;

Page 156: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores: Atribuindo Valores

x[4] := 5; //atribui o valor 5 à posição 4 do vetor

vet[3]:=‘F’; //atribui o valor F à posição 3 do vetor

Y[‘d’]:=4.1; //atribui o valor 4.1 à posição d do vetor

Page 157: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores: Preenchendo um Vetor

Significa atribuir valores à todas as suas posiçõesUsar um FOR para isto!

Exemplo1:for i:=1 to 7 do

beginreadln(x[i]);

end;

Page 158: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores: Preenchendo um Vetor

Exemplo2:

for i:=‘c’ to ‘e’ dobegin

readln(x[i]);end;

Page 159: Material Algoritmos e Estruturas de Dados - 1º Bimestre

Eng.Comp.

Vetores: Imprimindo um Vetor

Exemplo 1:for i:=1 to 10 do

beginwriteln(x[i]);

end;

Exemplo 2:for i:=‘c’ to ‘e’ do

beginwriteln(x[i]);

end;