SlideShare a Scribd company logo

Apostila Lógica de Programação

Ricardo Terra
Ricardo Terra
Ricardo TerraProfessor at Universidade Federal de Lavras

Apostila Lógica de Programação

Apostila Lógica de Programação

1 of 121
Download to read offline
Lógica de Programação
Ricardo Terra
rterrabh [at] gmail.com
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 1 / 120
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 2 / 120
Conteúdo
1 Introdução
Arquitetura de um Sistema de Computador
Histórico da Computação
Utilização dos Computadores
2 Lógica Proposicional
3 Algoritmos e Programação Estruturada
4 Portucol
5 Algoritmos com Qualidade
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 3 / 120
Introdução
Arquitetura de um Sistema de Computador
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 4 / 120
Introdução – Arquitetura de um Sistema de Computador
Nessa seção, veremos:
Arquitetura de um sistema de computação
Memória
Unidade Central de Processamento (CPU)
Periféricos (dispositivos de entrada e saída)
Teclado
Mouse
Monitor
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 5 / 120
Introdução – Arquitetura de um Sistema de Computador
Explicando...
Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 6 / 120
Ad

Recommended

More Related Content

What's hot

Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de ProgramaçãoAndré Agostinho
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Informática Básica - Aula 01 - Introdução
Informática Básica - Aula 01 - IntroduçãoInformática Básica - Aula 01 - Introdução
Informática Básica - Aula 01 - IntroduçãoJoeldson Costa Damasceno
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Pacc UAB
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02thomasdacosta
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de ProgramaçãoAdao Chiavelli
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismosdiogoa21
 
Aula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareAula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareSuzana Viana Mota
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmosAdilio Tavares
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 

What's hot (20)

Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Informática Básica - Aula 01 - Introdução
Informática Básica - Aula 01 - IntroduçãoInformática Básica - Aula 01 - Introdução
Informática Básica - Aula 01 - Introdução
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismos
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Aula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareAula 03 - Hardware e Software
Aula 03 - Hardware e Software
 
Informática Básica - Aula 04 - Software
Informática Básica - Aula 04 - SoftwareInformática Básica - Aula 04 - Software
Informática Básica - Aula 04 - Software
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 

Viewers also liked

Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoFelipe Fontoura
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesRicardo Terra
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAislan Rafael
 
aula 03 - Lógica de programação
aula 03 - Lógica de programaçãoaula 03 - Lógica de programação
aula 03 - Lógica de programaçãoAislan Rafael
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
 
Coletanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cColetanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cWilson Kushima
 
Apostila introdução-à-computação-professora-kadidja
Apostila introdução-à-computação-professora-kadidjaApostila introdução-à-computação-professora-kadidja
Apostila introdução-à-computação-professora-kadidjaFernanda Firmino
 
Sistemas Operacionais [ETEC DE ITAQUERA]
Sistemas Operacionais [ETEC DE ITAQUERA]Sistemas Operacionais [ETEC DE ITAQUERA]
Sistemas Operacionais [ETEC DE ITAQUERA]Vinicius Lopes
 
Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Victor Ribeiro
 
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...SegInfo
 
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E WebdriverTestes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E WebdriverMaurício Linhares
 
Aula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAislan Rafael
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 

Viewers also liked (20)

Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Aula 02 - Lógica de Programação
Aula 02 - Lógica de ProgramaçãoAula 02 - Lógica de Programação
Aula 02 - Lógica de Programação
 
aula 03 - Lógica de programação
aula 03 - Lógica de programaçãoaula 03 - Lógica de programação
aula 03 - Lógica de programação
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Coletanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-cColetanea de-exercicios-resolvidos-em-liguagem-c
Coletanea de-exercicios-resolvidos-em-liguagem-c
 
Apostila introdução-à-computação-professora-kadidja
Apostila introdução-à-computação-professora-kadidjaApostila introdução-à-computação-professora-kadidja
Apostila introdução-à-computação-professora-kadidja
 
Sistemas Operacionais [ETEC DE ITAQUERA]
Sistemas Operacionais [ETEC DE ITAQUERA]Sistemas Operacionais [ETEC DE ITAQUERA]
Sistemas Operacionais [ETEC DE ITAQUERA]
 
Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)
 
Pentest web
Pentest webPentest web
Pentest web
 
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...
por Bruno Milreu Filipe "Casos avançados de teste de invasão – Indo além do “...
 
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E WebdriverTestes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
 
Aula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro Código
 
Geek night-2015
Geek night-2015Geek night-2015
Geek night-2015
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 

Similar to Apostila Lógica de Programação

Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Softwares e Aplicativos Windows
Softwares e Aplicativos WindowsSoftwares e Aplicativos Windows
Softwares e Aplicativos WindowsRobson Santos
 
Softwares E Aplicativos Robs
Softwares E Aplicativos RobsSoftwares E Aplicativos Robs
Softwares E Aplicativos RobsRobson Santos
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfLuanaBatista74
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfEdkallenn Lima
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Pacc UAB
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
Conceitos de linguagens de programação
Conceitos de linguagens de programação Conceitos de linguagens de programação
Conceitos de linguagens de programação FabianaNKInformtica
 
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdfTREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdfssuser059c2c1
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Comunidade NetPonto
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoFelipeDi
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoWeldir Fernando Dias
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01thomasdacosta
 

Similar to Apostila Lógica de Programação (20)

Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
Aula - Introdução (Curso de Python Básico -- FATEC SENAI MT)
 
Softwares e Aplicativos Windows
Softwares e Aplicativos WindowsSoftwares e Aplicativos Windows
Softwares e Aplicativos Windows
 
Softwares E Aplicativos Robs
Softwares E Aplicativos RobsSoftwares E Aplicativos Robs
Softwares E Aplicativos Robs
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdf
 
Implementação
ImplementaçãoImplementação
Implementação
 
aula3_python.pptx
aula3_python.pptxaula3_python.pptx
aula3_python.pptx
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
apresentacao.pdf
apresentacao.pdfapresentacao.pdf
apresentacao.pdf
 
Conceitos de linguagens de programação
Conceitos de linguagens de programação Conceitos de linguagens de programação
Conceitos de linguagens de programação
 
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdfTREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0
 
[Parfor] esw aula 03
[Parfor] esw   aula 03[Parfor] esw   aula 03
[Parfor] esw aula 03
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Alterao ementa tii
Alterao ementa tiiAlterao ementa tii
Alterao ementa tii
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 

More from Ricardo Terra

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMRicardo Terra
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POCRicardo Terra
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?Ricardo Terra
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsRicardo Terra
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de PadrõesRicardo Terra
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da InternetRicardo Terra
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a InternetRicardo Terra
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureRicardo Terra
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Ricardo Terra
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTRicardo Terra
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBRicardo Terra
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de CódigoRicardo Terra
 

More from Ricardo Terra (20)

Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 
Apostila XHTML
Apostila XHTMLApostila XHTML
Apostila XHTML
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 

Recently uploaded

A realização das atividades extensionistas do CST em Gestão Financeira, vincu...
A realização das atividades extensionistas do CST em Gestão Financeira, vincu...A realização das atividades extensionistas do CST em Gestão Financeira, vincu...
A realização das atividades extensionistas do CST em Gestão Financeira, vincu...Colaborar Educacional
 
004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd
004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd
004820000101011 (15).pdffdfdfddddddddddddddddddddddddddddddddddddRenandantas16
 
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEIS
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEISCIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEIS
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEISColaborar Educacional
 
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdf
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdfCOSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdf
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdfalexandrerodriguespk
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfkeiciany
 
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)Adriano De Souza Sobrenome
 
Quiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaQuiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaCentro Jacques Delors
 
Cosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfCosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfalexandrerodriguespk
 
TEMPLATE relatório de praticas por aluno.pptx
TEMPLATE relatório de praticas por aluno.pptxTEMPLATE relatório de praticas por aluno.pptx
TEMPLATE relatório de praticas por aluno.pptxAssisTeixeira2
 
Ficha de trabalho | EURO - 25 anos do lançamento da moeda única
Ficha de trabalho | EURO - 25 anos do lançamento da moeda únicaFicha de trabalho | EURO - 25 anos do lançamento da moeda única
Ficha de trabalho | EURO - 25 anos do lançamento da moeda únicaCentro Jacques Delors
 
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...manoelaarmani
 
Trovadorismo, Humanismo, Classicismo e Quinhentismo
Trovadorismo, Humanismo, Classicismo e QuinhentismoTrovadorismo, Humanismo, Classicismo e Quinhentismo
Trovadorismo, Humanismo, Classicismo e QuinhentismoPaula Meyer Piagentini
 
COSMOLOGIA DA ENERGIA - ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdf
COSMOLOGIA DA ENERGIA -  ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdfCOSMOLOGIA DA ENERGIA -  ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdf
COSMOLOGIA DA ENERGIA - ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdfalexandrerodriguespk
 
Q20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfQ20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfPedroGual4
 
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Baina
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã BainaRelatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Baina
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Bainaifacasie
 
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docx
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docxPLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docx
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docxfran50171
 
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOLUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOxogilo3990
 
Apresentação Aula Usabilidade Web Jogos e Apps
Apresentação Aula Usabilidade Web Jogos e AppsApresentação Aula Usabilidade Web Jogos e Apps
Apresentação Aula Usabilidade Web Jogos e AppsAlexandre Oliveira
 
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!Psyc company
 

Recently uploaded (20)

A realização das atividades extensionistas do CST em Gestão Financeira, vincu...
A realização das atividades extensionistas do CST em Gestão Financeira, vincu...A realização das atividades extensionistas do CST em Gestão Financeira, vincu...
A realização das atividades extensionistas do CST em Gestão Financeira, vincu...
 
004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd
004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd
004820000101011 (15).pdffdfdfdddddddddddddddddddddddddddddddddddd
 
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEIS
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEISCIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEIS
CIÊNCIAS CONTÁBEIS - BACHARELADO/PROJETO DE EXTENSÃO I - CIÊNCIAS CONTÁBEIS
 
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdf
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdfCOSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdf
COSMOLOGIA DA ENERGIA ESTRELAS - VOLUME 6. EDIÇÃO 2^^.pdf
 
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdfPLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
PLANO DE CURSO 2O24- ENSINO RELIGIOSO 6º ANO.pdf
 
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)
RUGAS: MARCAS DE EXPRESSÃO DA VIDA (UM ULTIMATO SOBRE O TEMPO!)
 
Quiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda únicaQuiz | EURO - 25 anos do lançamento da moeda única
Quiz | EURO - 25 anos do lançamento da moeda única
 
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptxSlides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
Slides Lição 8, Betel, Família, uma Obra em permanente construção, 1Tr24.pptx
 
Cosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdfCosmologia Modelo Matemático do Universo 5.pdf
Cosmologia Modelo Matemático do Universo 5.pdf
 
TEMPLATE relatório de praticas por aluno.pptx
TEMPLATE relatório de praticas por aluno.pptxTEMPLATE relatório de praticas por aluno.pptx
TEMPLATE relatório de praticas por aluno.pptx
 
Ficha de trabalho | EURO - 25 anos do lançamento da moeda única
Ficha de trabalho | EURO - 25 anos do lançamento da moeda únicaFicha de trabalho | EURO - 25 anos do lançamento da moeda única
Ficha de trabalho | EURO - 25 anos do lançamento da moeda única
 
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
Desafie-se Como Estabelecer Metas de Fitness Realistas e Alcançáveis em Casa ...
 
Trovadorismo, Humanismo, Classicismo e Quinhentismo
Trovadorismo, Humanismo, Classicismo e QuinhentismoTrovadorismo, Humanismo, Classicismo e Quinhentismo
Trovadorismo, Humanismo, Classicismo e Quinhentismo
 
COSMOLOGIA DA ENERGIA - ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdf
COSMOLOGIA DA ENERGIA -  ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdfCOSMOLOGIA DA ENERGIA -  ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdf
COSMOLOGIA DA ENERGIA - ESTRELAS - MODELO DO UNIVERSO VOLUME 6.pdf
 
Q20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdfQ20 - Reações fotoquímicas.pdf
Q20 - Reações fotoquímicas.pdf
 
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Baina
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã BainaRelatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Baina
Relatório Ação Saberes Indígenas na Escola - Grupo de Pesquisa Unã Baina
 
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docx
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docxPLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docx
PLANEJAMENTO ANUAL LINGUA ESPANHOLA 2024 3 ANOS PRONTO.docx
 
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGOLUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
LUSSOCARS TRABAJO PARA LA CLASE QUE TENGO
 
Apresentação Aula Usabilidade Web Jogos e Apps
Apresentação Aula Usabilidade Web Jogos e AppsApresentação Aula Usabilidade Web Jogos e Apps
Apresentação Aula Usabilidade Web Jogos e Apps
 
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!
O Guia Definitivo para Investir em Bitcoin: Domine o Mercado Hoje!
 

Apostila Lógica de Programação

  • 1. Lógica de Programação Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 1 / 120
  • 2. CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos ) Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano ) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 2 / 120
  • 3. Conteúdo 1 Introdução Arquitetura de um Sistema de Computador Histórico da Computação Utilização dos Computadores 2 Lógica Proposicional 3 Algoritmos e Programação Estruturada 4 Portucol 5 Algoritmos com Qualidade Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 3 / 120
  • 4. Introdução Arquitetura de um Sistema de Computador Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 4 / 120
  • 5. Introdução – Arquitetura de um Sistema de Computador Nessa seção, veremos: Arquitetura de um sistema de computação Memória Unidade Central de Processamento (CPU) Periféricos (dispositivos de entrada e saída) Teclado Mouse Monitor Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 5 / 120
  • 6. Introdução – Arquitetura de um Sistema de Computador Explicando... Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 6 / 120
  • 7. Introdução – Arquitetura de um Sistema de Computador Periféricos (dispositivos de entrada e saída) Objetivo: prover dados ao computador e obter respostas do processamento Dispositivos Teclado e mouse Dispositivos de entrada comum. Existe mais algum? Monitor Dispositivo de saída comum. Existe mais algum? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 7 / 120
  • 8. Introdução – Arquitetura de um Sistema de Computador Memória Objetivo: armazenar dados ou programas (sequências de instruções) em um base temporária ou permanente Dispositivos ROM, RAM, HD... Existe mais algum? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 8 / 120
  • 9. Introdução – Arquitetura de um Sistema de Computador Unidade Central de Processamento (CPU) Também conhecido como processador É a parte de um computador que realiza a maior parte do processamento CPU e memória constituem a parte central de um computador, no qual os periféricos serão anexados Veremos a arquitetura Von Neumann Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 9 / 120
  • 10. Introdução – Arquitetura de um Sistema de Computador Resumo do que realmente importa Programas residem na memória As instruções de um programa – soma, divisão, atribuição, laços de repetição, instruções condicionais etc – são executadas pela CPU Os dados necessários para execução do programa são obtidos pelos dispositivos de entrada (mouse, teclado, por exemplo) e os resultados são apresentados através dos dispositivos de saída (monitor, por exemplo) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 10 / 120
  • 11. Introdução Histórico da Computação Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 11 / 120
  • 12. Introdução – Histórico da Computação Nessa seção, veremos: Histórico da Computação Existem mil modos de abordar esse assunto, mas aqui vamos falar o mais relevante ao curso Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 12 / 120
  • 13. Introdução – Histórico da Computação Arquitetura Von Neumann Von Neumann, temático húngaro, naturalizado norte-americano, propôs nos anos 40 do século XX, um padrão de arquitetura de computadores utilizado até os dias de hoje Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 13 / 120
  • 14. Introdução – Histórico da Computação Necessidade Antigamente, processamentos em geral, como cálculos matemáticos complexos, folhas de pagamento etc Atualmente, sistemas bancários, ERP, sistemas de gestão, sistemas web etc Necessidade Enfim, o que um computador faz bem? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 14 / 120
  • 15. Introdução – Histórico da Computação Necessidade Antigamente, processamentos em geral, como cálculos matemáticos complexos, folhas de pagamento etc Atualmente, sistemas bancários, ERP, sistemas de gestão, sistemas web etc Necessidade Enfim, o que um computador faz bem? REPETIÇÃO! Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 14 / 120
  • 16. Introdução – Histórico da Computação Paradigmas de Programação Procedural (imperativo) – Antigamente e atualmente É um paradigma de programação que descreve a computação como ações (instruções) que mudam o estado (variáveis) de um programa. Muito parecido com o comportamento imperativo das linguagens naturais que expressam ordens, programas imperativos são uma sequência de comandos para o computador executar Orientado a objetos – Atualmente É um paradigma de programação que utiliza “objetos” e a interação entre eles para projetar aplicações e programas de computador. Suas técnicas de programação podem incluir características como encapsulamento, polimorfismo e herança. Esse paradigma não era comumente usado no desenvolvimento de aplicações de grande porte até início de 1990. Atualmente, várias linguagens modernas suportam POO Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 15 / 120
  • 17. Introdução – Histórico da Computação Linguagens – Evolução Assembly Pascal C C++ PHP Java .NET (C#, J#...) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 16 / 120
  • 18. Introdução Utilização dos Computadores Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 17 / 120
  • 19. Introdução – Utilização dos Computadores Nessa seção, veremos: Conceito de programa e sistema Linguagem de alto nível e baixo nível Compiladores / Interpretadores Codificação ASCII Áreas de aplicação dos computadores Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 18 / 120
  • 20. Introdução – Utilização dos Computadores Programa x Sistema Programa Concretização de um algoritmo em alguma linguagem de programação ou Uma sequência de instruções que descrevem uma tarefa a ser realizada por um computador Sistema Grupo de componentes de hardware e sistemas de software, projetados e montados para executar uma função específica ou grupo de funções Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 19 / 120
  • 21. Introdução – Utilização dos Computadores Níveis de linguagem Representa o nível de abstração da linguagem Quanto mais longe do código de máquina (ou, em outras palavras, quanto mais próximo à linguagem humana) mais alto é o seu nível Níveis: Alto: Pascal, COBOL, Java... Médio: C, C++... Baixo: Assembly... Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 20 / 120
  • 22. Introdução – Utilização dos Computadores Compiladores X Interpretadores Interpretador lê o código-fonte linha a linha, executando a instrução específica daquela linha Compilador lê o programa inteiro, converte-o em um código-objeto (ou código de máquina) de modo que o computador consiga executá-lo diretamente Qual é mais rápido? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 21 / 120
  • 23. Introdução – Utilização dos Computadores Codificação ASCII Códigos ASCII representam texto em computadores, equipamentos de comunicação e outros dispositivos que utilizam texto Por exemplo, o computador não sabe o que é A, mas se você informar 65 e dizer que é um caractere, ele saberá que refere-se ao caractere A Na verdade, na verdade mesmo, ele nem sabe o que é 65, sabe o que é 01000001 Veja a tabela ASCII em: http://www.asciitable.com Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 22 / 120
  • 24. Introdução – Utilização dos Computadores Áreas de aplicação de computadores Praticamente TODAS, alguns exemplos: Sistemas de grande porte Sistemas web Banco de dados Bolsa de valores Processamentos pesados Estatística ... Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 23 / 120
  • 25. Conteúdo 1 Introdução 2 Lógica Proposicional Introdução Material 3 Algoritmos e Programação Estruturada 4 Portucol 5 Algoritmos com Qualidade Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 24 / 120
  • 26. Lógica Proposicional Introdução Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 25 / 120
  • 27. Lógica Proposicional – Introdução Introdução Antes de entrarmos com desenvolvimento de algoritmos, é interessante aprendermos a organizar nossas ideias e saber como organizá-las Nesse intuito, é apresentada um pouco da lógica proposicional para que vocês treinem formalização em linguagens não naturais No caso, uma linguagem matemática No futuro, Portugol e C Este capítulo servirá como uma base forte para a nossa disciplina, cujos resultados começarão a logo perceber Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 26 / 120
  • 28. Lógica Proposicional – Introdução Problema do Bezerro Em uma fazenda existem 20 vacas e seus 21 bezerros. Nenhuma possui dois bezerros. É possível existir tal fazenda? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 27 / 120
  • 29. Lógica Proposicional – Introdução Paradoxo do Barbeiro Em uma determinada cidade: Todo homem que é capaz de se barbear, o faz O barbeiro da cidade faz a barba daqueles – e apenas daqueles – que não são capazes de se barbear É possível existir tal cidade? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 28 / 120
  • 30. Lógica Proposicional – Introdução Problema do Peão e do Cavaleiro Peões mentem, cavaleiros dizem a verdade. Em um grupo, você pergunta para a pessoa A: “Quantos de vocês são cavaleiros?”. A responde, mas você não entende a resposta. Você então pergunta para a pessoa B: “O que ele disse?” e a resposta é: “Ele disse que exatamente dois de nós somos peões”. Então, C comenta: "Ele (B) está mentindo". C é um cavaleiro ou um peão? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 29 / 120
  • 31. Lógica Proposicional Material Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 30 / 120
  • 32. Lógica Proposicional – Material Material Iremos utilizar o material do Prof. Dr. Newton José Vieiraa, um dos melhores e mais renomados professores da Universidade Federal de Minas Gerais (UFMG) Vejam materiais: logicaproposicional_apostila.pdf logicaproposicional_slides.pdf a www.dcc.ufmg.br/~nvieira Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 31 / 120
  • 33. Conteúdo 1 Introdução 2 Lógica Proposicional 3 Algoritmos e Programação Estruturada Conceitos Importantes 4 Portucol 5 Algoritmos com Qualidade Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 32 / 120
  • 34. Algoritmos e Programação Estruturada Conceitos Importantes Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 33 / 120
  • 35. Algoritmos e Programação Estruturada – Conceitos Importantes Nessa seção, veremos: Algoritmos e Programação Estruturada Algoritmo Estrutura de dados Programação estruturada Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 34 / 120
  • 36. Algoritmos e Programação Estruturada – Conceitos Importantes Algoritmo “Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas.” ou “Um algoritmo é, em outras palavras, uma norma executável para estabelecer um certo efeito desejado, que na prática será geralmente a obtenção de uma solução a um certo tipo de problema.” Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 35 / 120
  • 37. Algoritmos e Programação Estruturada – Conceitos Importantes Exemplo – Algoritmo para descascar as batatas para o jantar " traga a cesta com batatas do porão" ; "pegue a panela no armário " ; se ( " saia é clara " ) { " coloque avental " ; } enquanto ( "número de batatas é insuficiente " ) { "descasque uma batata " ; } " devolva a cesta ao porão" ; Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 36 / 120
  • 38. Algoritmos e Programação Estruturada – Conceitos Importantes Estrutura de dados Representam as informações do problema a ser resolvido A formulação do algoritmo e a definição das estruturas de dados estão intimamente ligadas Enfim “decisões sobre a estruturação de dados não podem ser feitas sem conhecimento dos algoritmos aplicados a eles” e “a estrutura e a escolha dos algoritmos depende muitas vezes fortemente da estrutura dos dados” Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 37 / 120
  • 39. Algoritmos e Programação Estruturada – Conceitos Importantes Estrutura de dados Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 38 / 120
  • 40. Algoritmos e Programação Estruturada – Conceitos Importantes Qual das estruturas de dados anteriores é melhor para: retornar os elementos ordenados? pesquisar um elemento? acrescentar um elemento? inserir um elemento? remover um elemento? alterar o valor de um elemento? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 39 / 120
  • 41. Algoritmos e Programação Estruturada – Conceitos Importantes Programa Programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados Programar é basicamente construir algoritmos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 40 / 120
  • 42. Algoritmos e Programação Estruturada – Conceitos Importantes Programação Estruturada Basicamente, uma metodologia de projeto de programas visando: Facilitar a escrita dos programas Facilitar a leitura (o entendimento) dos programas permitir a verificação a priori dos programas facilitar a manutenção e modificação dos programas Todos os programas podem ser reduzidos a apenas três estruturas: sequência decisão iteração Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 41 / 120
  • 43. Algoritmos e Programação Estruturada – Conceitos Importantes Programação Estruturada – Exemplo 1 principal ( ) { i n t e i r o i = 1; /∗ Declarando um i n t e i r o ∗/ 3 imprima( "Números pares até 100: " ) ; enquanto ( i <= 100) { 5 se ( i mod 2 == 0) { imprima( i ) ; 7 } i = i + 1; 9 } } Observações Observe a sequência, a decisão e a iteração Não se preocupe com sintaxe, veremos o PortuCol logo Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 42 / 120
  • 44. Algoritmos e Programação Estruturada – Conceitos Importantes Exercícios Propostos Escreva um algoritmo para: Ler um número e dizer se é par ou ímpar Ler dois números x e y e imprimir xy Ler um caractere e dizer se é vogal ou consoante Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 43 / 120
  • 45. Algoritmos e Programação Estruturada – Conceitos Importantes Exercício Proposto Dada a modelagem acima, pense em um algoritmo para: descobrir o menor caminho entre duas cidades (Dijsktra) resolver o problema do caixeiro viajante Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 44 / 120
  • 46. Conteúdo 1 Introdução 2 Lógica Proposicional 3 Algoritmos e Programação Estruturada 4 Portucol Introdução Comandos Básicos Arranjos Funções 5 Algoritmos com Qualidade Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 45 / 120
  • 47. Portucol Introdução Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 46 / 120
  • 48. Portucol – Introdução Nessa seção, veremos: Portucol Introdução à linguagem (adaptação do Portugol para C) Sintaxe e semântica dos comandos básicos Leitura e escrita de algoritmos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 47 / 120
  • 49. Portucol – Introdução Portucol Pseudolinguagem de programação inspirada no conhecido Portugol Objetivo: Obter uma notação para algoritmos a ser utilizada na definição, na criação, no desenvolvimento e na documentação de um programa Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 48 / 120
  • 50. Portucol – Introdução Regras Básicas Os comandos devem ser escritos sempre em caixa baixa Ao final de cada comando deverá ser colocado um ponto e vírgula (;) Os nomes das variáveis e identificadores devem: ser compostos por letras (caixa baixa) e números, mas devem começar com uma letra Ex: idade, nome, a4... O algoritmo deve ser escrito de forma estruturada e indentada Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 49 / 120
  • 51. Portucol – Introdução Tipos de Dados Inteiro qualquer número inteiro, negativo, nulo ou positivo Ex: -5, 0, 12 ... Real qualquer número real, negativo, nulo ou positivo Ex: -5, 30.5, 0, 40.1, -5.2 ... Caractere um caractere alfanumérico, exemplo: ‘A’, ‘a’, ‘0’ ... String conjunto de caracteres alfanuméricos Ex: “Lógica”, “LP”, “Carnaval” ... Lógico verdadeiro ou falso Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 50 / 120
  • 52. Portucol – Introdução Declaração de variáveis inteiro idade; real preco; caractere inicial; String nome; lógico flag; Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 51 / 120
  • 53. Portucol – Introdução Comentários É recomendado e muito importante inserir comentários em seus códigos Os comentários devem estar entre /* e */ Exemplo principal ( ) { 2 i n t e i r o i = 1; /∗ Declarando um i n t e i r o ∗/ imprima( "Números pares até 100: " ) ; 4 enquanto ( i <= 100) { se ( i mod 2 == 0) { /∗ se o resto for 0 é par ∗/ 6 imprima( i ) ; } 8 i = i + 1; /∗ incrementa contador ∗/ } 10 } /∗ fim da função principal ∗/ Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 52 / 120
  • 54. Portucol – Introdução Operadores = atribuição + soma - subtração * multiplicação / divisão % resto (pode ser mod também) Funções mais comuns sqrt raiz quadrada ex: sqrt(4) pow exponenciação ex: pow(3,2) (equivale a 32) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 53 / 120
  • 55. Portucol – Introdução Operadores Relacionais == comparação != diferente <= menor ou igual >= maior ou igual > maior < menor Operadores Lógicos e conjunção ou disjunção não negação Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 54 / 120
  • 56. Portucol – Introdução Precedência 1 ( ) 2 funções 3 * / 4 + - 5 ==, !=, <, <=, >, >= 6 não 7 e 8 ou Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 55 / 120
  • 57. Portucol – Introdução Comando de entrada leia Faz a leitura de qualquer variável Ex: leia(x) imprima Faz a impressão de qualquer variável e texto Exemplos: imprima(x); imprima(“O valor digitado foi $x”) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 56 / 120
  • 58. Portucol Comandos Básicos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 57 / 120
  • 59. Portucol – Comandos Básicos Comandos condicionais - se Sintaxe do comando se se ( condicao ) { comando1; comando2; comando3; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 58 / 120
  • 60. Portucol – Comandos Básicos Observações: Os parênteses que envolvem a condição são OBRIGATÓRIOS A condição deverá retornar um tipo lógico Os comandos somente serão executados se a condição for verdadeira Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 59 / 120
  • 61. Portucol – Comandos Básicos Comandos condicionais - se O uso dos braços NÃO é obrigatório caso seja apenas um único comando Porém, a boa prática recomenda a utilização de braços independente do número de comandos Melhor indentação do código se ( verdade ) comando; equivale a: se ( verdade ) { comando; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 60 / 120
  • 62. Portucol – Comandos Básicos Comandos condicionais - se Como faço o conhecido: se verdade então . . . senão . . . se ( condicao ) { comando1; comando2; comando3; } senão { comando4; comando5; comando6; } Pergunta-se Quais comandos serão executados se a condição for verdadeira? E se for falsa? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 61 / 120
  • 63. Portucol – Comandos Básicos Comandos condicionais - se 1 principal ( ) { i n t e i r o a, b; 3 leia (a) ; leia (b) ; 5 se ( a >= b ) { imprima( "$a e maior ou igual a $b! " ) ; 7 } senão { imprima( "$a e menor que $b! " ) ; 9 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 62 / 120
  • 64. Portucol – Comandos Básicos Comandos condicionais - se Comando se podem ser aninhados 1 principal ( ) { i n t e i r o nota ; 3 leia (nota ) ; se ( nota >= 90 ) { 5 imprima( "Nota A" ) ; } senão se ( nota >= 80 ) { 7 imprima( "Nota B " ) ; } senão se ( nota >= 70 ) { 9 imprima( "Nota C" ) ; } senão { 11 imprima( "Reprovado" ) ; } 13 } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 63 / 120
  • 65. Portucol – Comandos Básicos Exemplo se principal ( ) { 2 caractere op; leia (op) ; 4 se (op == ’+ ’ ou op == ’−’ ) { imprima( "Operador de Baixa Prioridade " ) ; 6 } senão se (op == ’ / ’ ou op == ’∗ ’ ) { imprima( "Operador de Alta Prioridade " ) ; 8 } senão { imprima( "Operador Inválido " ) ; 10 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 64 / 120
  • 66. Portucol – Comandos Básicos Exercício de Fixação 01 Crie um algoritmo que leia dois números inteiros e imprima a soma, a subtração, a multiplicação, a divisão e o resto da divisão entre esses dois números. Observe que o valor do segundo número não deve ser 0, portanto faça um se para evitar isto. Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 65 / 120
  • 67. Portucol – Comandos Básicos Exercício de Fixação 02 Crie um algoritmo que leia os dois catetos de um triângulo (números reais a e b) e calcule a hipotenusa: h2 = a2 + b2 Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 66 / 120
  • 68. Portucol – Comandos Básicos Comandos repetição (enquanto, faça...enquanto e para) Comandos de repetição são utilizados para repetir um bloco de código Veremos três comandos de repetição: enquanto faça...enquanto para Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 67 / 120
  • 69. Portucol – Comandos Básicos Comandos repetição - enquanto O comando enquanto é utilizado para repetir um bloco de acordo com uma condição É considerado um loop de pré-teste Isto é, testa a condição antes de executar o bloco Sintaxe: enquanto ( condicao ) { comando1; comando2; comandoN; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 68 / 120
  • 70. Portucol – Comandos Básicos Comandos repetição - enquanto 1 principal ( ) { i n t e i r o i = 0; 3 enquanto ( i < 10 ) { 5 imprima( i ) ; i = i + 1; 7 } } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 69 / 120
  • 71. Portucol – Comandos Básicos Exercício de Fixação Faça um algoritmo que liste todos os números de 0 a 100 divisíveis por 3 Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 70 / 120
  • 72. Portucol – Comandos Básicos Comandos repetição - faça...enquanto O comando faça...enquanto é semelhante ao enquanto, contudo é um comando de repetição de pós-teste Isto é, somente ao final da execução do bloco que se verifica a condição Geralmente, é utilizado quando se deseja testar a condição somente a partir da segunda iteração Por exemplo, uma leitura da opção de um menu. Pede para digitar uma primeira vez. Somente se não digitar uma opção válida que pede para digitar novamente Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 71 / 120
  • 73. Portucol – Comandos Básicos Sintaxe: faça { comando1; comando2; comandoN; } enquanto ( condicao ) ; Observe o ponto-e-vírgula após os parênteses da condição. Não o esqueça! Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 72 / 120
  • 74. Portucol – Comandos Básicos Comandos repetição - faça...enquanto principal ( ) { i n t e i r o i = 0; faça { imprima( i ) ; } enquanto ( 1 != 1 ) ; } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 73 / 120
  • 75. Portucol – Comandos Básicos Exemplo principal ( ) { i n t e i r o i ; faça { imprima( " Digite um numero entre 0 e 10: " ) ; leia ( i ) ; } enquanto ( i < 0 ou i > 10 ) ; imprima( " "Numero digitado : $i " ) ; } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 74 / 120
  • 76. Portucol – Comandos Básicos Exercício de Fixação Faça um algoritmo que estipule um número mágico (entre 0 e 100) e peça para o usuário digitar números até que ele acerte. Quando não acertar, diga se o número mágico é menor ou maior que o número que ele digitou. Por exemplo: Número mágico estipulado: 7 1a tentativa: 90 (número mágico é menor) 2a tentativa: 4 (número mágico é maior) 3a tentativa: 7 (parabéns!) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 75 / 120
  • 77. Portucol – Comandos Básicos Comandos de repetição - para Comando de repetição mais poderoso do Portucol É composto por: Inicialização: executado uma única vez no início do loop Condição: executado sempre antes de cada iteração. Se verdadeira, o bloco é executado. Se falsa, é finalizado Operação : executado sempre ao término de cada iteração Sintaxe para ( inicializacao ; condicao ; operacao ) { comando1; comando2; . . . comandoN; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 76 / 120
  • 78. Portucol – Comandos Básicos Exemplo principal ( ) { 2 i n t e i r o i ; 4 para ( i = 0; i < 10; i = i +1) { imprima( i ) ; 6 } } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 77 / 120
  • 79. Portucol – Comandos Básicos Sintaxe No laço para, a inicialização, condição e operação são todas opcionais Exemplo 1 principal ( ) { i n t e i r o i ; 3 para ( ; ; ) { 5 imprima( i ) ; } 7 } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 78 / 120
  • 80. Portucol – Comandos Básicos Comandos de repetição - para Podemos ter um para dentro de outro, e outro dentro de outro, e outro dentro de outro... 1 principal ( ) { i n t e i r o i , j ; 3 para ( i = 0; i <= 2; i = i +1) { 5 para ( j = 0; j < 2; j = j +1) { imprima( " $i $j " ) 7 } } 9 } Pergunta-se Qual a saída? Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 79 / 120
  • 81. Portucol – Comandos Básicos Comandos de repetição - para Um comando para pode ter várias inicializações, uma condição complexa e várias operações Exemplo 1 principal ( ) { i n t e i r o i , d; 3 para ( i = 1 , d = 2 ∗ i ; i <= 10 ou d == 22; i = i +1, d = i ∗ 2) { 5 imprima( " $i $d" ) ; } 7 } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 80 / 120
  • 82. Portucol – Comandos Básicos Comando abandone Inserido dentro de um bloco de repetição (pode também ser enquanto ou faça...enquanto) Caso seja executado, o bloco de repetição é finalizado Exemplo 1 principal ( ) { i n t e i r o i = 0; 3 para ( ; i < 10; i = i + 1) { 5 se ( i == 3) { abandone; 7 } imprima( i ) ; 9 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 81 / 120
  • 83. Portucol – Comandos Básicos Comando continue Inserido dentro de um bloco de repetição Caso seja executado, a iteração atual do bloco de repetição é interrompida e parte para a próxima iteração Exemplo principal ( ) { 2 i n t e i r o i ; 4 para ( i = 0; i < 10; i = i + 1) { se ( i == 3 ou i == 5) { 6 continue ; } 8 imprima( i ) ; } 10 } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 82 / 120
  • 84. Portucol – Comandos Básicos Comando de repetição - para Logicamente, pode-se utilizar abandone e continue conjuntamente Exemplo principal ( ) { 2 i n t e i r o i , j ; 4 para ( i = 0; i < 3; i = i + 1) { se ( i == 1) { 6 continue ; } 8 para ( j = 0; j < 2; j ++) { imprima( " $i $j " ) ; 10 abandone; /∗ abandona sempre o laço mais interno ∗/ } 12 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 83 / 120
  • 85. Portucol – Comandos Básicos Exercício de Fixação Faça um algoritmo que leia diversas idades e depois exiba a média. Duas considerações: - O algoritmo deverá ignorar idades acima de 120 anos; - O algoritmo só para de ler idades quando receber o valor -1. Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 84 / 120
  • 86. Portucol – Comandos Básicos Funções importantes tamanho retorna o tamanho de um string ou arranjo. Por exemplo, suponha que str contenha “ANA”, assim tamanho(str) retornará 3 encerra encerra o programa abruptamente Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 85 / 120
  • 87. Portucol – Comandos Básicos Importante Ao ler um string, você pode acessar cada posição utilizando colchetes [ ] Índices vão de 0 a tam-1 Exemplo 1 principal ( ) { string s t r = "ANA" ; 3 i n t e i r o i , contador = 0; para ( i =0; i < tamanho( s t r ) ; i = i + 1 ) { 5 se ( s t r [ i ] == ’A’ ) { contador = contador + 1; 7 } } 9 imprime ( "Numero de A’ s : $contador " ) ; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 86 / 120
  • 88. Portucol Arranjos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 87 / 120
  • 89. Portucol – Arranjos Arranjos - Conceito Arranjos – também conhecidos como vetor, array etc – são coleções de um mesmo tipo em sequência Arranjos podem ser de qualquer tipo visto (inteiro, real, caractere, string ou lógico) Pode se ter um arranjo de inteiros ou um arranjo de caracteres ou um arranjo de arranjo de reais Contudo, não se pode ter um arranjo que contenha inteiros e strings Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 88 / 120
  • 90. Portucol – Arranjos Arranjos - Declaração Declaração: i n t e i r o notas [ 5 ] ; /∗ Arranjo de 5 i n t e i r o s ∗/ 2 caractere letras [ 5 ] ; /∗ Arranjo de 5 caracteres ∗/ Assim como variáveis comuns, os elementos do arranjo não são inicializados automaticamente. Contudo, você pode declarar já inicializando: i n t e i r o notas [5] = {4 ,6 ,6 ,9 ,8}; 2 caractere letras [5] = { ’A’ , ’E ’ , ’ I ’ , ’O’ , ’U’ } ; Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 89 / 120
  • 91. Portucol – Arranjos Arranjos - Declaração Um arranjo de tamanho n, tem suas posições indexadas de 0 a n-1 Para obter o tamanho de um arranjo, basta chamar a função tamanho Exemplo principal ( ) { 2 i n t e i r o v [5] = {1 , 2 , 3 , 4 , 5 } ; i n t e i r o i ; 4 para ( i =0; i < tamanho(v ) ; i = i + 1 ) { imprima( v[ i ] ) ; 6 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 90 / 120
  • 92. Portucol – Arranjos Arranjos - Acesso aos elementos Arranjos permite recuperar ou alterar qualquer um de seus elementos Os arranjos sempre iniciam-se na posição 0 Isto indica que ele termina em uma posição inferior ao tamanho (n-1) Exemplo 1 principal ( ) { caractere v [5] = { ’A’ , ’E ’ , ’Y ’ , ’O’ , ’U’ } ; 3 imprima( "A primeira vogal é $v [0] " ) ; 5 v [2] = ’ I ’ ; 7 imprima( "A última vogal é $v [4] " ) ; 9 } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 91 / 120
  • 93. Portucol – Arranjos Arranjos Multidimensionais Pode-se criar um arranjo de arranjos O mais comum é o bidimensional que vemos como uma matriz A declaração é somente acrescentar o número de colunas Por exemplo: inteiro matriz[4][3] declara-se uma matriz de 4 linhas e 3 colunas matriz[4][3] = {{1,0,0},{0,1,2},{2,3,4},{0,6,7}}; Representação: 1 0 0 0 1 2 2 3 4 0 6 7 Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 92 / 120
  • 94. Portucol – Arranjos Arranjo Bidimensional – Exemplo Declarando e inicializando uma matriz 3x2 e imprimindo a soma dos valores 1 principal ( ) { i n t e i r o v [ 3 ] [ 2 ] = { {1 , 4} , {5 , 6} , {9 , −11} } ; 3 i n t e i r o i , j , soma = 0; para ( i =0; i < tamanho(v ) ; i = i + 1 ) { 5 para ( j =0; j < tamanho(v[ i ] ) ; j = j + 1 ) { soma = soma + v[ i ] [ j ] ; 7 } } 9 imprima( "Soma da matriz : $soma" ) ; } matriz 1 4 5 6 9 -11 Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 93 / 120
  • 95. Portucol – Arranjos Exercício de Fixação 01 Crie um algoritmo que declare e leia cada posição de um arranjo de inteiros de tamanho 5 e imprima a soma e a média aritmética Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 94 / 120
  • 96. Portucol – Arranjos Exercício de Fixação 02 Crie um algoritmo que declare e leia cada posição de um arranjo de reais de tamanho 10 e imprima a soma total deste arranjo considerando a seguinte fórmula: soma = 1 * array[0] + 2 * array[1] + ... + 9 * array[8] + 10 * array[9] Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 95 / 120
  • 97. Portucol Funções Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 96 / 120
  • 98. Portucol – Funções Função Um algoritmo é uma coleção de funções Uma das funções deve se chamar principal por onde começa a execução do algoritmo Uma função pode: receber parâmetros declarar variáveis locais conter instruções executáveis retornar um valor Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 97 / 120
  • 99. Portucol – Funções Função O comando retorna efetua o retorno (término) da função Uma função pode ou não ter um retorno Uma função pode ou não ter parâmetros formais Exemplos m1( ) { . . . } /∗ sem retorno e sem parâmetros formais ∗/ 2 m2( real x ) { . . . } /∗ sem retorno e com um par . formal ∗/ 4 i n t e i r o m3( ) { . . . } /∗ com retorno e sem parâmetros formais ∗/ 6 i n t e i r o m4( caractere c, i n t e i r o i ) { . . . } /∗ com retorno e 2 par . ∗/ Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 98 / 120
  • 100. Portucol – Funções Função Sintaxe: retorno nome ( < param { , param} > ) { corpo } Exemplos 1 imprimir ( ) { . . . } 3 i n t e i r o dobro( i n t e i r o x ) { . . . } 5 real somar( real a, real b) { . . . } 7 l i s t a r ( i n t e i r o notas [ ] ) { . . . } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 99 / 120
  • 101. Portucol – Funções Função Retorno de funções Uma função pode retornar valores de qualquer tipo Uma função que retorna nada, não declara retorno A expressão que segue o retorna, é o valor retornado pela função não é necessário parênteses Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 100 / 120
  • 102. Portucol – Funções Função Término de uma função Ao encontrar a chave de fechamento Ao ser retornada (retorna) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 101 / 120
  • 103. Portucol – Funções Exercícios de Fixação Implementar as funções: soma fatorial escreveMaior retornaMenorElemento retornaMaiorElemento retornaMedia Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 102 / 120
  • 104. Portucol – Funções Exercício - Soma 1 principal ( ) { real x , y , total ; 3 leia ( x ) ; leia (y ) ; 5 total = soma( x , y ) ; imprima( " $x + $y = $total " ) ; 7 } 9 real soma ( real x , real y) { retorna x+y ; 11 } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 103 / 120
  • 105. Portucol – Funções Exercício - Fatorial 1 principal ( ) { i n t e i r o n ; 3 leia (n ) ; imprima( fat (n) ) ; 5 } 7 i n t e i r o fat ( i n t e i r o n) { i n t e i r o i , resultado = 1; 9 se (n == 0 ou n == 1) { retorna 1; 11 } para ( i =2; i <= n ; i = i +1 ) { 13 resultado = resultado ∗ i ; } 15 retorna resultado ; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 104 / 120
  • 106. Portucol – Funções Exercício - Escreve Maior principal ( ) { 2 i n t e i r o n ; leia (n ) ; 4 retornaMaior ( n ) ; } 6 retornaMaior ( i n t e i r o n) { 8 i n t e i r o i ; para ( i = n ; i >= 1; i = i − 1) { 10 imprime ( i ) ; se ( i != 1 ) { 12 imprime ( " > " ) ; } 14 } } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 105 / 120
  • 107. Portucol – Funções Exercício - Retorna Menor Elemento 1 principal ( ) { i n t e i r o v [5] = { 2 , 4 , 5 , 1 , 3 } , min ; 3 min = menorElemento(v ) ; imprima( "Menor elemento : $min " ) ; 5 } 7 i n t e i r o retornaMenorElemento ( i n t e i r o v [ ] ) { i n t e i r o i ; 9 i n t e i r o menor = v [ 0 ] ; para ( i = 1; i < tamanho(v ) ; i = i +1) { 11 se (v[ i ] < menor) { menor = v[ i ] ; 13 } } 15 retorna menor; } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 106 / 120
  • 108. Conteúdo 1 Introdução 2 Lógica Proposicional 3 Algoritmos e Programação Estruturada 4 Portucol 5 Algoritmos com Qualidade Introdução Boas práticas de programação Metodologia para o desenvolvimento de algoritmos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 107 / 120
  • 109. Algoritmos com Qualidade Introdução Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 108 / 120
  • 110. Algoritmos com Qualidade – Introdução Nessa seção, veremos: Boas práticas de programação Metodologia para o desenvolvimento de algoritmos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 109 / 120
  • 111. Algoritmos com Qualidade Boas práticas de programação Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 110 / 120
  • 112. Algoritmos com Qualidade – Boas práticas de programação 1. Algoritmos devem ser feitos para serem lidos por seres humanos Outras pessoas poderão ter que corrigí-lo, adaptá-lo, modificá-lo... Ainda, talvez você mesmo tenha que entendê-lo depois de um ano que escreveu 2. Comente seu código Comentário é sinal de saber desenvolver Facilita o entendimento do código Existem coisas que você faz que – poucos segundos depois – nem lembra como fez Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 111 / 120
  • 113. Algoritmos com Qualidade – Boas práticas de programação 3. No entanto, comentários devem acrescentar algo não apenas frasear os comandos Comentários não dizem o que está sendo feito, mas sim, por quê Exemplo de comentário que não se deve fazer: imprima( total ); /* imprime o total */ Exemplo de comentário que se deve fazer: /* implementação da RN021 */ se ( taxaJuros < 3.0 e selic > taxaJuros ) { ... } Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 112 / 120
  • 114. Algoritmos com Qualidade – Boas práticas de programação 4. Use comentários no prólogo de funções É interessante que funções tenham comentários contendo: um descrição sucinta do que faz autor data de escrita 5. Utilize espaços em branco para melhorar a legibilidade melhoram substancialmente a aparência de algoritmos principalmente no início do algoritmo, pois pode ser que haja a necessidade de mais variáveis Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 113 / 120
  • 115. Algoritmos com Qualidade – Boas práticas de programação 6. Variáveis com nomes representativos Nomes de variáveis devem identificar o que representam Por exemplo, x = y + z é muito menos claro que preco = custo + lucro Outras dicas: Para variáveis de iteração, use i, j, k... Para variáveis auxiliares, use aux 7. Um comando por linha Vários comandos por linha, prejudicam a legibilidade Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 114 / 120
  • 116. Algoritmos com Qualidade – Boas práticas de programação 8. Utilize parênteses para aumentar a legibilidade e prevenir erros bobos Por exemplo: A * B * C / (D * E * F) seria ainda mais claro se fosse: (A * B * C) / (D * E * F) 9. Identação é imprencidível Melhora a legibilidade Apresenta a estrutura lógica do algortimo Deve seguir o padrão (novos blocos são identados) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 115 / 120
  • 117. Algoritmos com Qualidade – Boas práticas de programação 10. Alteração no algoritmo → Alteração no comentário Sempre que um algoritmo for alterado, os comentários também devem ser alterados, não apenas os comandos Antes não comentar do que deixar um comentário errado Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 116 / 120
  • 118. Algoritmos com Qualidade Metodologia para o desenvolvimento de algoritmos Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 117 / 120
  • 119. Algoritmos com Qualidade – Metodologia para o desenvolvimento de algoritmos Uma boa sequência a ser seguida: Passo 1: leia o enunciado do problema até o final (sem fazer nenhum tipo de anotação) Passo 2: repita o “Passo 1” até entender Passo 3: levantar e analisar todas as saídas do problema Passo 4: levantar e analisar todas as entradas do problema Passo 5: levantar as variáveis necessárias Passo 6: pensar como transformar entradas em saídas Passo 7: testar cada parte do algoritmo (simule entradas e confira saídas) Passo 8: testar o algoritmo como um todo (simule entradas e confira saídas) Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 118 / 120
  • 120. Algoritmos com Qualidade – Metodologia para o desenvolvimento de algoritmos Exercício de Fixação De acordo com a metodologia, desenvolva um algoritmo que leia as três variáveis da equação de 2o grau (a, b e c) e imprima se a parábola gerada pela equação toca o eixo das abcissas ou não. Se tocar, imprima também as raízes resultantes Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 119 / 120
  • 121. Referências Angelo de Moura Guimarães e Newton Albert de Castilho Lages. Algoritmos e Estruturas de Dados. Editora LTC, 1994. Victorine Viviane Mizrahi. Treinamento em Linguagem C. Prentice-Hall, 2 edition, 2008. Newton José Vieira. Lógica aplicada à computação. http://homepages.dcc.ufmg.br/ nvieira/cursos/ldt/ notas-de-aulas/logica1.pdf, 2007. Ricardo Terra (rterrabh [at] gmail.com) Lógica de Programação Abril, 2011 120 / 120