Você está na página 1de 73

ALGORITMOS E PROGRAMAÇÃO

Prof. Glauder Guimarães Ghinozzi


glauder.guimaraes@ufms.br

Baseado em material do Prof.


Rafael Robson Negrão
HORÁRIOS

Turma: T02

Horário de Aula:

 4ª feira das 09:25h às 12:25h – L2


OBJETIVO

- Desenvolver a capacidade de resolver problemas de forma


algorítmica utilizando um computador.
- Compreender a importância da abordagem sistemática
para a resolução de problemas e sua implementação em um
computador.
- Introduzir os tipos e estrutura de dados básicos e a suas
respectivas implementações na linguagem de programação
Python.
- Compreender a importância dos métodos de programação
estruturada e modularização para o desenvolvimento de
software.
EMENTA
Variáveis e Tipos de Dados. Estrutura Sequencial.
Estrutura Condicional. Estruturas de Repetição. Variáveis
Compostas Homogêneas. Utilização de funções
matemáticas da linguagem. Laboratório de informática. A
linguagem de programação a ser utilizada será Python.
PROGRAMA
 1. Plano de Ensino

2. Ambiente Computacional

3. Tipos de Variáveis, Tipos de Dados e Expressões

4. Estrutura Sequencial

5. Estrutura de Repetição

6. Vetores

7. String

8. Matriz (6h EAD)


 - Exercicios Avaliativos assincronos do dia 11/11/2023 ao dia 21/11/2023

9. Função
BIBLIOGRAFIA BÁSICA

MANZANO, José Augusto N. G. Algoritmos lógica para desenvolvimento de programação de computadores.


28. São Paulo Erica 2016 1 recurso online ISBN 9788536518657.
FARRER, Harry et al. Algoritmos estruturados. 2. ed. Rio de Janeiro, RJ: Ed. Guanabara, 1989. 252 p.
(Programação estruturada de computadores).
ZIVIANI, Nivio. Projeto de algoritmos: com implementações em Pascal e C. 3. ed. rev. e ampl. São Paulo, SP:
Cengage Learning, 2013. 639 p. ISBN 9788522110506.
CORMEN, Thomas H. et al. Algoritmos: teoria e prática. Rio de Janeiro, RJ: Elsevier, 2012. 926 p. ISBN
9788535236996.
CORMEN, Thomas H. et al. Introduction to algorithms. 3. ed. Cambridge, UK: London: MIT Press, 2014. 1292 p.
ISBN 9780262033848.
SZWARCFITER, Jayme Luiz; MARKENZON, Lilian. Estruturas de dados e seus algoritmos. 3. ed. Rio de Janeiro,
RJ: LTC, 2014. xv, 302 p. ISBN 9788521617501.
FEOFILOFF, Paulo. Algoritmos em linguagem C. Rio de Janeiro, RJ: Elsevier, 2009. 208 p. ISBN
9788535232493.
GUIMARÃES, Angelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e estruturas de dados. Rio de
Janeiro, RJ: LTC, 1985-2013. 216 p. (Ciência da computação). ISBN 85-216-0378-9.
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. Fundamentos da programação
de computadores: algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3. ed. São Paulo, SP: Pearson, 2013. 569
p. ISBN 9788564574168.
PERKOVIC, Ljubomir. Introdução à computação usando Python um foco no desenvolvimento de aplicações.
Rio de Janeiro LTC 2016 1 recurso online ISBN 9788521630937.
DATAS E PROVAS
 P1: Prova 1 - 04/10/2023.
P2: Prova 2 - 22/11/2023.
EA: Exercícios Avaliativos.

PO = Prova Optativa - 29/11/2023 (Substituição da menor nota entre a P1


e P2)

Média de Provas: (MP):

MP=(P1+P2)/2

Média de aproveitamento (MA):

MA = (MP*0,7 + EA*0,3)
 Será considerado aprovado na disciplina, o estudante que
obtiver, frequência igual ou superior a 75%, e Média de Aproveitamento,
igual ou superior a
6,0 (seis vírgula zero).
CONDUTA ÉTICA

 Provas e listas devem ser feitas INDIVIDUALMENTE! Quando for o


caso.
 Cada estudante tem responsabilidade sobre seus
trabalhos e provas, mesmo que parciais.
 Não faça listas em grupo e não compartilhe seus programas.
 Você pode consultar seus colegas para esclarecer dúvidas e
discutir ideias sobre trabalhos, ao vivo ou nos fóruns de discussão
da disciplina, mas NÃO copie!
 Listas e provas considerados plagiados terão nota ZERO
Um único exercício plagiado é o suficiente para a nota da lista
resultar em ZERO.
CONDUTA ÉTICA

 Estamos aqui para aprender! Usem seu tempo e energia para estudar
para a disciplina.
 Prezem por respeito e cordialidade nos ambientes de interação virtual.

AMBIENTE VIRTUAL DE
APRENDIZADO
AVA E GRUPO WHATSAPP
 Todos os slides e materiais do curso serão disponibilizados no AVA.
 Exercícios Avaliativos devem ser entregues via AVA e avaliados via AVA!
 O grupo do whatsapp serve exclusivamente para dúvidas sobre a
disciplina.
 Permitam 24h de prazo para respostas do professor!
 Sempre procurem o professor em caso de dúvidas ou problemas!
ALGORITMOS E PROGRAMAÇÃO

 O que é computação

 O que é informática

 Componentes de um sistema de computação

 Histórico e evolução

 Classificação de computadores 11
ALGORITMOS E PROGRAMAÇÃO

 O que é computação

 O que é informática

 Componentes de um sistema de computação

 Histórico e evolução

 Classificação de computadores 12
O QUE É COMPUTAÇÃO?
 A computação pode ser definida como a busca
de uma solução para um problema a partir de
entradas (inputs) e tem seus resultados (outputs)
depois de trabalhada através de um algoritmo.
O QUE É COMPUTAÇÃO?

DADOS PROCESSAMENTO INFORMAÇÃO

14
INTRODUÇÃO A COMPUTAÇÃO

 O que é computação

 O que é informática

 Componentes de um sistema de computação

 Histórico e evolução

 Classificação de computadores 15
O QUE É INFORMÁTICA?

INFORmação autoMÁTICA

16
INTRODUÇÃO A COMPUTAÇÃO

 O que é computação

 O que é informática

 Componentes de um sistema de computação

 Histórico e evolução

 Classificação de computadores 17
COMPONENTES DE UM SISTEMA DE
COMPUTAÇÃO

PEOPLEWARE

HARDWARE SOFTWARE
18
ALGORITMOS E PROGRAMAÇÃO

 O que é computação

 O que é informática

 Componentes de um sistema de computação

 Histórico e evolução

 Classificação de computadores 19
HISTÓRICO E EVOLUÇÃO

Primeiro ser humano a CALCULAR foi um pastor, que se


utilizou de uma técnica de empilhamento de pedras para
controlar a quantidade de ovelhas de seu rebanho.

Calculus = pedra, em latim

20
HISTÓRICO E EVOLUÇÃO

Primeira maneira que os seres humanos encontraram


para identificar uma determinada quantidade foi
através dos dedos da mão.

Digitus = dedo, em latim

21
HISTÓRICO E EVOLUÇÃO

A primeira tentativa bem-sucedida de criar uma máquina


de contar foi o ÁBACO.

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

23
HISTÓRICO E EVOLUÇÃO
JACQUARD
desenvolveu os cartões perfurados para
entrada de dados.

24
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 seqüencial de operações.
25
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. 26
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,27
construir mísseis, e etc...
HISTÓRICO E EVOLUÇÃO

Alan TURING cria o


Colossus, máquina que,
uma vez plugada,
programada e
alimentada, resolvia
problemas de criptografia
em poucos minutos.
28
HISTÓRICO E EVOLUÇÃO
ENIAC (Eletronic Numerical Integrator And
Computer)
O computador mais famoso desta época.
Foi o primeiro computador digital eletrônico
de grande escala, 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 29

 Capacidade de 5.000 somas por segundo


HISTÓRICO E EVOLUÇÃO
ENIAC

30
HISTÓRICO E EVOLUÇÃO

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

31
HISTÓRICO E EVOLUÇÃO

1950 - UNIVAC
Primeiro sucesso comercial.
HISTÓRICO E EVOLUÇÃO

 1960’s, 1970s......- Uso de circuitos integrados com milhares de


transistores em um único chip
 Circuitos digitais complexos
 Calculadoras, Computadores digitais, mainframes, PCs,
telecomunicações, etc.
HISTÓRICO E EVOLUÇÃO

Intel

 1971 - 4004
 Primeiro micropocessador comercial
 Todos os componentes da CPU em um chip
 4 bit
 Seguido em 1972 pelo 8008
 8 bit
 Ambos para aplicações especificas
 1974 - 8080
 Primeiro de uso geral.
HISTÓRICO E EVOLUÇÃO
Geração de Computadores:
 Valvulas- 1946-1957
 Transistor - 1958-1964
 Low scale integration (LSI) 1965
 Até 100 componentes em um chip
 Medium scale integration – (MSI) 1971
 100-3,000 componentes em um chip
 Large scale integration (LSI) - 1971-1977
 3,000 - 100,000 componentes em um chip
 Very large scale integration (VLSI) - 1978 to date
 100,000 - 100,000,000 componentes em um chip
CURIOSIDADE
BUG
É a palavra em inglês que significa inseto.
Ela é usada em computação como significado
de erro, falha, problema, pois uma mariposa
conseguiu entrar num Mark II e travou todo
o sistema.

36
A INFORMAÇÃO E SUA REPRESENTAÇÃO
 Um bit pode representar apenas 2 símbolos (0 e 1)

 Necessidade - unidade maior, formada por um conjunto de


bits, para representar números e outros símbolos, como os
caracteres e os sinais de pontuação que usamos nas
linguagens escritas.

 Unidade maior (grupo de bits) - precisa ter bits suficientes


para representar todos os símbolos que possam ser usados:
 dígitos numéricos,
 letras maiúsculas e minúsculas do alfabeto,
 sinais de pontuação,
 símbolos matemáticos e assim por diante.
A INFORMAÇÃO E SUA REPRESENTAÇÃO

Necessidade:
Caracteres alfabéticos maiúsculos 26
Caracteres alfabéticos minúsculos 26
Algarismos 10
Sinais de pontuação e outros símbolos 32
Caracteres de controle 24
Total 118
A INFORMAÇÃO E SUA REPRESENTAÇÃO
 Capacidade de representação:
Bits Símbolos
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
A INFORMAÇÃO E SUA REPRESENTAÇÃO
 Pode ser calculado usando o inteiro superior do
log do número de simbolos.
 Log2118 = 6.882643, o inteiro superior é 7.

 Pode ser feito utilizando o logaritmo neperiano


 ln118/ln2 = 6.882643, o inteiro superior é 7.
A INFORMAÇÃO E SUA REPRESENTAÇÃO

 EBCDIC
 Código de 8 bits (256 símbolos).
 Usado em mainframe IBM em sistemas de médio porte, raramente
encontrado em microcomputadores.

 ASCII
 Padrão definido pela organização ANSI.
 Código de 7 bits (128 combinações de caracteres).
 Nos computadores é utilizado o ASCII Estendido (utiliza outros 128
códigos para símbolos gráficos, e línguas diferentes do inglês).

 UNICODE
 Novo padrão para representação de dados, oferece 2 bytes para a
representação de símbolos (mais de 65.000 símbolos)
A INFORMAÇÃO E SUA REPRESENTAÇÃO
 1 byte = 8 bits = 1 caractere (letra, número
ou símbolo)
 Podemos definir palavra como um conjunto de
bits que representa uma informação útil para os
computadores. A palavra nos computadores é um
valor fixo e constante para um dado processador :
 ex.: 32 bits, 64 bits
A Informação e sua
Representação
 Partes do conjunto de caracteres ASCII
Binário Caractere
0100 0001 A
0100 0010 B
0110 0001 a
0110 0010 b
0011 1100 <
0011 1101 =
0001 1011 ESC
0111 1111 DEL
Como os principais códigos de representação de caracteres utilizam grupos de 8
bits por caractere, os conceitos byte e caractere tornam-se semelhantes, e as,
43
palavras, quase sinônimas
A Informação e sua
Representação
 Indicações numéricas dos computadores:
 Bit - 2 estados: 0 e 1

Byte B 8 bits
Quilobyte KB 1.024 bytes 210=1.024
(ou Kilobyte)
Megabyte MB 1.024 KB 220=1.048.576

Gigabyte GB 1.024 MB 230=1.073.741.824

Terabyte TB 1.024 GB 240=1.099.511.627.77


6

Os valores utilizados em computação para indicar capacidade de memória são 44


normalmente compostos de um número (entre 0 e 999) e uma das abreviaturas
citadas (ex.: 256K, 64M, etc.).
EVOLUÇÃO DOS COMPUTADORES
 Atualmente, os computadores processam
dados a partir de conjuntos de instruções
denominadas programas.
 É uma máquina eletrônica capaz de
receber informações, submetê-las a um
conjunto especificado/pré-determinado de
operações lógicas/aritméticas e fornecer o
resultado destas operações.
LINGUAGENS E ALFABETOS

Hello World

Olá Mundo

Bonjour Monde

Halo welt
1ª GERAÇÃO – LINGUAGEM DE MÁQUINA

 1ª geração – Linguagem máquina


 Conjunto de dígitos binários do “instruction set” do
processador
 Os programas rodam apenas no computador para o qual
foram projetados.

0100 1010100
0100 1010110
0110 1001100
0101 1010101
1100 1001100
2ª GERAÇÃO – ASSEMBLER

 2ª geração – Assembler dosseg


.model small
 Mnemônicas do “instruction .stack 100h
set” do processador
.data
 Assembler – Programa que hello_message db 'Hello, World!','$'
traduz o código assembly
para linguagem de máquina .code
main proc
 Os Programas funcionam mov ax,@data
apenas em um tipo de mov ds,ax
processador mov ah,9
 Mov –> 00001100 mov dx,offset hello_message
 int -> 10001101
int 21h

mov ax,4C00h
 Desenvolvimento de main
int
endp
21h

programas muito difícil e end main


demorado
2ª GERAÇÃO – ASSEMBLER
 Desvantagens
 Pequeno número de instruções
 Programas longos
 Pouco legíveis

 Difíceis de modificar

 Utiliza diretamente os recursos da máquina


 Os programas não são portáteis entre computadores
 Vantagens
 Código otimizado
 Velocidade de processamento elevado
 Controle total do hardware
3ª GERAÇÃO – LINGUAGENS DE ALTO
NÍVEL

 3ª geração – Linguagens de alto nível


 Uma instrução pode corresponder a um grande número de
instruções em assembly
 Instruções em linguagem natural
 write, read, print, . . .
 Ler, escrever, repetir
 Linguagens de propósito geral
 Cálculo matemático
 Gestão de documentos
 Controle
 Exemplos 10 print"Hello World!"
Basic

 Pascal
20 goto 10
 C
 Cobol
 Fortran
3ª GERAÇÃO – LINGUAGENS DE ALTO
NÍVEL
#include <stdio.h> program Hello_World;
main() Begin
{ repeat
for(;;) writeln('Hello World!')
printf ("Hello World!\n"); until 1=2;
} End.

C Pascal
PROGRAM HELLO 100200 MAIN-LOGIC SECTION.
100300 BEGIN.
DO 10, I=1,10 100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500 DISPLAY "HELLO, WORLD." LINE 15 POSITION 10.
PRINT *,'Hello World' 100600 STOP RUN.
100700 MAIN-LOGIC-EXIT.
10 CONTINUE 100800 EXIT.
STOP
END

Cobol
Fortran
4ª GERAÇÃO DE LINGUAGENS DE
APLICAÇÃO

 4ª
geração – Linguagens de alto nível com
aplicações a áreas concretas
 Funções muito específicas
 Gestão de bases de dados
 Elaboração de relatórios

 Geração de Gráficos
CREATE TABLE HELLO (HELLO CHAR(12))
 Exemplos
UPDATE HELLO
 DBASE SET HELLO = 'HELLO WORLD!'
SELECT * FROM HELLO
 SQL

 CLIPPER
SQL
5ª GERAÇÃO – LINGUAGENS DE MUITO
ALTO NÍVEL

 5ª geração – Linguagens de muito alto nível


 Programação declarativa
 Declaração dos problemas
 Métodos específicos de resolução dos problemas

 Linguagens de Inteligência Artificial


 Prolog

hello :-
printstring("HELLO WORLD!!!!").

printstring([]).
printstring([H|T]) :- put(H), printstring(T).
ALGORITMO
 Origem da palavra
 al-Khwarizmi - Matemático árabe
 Algoritmo
 Algarismo

 Definição
 É uma sequência finita de passos ou instruções,
ordenadas de forma lógica, que levam a execução de
uma tarefa ou solução de um problema.
EXEMPLO DE UM ALGORITMO
•250g de farinha
•150g de margarina
•5 ovos
•2 colheres de fermento
•200 gramas de acucar

1. Misturar os ingredintes
2. cozinhar o bolo.

Receita
ABORDAGEM TOP DOWN

Receita:
1 - Misturar os ingredintes
1.1 – juntar a margarina e a farinha e bater até obter um creme
1.2 – Juntar os ovos e mexer
1.3 – juntar o fermento
2 –Cozinhar o bolo
2.1 Aquecer o forno a 180ºc
2.2 Cozinhar o bolo durante 45 min

•Refinamento:
•Obter o creme
•Juntar ovos
•Ligar e regular o forno
•Desligar o forno

Pode um computador fazer um bolo ?


ALGORITMOS
• Algoritmo não computational
• Exemplos
• Receita

• Manual de instruções

• Depende da perícia do utilizador!

• Algoritmo computational Um algoritmo


computacional é uma
 Manipular informação
 Receber dados
sequencia de passo tão
 Guardar dados bem definida que até
 Devolver informação um computador é
 Executar instruções
 Fazer operações aritméticas
capaz de executar
 Fazer operações lógicas

 Escolha entre várias instruções.

 Repetir um conjunto de instruções


ALGORITMOS: EXEMPLO
 A seguir os passos necessários para trocar uma
lâmpada
 Veremos quatro possíveis soluções
 E os problemas de cada solução

A formulação de um problema é frequentemente mais


essencial do que a sua solução, a qual pode ser meramente
uma questão de habilidade matemática ou experimental
Einstein
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 1
 Pegue uma escada
 Posicione-a embaixo da lâmpada
 Busque uma lâmpada nova
 Suba na escada
 Retire a lâmpada velha
 Coloque a lâmpada nova
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 1
 Problema
 Mesmo que a lâmpada não esteja queimada, o algoritmo faz
com que ela seja trocada!!
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 2
• Pegue uma escada
• Posicione-a embaixo da lâmpada
• Busque uma lâmpada nova
• Ligue o interruptor
• Se a lâmpada não acender, então:
• Suba na escada
• Retire a lâmpada velha
• Coloque a lâmpada nova
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 2
 Problemas
 A ordem das ações!!
 A escada é posicionada abaixo mesmo que a lâmpada não

esteja queimada.
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 3
• Ligue o interruptor
• Se a lâmpada não acender, então:
• Pegue uma escada
• Posicione-a embaixo da lâmpada
• Busque uma lâmpada nova
• Suba na escada
• Retire a lâmpada velha
• Coloque a lâmpada nova
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 3
 Problemas
 E se a lâmpada nova não funcionar??
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 4
• Ligue o interruptor
• Se a lâmpada não acender, então:
• Peque uma escada
• Posicione-a embaixo da lâmpada
• Busque uma lâmpada nova
• Suba na escada
• Retire a lâmpada velha cont... =>
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 4
• Coloque a lâmpada nova
• Se a lâmpada não acender, então:
• Retire a lâmpada
• Coloque outra lâmpada
• Se a lâmpada não acender, então:
• Retire a lâmpada
• ... ... ...
• ... ... ...
ALGORITMOS: EXEMPLO
 Trocar uma Lâmpada - Solução 4
 Problemas
 Se nenhuma lâmpada funcionar??
 Se a mesma pessoa não agüentar testar várias lâmpadas??

 Até quando isto será feito??


CONCLUSÃO
 O algoritmo não é a solução de um
problema
 É uma forma de chegar á solução
 Não se aprende
 Ao copiar algoritmos
 Ler algoritmos prontos sem entende-
los
 A decorar algoritmos
 Aprende-se
 Construindo algoritmos
 Testando algoritmos
CONCLUSÃO - CONSTRUIR
ALGORITMOS

 Qual é o problema.
 O que pretendemos do algoritmo
 Definir quais são os dados que
entram
 Qual a situação inicial
 O que é necessário para resolver o
problema
 Definir quais são os dados que saem
 Qual a situação final
 Que resultados devem ser apresentados
CONCLUSÃO - CONSTRUIR
ALGORITMOS

 Definir o Algoritmo
 Definir quais as instruções
disponíveis/necessárias
 Organizar as instruções de forma a
resolver o problema
 transformar as entradas na saída
 Testar o algoritmo
 Verificar se resolve o problema
 Verificar se resolve todos os casos
 Optimizar o algoritmos
 Verificar se não utiliza recursos supérfluos
PSEUDO-CÓDIGO
 Os algoritmos são descritos em uma linguagem
chamada pseudocódigo
 Algoritmos são independentes das linguagens
de programação
 Não existe um formalismo rígido de como deve
ser escrito o algoritmo.
 O algoritmo deve ser fácil de se interpretar e
fácil de codificar
REGRAS PARA CONSTRUÇÃO DO
ALGORITMO

 Para escrever um algoritmo precisamos


descrever a seqüência de instruções, de
maneira simples e objetiva

 Usar somente um verbo por frase


 Usar frases curtas e simples
 Ser objetivo
 Procurar usar palavras que não tenham
sentido dúbio
FASES DO ALGORITMO

Você também pode gostar