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

Aula 01 algoritmo

  • 1.
    ALGORITMOS E PROGRAMAÇÃO: CONTEXTOS EPRÁTICAS Luiz Paulo Pereira Silva bluizp@gmail.com
  • 2.
    1.1 Conceito deló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 deprogramaçã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
  • 4.
  • 5.
    No entanto, tudoque 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
  • 6.
  • 7.
  • 8.
  • 9.
    Existem diversos tiposde 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 muitodifí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
  • 11.
  • 12.
    Existem dois termosté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, umprocesso 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 programascompilados, 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 objetossã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
  • 16.
  • 17.
    Um terceiro métodode 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 omé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 decomputador é 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
  • 20.
  • 21.
  • 22.
    3.1 Programação modular ◦Assimcomo 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 emque 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 deprogramaçã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 finalobtido 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 principaisvantagens 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 deprogramaçã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ásicapor 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 interessanteda 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 principaislinguagens 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
  • 31.
  • 32.
    Enviar o arquivoque você criou com a pasta e subpastas no email: bluizp@gmail.com Finalizar o Exercício 01/09/15
  • 34.
    Obrigado pela atenção... Luiz PauloPereira Silva bluizp@gmail.com

Notas do Editor