SlideShare uma empresa Scribd logo
1 de 34
ALGORITMOS E
PROGRAMAÇÃO:
CONTEXTOS E PRÁTICAS
Luiz Paulo Pereira Silva
bluizp@gmail.com
1.1 Conceito de lógica
◦O dicionário Houaiss descreve a lógica da seguinte
forma:

“1. Estudo filosófico das formas do pensamento
(dedução, indução, hipótese, inferência etc.) e do
raciocínio, considerados como condição para o
conhecimento; 2. Forma de encadeamento e/ou de
raciocínio; 3. Coerência, fundamento”
Introdução à Lógica
01/09/15
1.2 Conceito de programação de
computadores
◦A principal característica que diferencia um
computador de qualquer outro equipamento ele-
trônico é sua “programabilidade”, ou seja, a
capacidade de ser programável para executar um
grande número de tarefas diferentes.
01/09/15
01/09/15
No entanto, tudo que os computadores (e outros
dispositivos controlados por microprocessadores ou
microcontroladores) entendem são sinais elétricos,
representados pelos dígitos 0 (ausência de voltagem)
e 1 (presença de voltagem), também conhecidos
como bits. E são esses bits, ou mais precisamente a
combinação deles, que formam todas as instruções
que fazem o computador agir da forma que
desejamos. Sendo assim, eles são completamente
ignorantes no que diz respeito ao reco- nhecimento
de comandos dados em nossa própria língua.
01/09/15
01/09/15
01/09/15
AULA 02
01/09/15
Existem diversos tipos de linguagens de
programação, que trabalham de forma diferente
e possuem estrutura e comandos diferentes.
No início da era da computação, os
programadores se viam obrigados a programar
diretamente em linguagem de máquina,
composta por inúmeras combina- ções de 0s e
1s, o chamado código binário.
2.1 Linguagens de
programação
01/09/15
Como era muito difícil decorar a função que
cada uma das combinações exercia no
processador, criou-se então uma linguagem
mais próxima do entendi- mento humano que
foi denominada de Assembly.
Em inglês significa montagem
01/09/15
01/09/15
Existem dois termos técnicos muito empregados em
programação que devem ser esclarecidos antes de
prosseguirmos. O primeiro é código-fonte, que designa o texto
escrito numa linguagem de programação e que pode ser lido
por qualquer pessoa, mesmo quem não sabe programar. Esse
texto segue as regras impostas pela linguagem, como sintaxe
dos coman- dos e funções.
O segundo termo é programa executável, que consiste numa
sequência de instruções em linguagem de máquina (códigos
binários) inteligível ao computador e muito difícil (ou quase
impossível) de ser entendido por um ser humano. Esse pro-
grama executável é criado por dois processos distintos,
conhecidos como interpretação e compilação.
Fique de olho!
01/09/15
Na interpretação, um processo empregado
principalmente pela linguagem BASIC
(Beginners All Purpose Symbolic Instruction
Code) nos computadores das décadas de 1970
a 1990, o código-fonte do programa é
convertido em linguagem de máquina à medida
que o programa é executado.
01/09/15
Já em programas compilados, o código-fonte
é inteiramente convertido em linguagem de
máquina uma única vez. O software que efetua
essa conversão é chamado de compilador.
01/09/15
Esses arquivos objetos são uma versão
intermediária entre o código-fonte e o código
exe- cutável. Não é possível rodá-los
diretamente, sendo necessário o processo de
linkedição, como é chamada a ligação desses
arquivos com as bibliotecas da linguagem. Na
compilação, cada comando ou função existente
no código-fonte é convertido numa chamada
para o código real que se encontra gravado
nessas bibliotecas.
01/09/15
01/09/15
Um terceiro método de execução de programas é
denominado pseudocompilação. Nele, o compilador
gera um código intermediário, com instruções em
código de máquina, mas não resolve os endereços de
chamada a rotinas da biblioteca de funções da
linguagem. Durante a execução, um programa
denominado Run-time é carregado na memória junto
com o código compilado. Esse Run-time é
responsável por determinar os endereços de memória
das funções e procedimentos chama- dos pelo
programa durante o tempo de execução.
01/09/15
Existe ainda o método empregado pela linguagem
Java, que é bastante semelhante à pseudo-
compilação. O Run-time dessa linguagem consiste
num programa denominado Máquina Virtual Java
(JVM - Java Virtual Machine), que não apenas resolve
as referências de endereço, mas também oferece uma
camada de software que serve de ponte entre o nosso
programa e o sistema operacional.
01/09/15
Todo programa de computador é o resultado da busca pela
solução de um problema. Considere como exemplo a
necessidade de registrar as vendas de uma empresa. É criado
então um rascunho da ideia principal.
A partir desse rascunho é desenvolvido o algoritmo do
programa, que pode ser representado por um diagrama de
blocos ou por uma descrição narrativa bastante detalhada de
todos os processos.
Com base nesse algoritmo, o programador constrói o programa
utilizando uma linguagem de programação. O programa é
testado para detecção de possíveis problemas e/ou erros e
quando for finalizado, se torna disponível ao usuário.
2.2 Do problema ao programa
01/09/15
01/09/15
01/09/15
3.1 Programação modular
◦Assim como ocorre quando precisamos solucionar
um problema de Matemática ou Física, ao nos
depararmos com situações de programação difíceis
de serem resolvidas, a melhor opção é decompor o
problema em porções menores, mais fáceis de
trabalhar. Com isso dividimos a complexidade de
forma a simplificar o problema.
Técnicas de Programação
01/09/15
Cada parte em que o
problema é dividido resulta
num fragmento de código que
denominamos de módulo ou
subprograma. Essa divisão de
um programa maior em
diversos subprogramas é uma
técnica denominada de
programação modular.
01/09/15
A técnica de programação estruturada é
fundamentada na construção de sistemas com a
utilização de blocos como estruturas básicas, que
podem ser expandidas até o nível de complexidade
necessário à resolução de um determinado problema.
Um bloco é formado por diversas instruções que são
executadas em conjunto por estarem logicamente
ligadas.
3.2 Programação estruturada
01/09/15
O código final obtido pela programação
estruturada é muito claro e de fácil
entendimento, mesmo por outras pessoas que
não sejam as que desenvolveram o código.
01/09/15
Entre as principais vantagens da programação
estruturada temos:
◦possibilidade de padronização devido ao número
reduzido de estruturas;
◦as estruturas podem ser inseridas em módulos
distintos;
◦programas estruturados geralmente já possuem
uma autodocumentação interna;
◦aumento na produtividade dos programadores.
01/09/15
A técnica de programação orientada por objeto
surgiu no final dos anos de 1970 e início de
1980, quando os pesquisadores do Centro de
Pesquisas da Xerox, em Palo Alto, Califórnia,
desenvolveram uma linguagem de programação
chamada SmallTalk, que utilizava pela primeira
vez o conceito de classes e objetos.
3.3 Programação orientada por objeto
01/09/15
A ideia básica por trás dessa técnica é a
capacidade de reutilização de códigos já
prontos, denominados classes, para criarmos as
partes vitais do programa, denominadas de
objetos. Com isso é possível economizar um
bom tempo no processo de desenvolvimento de
um programa.
01/09/15
Uma característica interessante da
programação orientada por objetos é que
podemos derivar um objeto de outro
previamente criado. Em outras palavras,
significa que podemos criar um objeto que
herda alguns atributos e ações do antecessor.
01/09/15
Entre as principais linguagens de programação
orientada por objetos temos C++, Object Pascal
e Java. A ferramenta de projeto mais utilizada
no desenvolvimento de aplicações que emprega
essa metodologia é a UML (Unified Modeling
Language - Linguagem de Modelagem
Unificada).
01/09/15
01/09/15
Enviar o arquivo que você criou com a pasta e
subpastas no email:
bluizp@gmail.com
Finalizar o Exercício
01/09/15
Obrigado pela
atenção...
Luiz Paulo Pereira Silva
bluizp@gmail.com

Mais conteúdo relacionado

Mais procurados

Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrenteFabio Duarte
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programaçãoSandro Lopes
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalGustavo Coutinho
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)João Palmeiro
 
Tópicos - Computacao Paralela Programacao 2 (Visão geral)
Tópicos - Computacao Paralela Programacao 2 (Visão geral)Tópicos - Computacao Paralela Programacao 2 (Visão geral)
Tópicos - Computacao Paralela Programacao 2 (Visão geral)Luiz Arthur
 
Gabarito da P1 de PROG
Gabarito da P1 de PROGGabarito da P1 de PROG
Gabarito da P1 de PROGMarcos de Vita
 

Mais procurados (19)

Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrente
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Resumo OpenMP
Resumo OpenMPResumo OpenMP
Resumo OpenMP
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Software
SoftwareSoftware
Software
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 
Pesl latex
Pesl latexPesl latex
Pesl latex
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
 
Tópicos - Computacao Paralela Programacao 2 (Visão geral)
Tópicos - Computacao Paralela Programacao 2 (Visão geral)Tópicos - Computacao Paralela Programacao 2 (Visão geral)
Tópicos - Computacao Paralela Programacao 2 (Visão geral)
 
Gabarito da P1 de PROG
Gabarito da P1 de PROGGabarito da P1 de PROG
Gabarito da P1 de PROG
 

Destaque

【愛知教育大学】平成19年環境報告書
【愛知教育大学】平成19年環境報告書【愛知教育大学】平成19年環境報告書
【愛知教育大学】平成19年環境報告書env26
 
Ms Power Point
Ms Power PointMs Power Point
Ms Power PointJeenko
 
Moek's Portfolio Before 2007'
Moek's Portfolio Before 2007'Moek's Portfolio Before 2007'
Moek's Portfolio Before 2007'Kuo-Chen Mo
 
Olatz Eta Maitane
Olatz Eta MaitaneOlatz Eta Maitane
Olatz Eta Maitaneannetainhoa
 
Guia turistico - Marcio Marques
Guia turistico - Marcio MarquesGuia turistico - Marcio Marques
Guia turistico - Marcio MarquesGeovane Reis
 
Nf se layout_rps_sao paulo_versao_3.4
Nf se layout_rps_sao paulo_versao_3.4Nf se layout_rps_sao paulo_versao_3.4
Nf se layout_rps_sao paulo_versao_3.4Welington1510
 
Presidencia Digital Fernando Paulsen
Presidencia Digital Fernando PaulsenPresidencia Digital Fernando Paulsen
Presidencia Digital Fernando Paulsenojopiojo
 
Auditoría wireless
Auditoría wirelessAuditoría wireless
Auditoría wirelessruben0909
 
SesióN 1 (Reforma E InformáTica)
SesióN 1 (Reforma E InformáTica)SesióN 1 (Reforma E InformáTica)
SesióN 1 (Reforma E InformáTica)guest79aedd
 
TesisCorregido
TesisCorregidoTesisCorregido
TesisCorregidomartinrz
 
Blogs Y Periodismo (Presentación Rosario Blog Day)
Blogs Y Periodismo (Presentación Rosario Blog Day)Blogs Y Periodismo (Presentación Rosario Blog Day)
Blogs Y Periodismo (Presentación Rosario Blog Day)alvaroliuzzi
 
Amigos Viniciusenespa Ol
Amigos Viniciusenespa OlAmigos Viniciusenespa Ol
Amigos Viniciusenespa Olmanita
 
Cursos 2trimestre2013..
Cursos 2trimestre2013..Cursos 2trimestre2013..
Cursos 2trimestre2013..Cris Chávez
 
Enquestes de independencia
Enquestes de independenciaEnquestes de independencia
Enquestes de independenciacercamon
 
Video Taller Carlos Sarmiento Web 20
Video Taller Carlos Sarmiento Web 20Video Taller Carlos Sarmiento Web 20
Video Taller Carlos Sarmiento Web 20Carlos Sanchez
 

Destaque (20)

Ponencia
PonenciaPonencia
Ponencia
 
【愛知教育大学】平成19年環境報告書
【愛知教育大学】平成19年環境報告書【愛知教育大学】平成19年環境報告書
【愛知教育大学】平成19年環境報告書
 
Ms Power Point
Ms Power PointMs Power Point
Ms Power Point
 
Condado De Kent
Condado De  KentCondado De  Kent
Condado De Kent
 
Moek's Portfolio Before 2007'
Moek's Portfolio Before 2007'Moek's Portfolio Before 2007'
Moek's Portfolio Before 2007'
 
Apresentação chateau marista p
Apresentação chateau marista pApresentação chateau marista p
Apresentação chateau marista p
 
Olatz Eta Maitane
Olatz Eta MaitaneOlatz Eta Maitane
Olatz Eta Maitane
 
Guia turistico - Marcio Marques
Guia turistico - Marcio MarquesGuia turistico - Marcio Marques
Guia turistico - Marcio Marques
 
Phonegap #MeetApp
Phonegap #MeetAppPhonegap #MeetApp
Phonegap #MeetApp
 
Nf se layout_rps_sao paulo_versao_3.4
Nf se layout_rps_sao paulo_versao_3.4Nf se layout_rps_sao paulo_versao_3.4
Nf se layout_rps_sao paulo_versao_3.4
 
Presidencia Digital Fernando Paulsen
Presidencia Digital Fernando PaulsenPresidencia Digital Fernando Paulsen
Presidencia Digital Fernando Paulsen
 
Auditoría wireless
Auditoría wirelessAuditoría wireless
Auditoría wireless
 
SesióN 1 (Reforma E InformáTica)
SesióN 1 (Reforma E InformáTica)SesióN 1 (Reforma E InformáTica)
SesióN 1 (Reforma E InformáTica)
 
TesisCorregido
TesisCorregidoTesisCorregido
TesisCorregido
 
Blogs Y Periodismo (Presentación Rosario Blog Day)
Blogs Y Periodismo (Presentación Rosario Blog Day)Blogs Y Periodismo (Presentación Rosario Blog Day)
Blogs Y Periodismo (Presentación Rosario Blog Day)
 
Amigos Viniciusenespa Ol
Amigos Viniciusenespa OlAmigos Viniciusenespa Ol
Amigos Viniciusenespa Ol
 
Cursos 2trimestre2013..
Cursos 2trimestre2013..Cursos 2trimestre2013..
Cursos 2trimestre2013..
 
Procesos08
Procesos08Procesos08
Procesos08
 
Enquestes de independencia
Enquestes de independenciaEnquestes de independencia
Enquestes de independencia
 
Video Taller Carlos Sarmiento Web 20
Video Taller Carlos Sarmiento Web 20Video Taller Carlos Sarmiento Web 20
Video Taller Carlos Sarmiento Web 20
 

Semelhante a Aula 01 algoritmo

Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardozedaesquina98
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptBrennoPimenta
 
Plataforma net pdf
Plataforma net pdfPlataforma net pdf
Plataforma net pdfAPlima
 
Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturasFábio Andrade
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisHenry Raúl González Brito
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Leinylson Fontinele
 
Linguagem c wellington telles - aula 01
Linguagem c   wellington telles - aula 01Linguagem c   wellington telles - aula 01
Linguagem c wellington telles - aula 01profwtelles
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpMarcio Chiaveli
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpPedro Vuvu Alvaro
 
Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostilaNathiele Lacerda
 

Semelhante a Aula 01 algoritmo (20)

Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Algoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardoAlgoritmia para o site do 10gi marcelo e ricardo
Algoritmia para o site do 10gi marcelo e ricardo
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
 
Plataforma net pdf
Plataforma net pdfPlataforma net pdf
Plataforma net pdf
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturas
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores Digitais
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
 
Poo frank
Poo frankPoo frank
Poo frank
 
joane
joane joane
joane
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Linguagem c wellington telles - aula 01
Linguagem c   wellington telles - aula 01Linguagem c   wellington telles - aula 01
Linguagem c wellington telles - aula 01
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharp
 
Jogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharpJogos pe logica_aplicada_apostila_c_sharp
Jogos pe logica_aplicada_apostila_c_sharp
 
Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostila
 
Hardware
HardwareHardware
Hardware
 

Aula 01 algoritmo

  • 1. ALGORITMOS E PROGRAMAÇÃO: CONTEXTOS E PRÁTICAS Luiz Paulo Pereira Silva bluizp@gmail.com
  • 2. 1.1 Conceito de lógica ◦O dicionário Houaiss descreve a lógica da seguinte forma:  “1. Estudo filosófico das formas do pensamento (dedução, indução, hipótese, inferência etc.) e do raciocínio, considerados como condição para o conhecimento; 2. Forma de encadeamento e/ou de raciocínio; 3. Coerência, fundamento” Introdução à Lógica 01/09/15
  • 3. 1.2 Conceito de programação de computadores ◦A principal característica que diferencia um computador de qualquer outro equipamento ele- trônico é sua “programabilidade”, ou seja, a capacidade de ser programável para executar um grande número de tarefas diferentes. 01/09/15
  • 5. No entanto, tudo que os computadores (e outros dispositivos controlados por microprocessadores ou microcontroladores) entendem são sinais elétricos, representados pelos dígitos 0 (ausência de voltagem) e 1 (presença de voltagem), também conhecidos como bits. E são esses bits, ou mais precisamente a combinação deles, que formam todas as instruções que fazem o computador agir da forma que desejamos. Sendo assim, eles são completamente ignorantes no que diz respeito ao reco- nhecimento de comandos dados em nossa própria língua. 01/09/15
  • 9. Existem diversos tipos de linguagens de programação, que trabalham de forma diferente e possuem estrutura e comandos diferentes. No início da era da computação, os programadores se viam obrigados a programar diretamente em linguagem de máquina, composta por inúmeras combina- ções de 0s e 1s, o chamado código binário. 2.1 Linguagens de programação 01/09/15
  • 10. Como era muito difícil decorar a função que cada uma das combinações exercia no processador, criou-se então uma linguagem mais próxima do entendi- mento humano que foi denominada de Assembly. Em inglês significa montagem 01/09/15
  • 12. Existem dois termos técnicos muito empregados em programação que devem ser esclarecidos antes de prosseguirmos. O primeiro é código-fonte, que designa o texto escrito numa linguagem de programação e que pode ser lido por qualquer pessoa, mesmo quem não sabe programar. Esse texto segue as regras impostas pela linguagem, como sintaxe dos coman- dos e funções. O segundo termo é programa executável, que consiste numa sequência de instruções em linguagem de máquina (códigos binários) inteligível ao computador e muito difícil (ou quase impossível) de ser entendido por um ser humano. Esse pro- grama executável é criado por dois processos distintos, conhecidos como interpretação e compilação. Fique de olho! 01/09/15
  • 13. Na interpretação, um processo empregado principalmente pela linguagem BASIC (Beginners All Purpose Symbolic Instruction Code) nos computadores das décadas de 1970 a 1990, o código-fonte do programa é convertido em linguagem de máquina à medida que o programa é executado. 01/09/15
  • 14. Já em programas compilados, o código-fonte é inteiramente convertido em linguagem de máquina uma única vez. O software que efetua essa conversão é chamado de compilador. 01/09/15
  • 15. Esses arquivos objetos são uma versão intermediária entre o código-fonte e o código exe- cutável. Não é possível rodá-los diretamente, sendo necessário o processo de linkedição, como é chamada a ligação desses arquivos com as bibliotecas da linguagem. Na compilação, cada comando ou função existente no código-fonte é convertido numa chamada para o código real que se encontra gravado nessas bibliotecas. 01/09/15
  • 17. Um terceiro método de execução de programas é denominado pseudocompilação. Nele, o compilador gera um código intermediário, com instruções em código de máquina, mas não resolve os endereços de chamada a rotinas da biblioteca de funções da linguagem. Durante a execução, um programa denominado Run-time é carregado na memória junto com o código compilado. Esse Run-time é responsável por determinar os endereços de memória das funções e procedimentos chama- dos pelo programa durante o tempo de execução. 01/09/15
  • 18. Existe ainda o método empregado pela linguagem Java, que é bastante semelhante à pseudo- compilação. O Run-time dessa linguagem consiste num programa denominado Máquina Virtual Java (JVM - Java Virtual Machine), que não apenas resolve as referências de endereço, mas também oferece uma camada de software que serve de ponte entre o nosso programa e o sistema operacional. 01/09/15
  • 19. Todo programa de computador é o resultado da busca pela solução de um problema. Considere como exemplo a necessidade de registrar as vendas de uma empresa. É criado então um rascunho da ideia principal. A partir desse rascunho é desenvolvido o algoritmo do programa, que pode ser representado por um diagrama de blocos ou por uma descrição narrativa bastante detalhada de todos os processos. Com base nesse algoritmo, o programador constrói o programa utilizando uma linguagem de programação. O programa é testado para detecção de possíveis problemas e/ou erros e quando for finalizado, se torna disponível ao usuário. 2.2 Do problema ao programa 01/09/15
  • 22. 3.1 Programação modular ◦Assim como ocorre quando precisamos solucionar um problema de Matemática ou Física, ao nos depararmos com situações de programação difíceis de serem resolvidas, a melhor opção é decompor o problema em porções menores, mais fáceis de trabalhar. Com isso dividimos a complexidade de forma a simplificar o problema. Técnicas de Programação 01/09/15
  • 23. Cada parte em que o problema é dividido resulta num fragmento de código que denominamos de módulo ou subprograma. Essa divisão de um programa maior em diversos subprogramas é uma técnica denominada de programação modular. 01/09/15
  • 24. A técnica de programação estruturada é fundamentada na construção de sistemas com a utilização de blocos como estruturas básicas, que podem ser expandidas até o nível de complexidade necessário à resolução de um determinado problema. Um bloco é formado por diversas instruções que são executadas em conjunto por estarem logicamente ligadas. 3.2 Programação estruturada 01/09/15
  • 25. O código final obtido pela programação estruturada é muito claro e de fácil entendimento, mesmo por outras pessoas que não sejam as que desenvolveram o código. 01/09/15
  • 26. Entre as principais vantagens da programação estruturada temos: ◦possibilidade de padronização devido ao número reduzido de estruturas; ◦as estruturas podem ser inseridas em módulos distintos; ◦programas estruturados geralmente já possuem uma autodocumentação interna; ◦aumento na produtividade dos programadores. 01/09/15
  • 27. A técnica de programação orientada por objeto surgiu no final dos anos de 1970 e início de 1980, quando os pesquisadores do Centro de Pesquisas da Xerox, em Palo Alto, Califórnia, desenvolveram uma linguagem de programação chamada SmallTalk, que utilizava pela primeira vez o conceito de classes e objetos. 3.3 Programação orientada por objeto 01/09/15
  • 28. A ideia básica por trás dessa técnica é a capacidade de reutilização de códigos já prontos, denominados classes, para criarmos as partes vitais do programa, denominadas de objetos. Com isso é possível economizar um bom tempo no processo de desenvolvimento de um programa. 01/09/15
  • 29. Uma característica interessante da programação orientada por objetos é que podemos derivar um objeto de outro previamente criado. Em outras palavras, significa que podemos criar um objeto que herda alguns atributos e ações do antecessor. 01/09/15
  • 30. Entre as principais linguagens de programação orientada por objetos temos C++, Object Pascal e Java. A ferramenta de projeto mais utilizada no desenvolvimento de aplicações que emprega essa metodologia é a UML (Unified Modeling Language - Linguagem de Modelagem Unificada). 01/09/15
  • 32. Enviar o arquivo que você criou com a pasta e subpastas no email: bluizp@gmail.com Finalizar o Exercício 01/09/15
  • 33.
  • 34. Obrigado pela atenção... Luiz Paulo Pereira Silva bluizp@gmail.com

Notas do Editor

  1. 1
  2. 34