Juliano Rodrigo Lamb
Everton Coimbra de Araújo
Professores da disciplina
▪ GAVIOLI, Alan. Notas de aula da disciplina de Linguagem de programação
estruturada. 2020.
▪ VICTORINE,Viviane Mizrahi,Treinamento em Linguagem C – Módulo 1 e Módulo
2, Makron Books, 1990
▪ VICTORINE,Viviane Mizrahi,Treinamento em Linguagem C, 2ª Ed., Makron Books,
2008.
▪ SCHILDT, Herbert. C Completo e total. 3ª edição revista e atualizada. São Paulo:
Makron Books, 1996.
▪ Ementário
▪ Conteúdo programático
▪ Bibliografia
▪ Planejamento de aula e avaliações
TÓPICOS
▪ Definição de algoritmos e programação
▪ Linguagens de programação
▪ Breve histórico
▪ Primeiras linguagens
▪ Linguagens numéricas
▪ Linguagens de negócio
▪ Linguagens para inteligência artificial
▪ Níveis de abstração
▪ Linguagens de sistema
▪ Tipos de tradução: montagem x compilação x
interpretação
▪ Paradigmas de programação
▪ Algoritmos
▪ Programação
▪ Linguagem de programação
▪ Um algoritmo é uma sequência de passos a ser executada para se chegar a um
objeto, no caso, a solução de um problema proposto.
▪ Para que a descrição do algoritmo seja aplicável,tem de ser feita usando um protocolo
linguístico que o executor reconheça. Este protocolo é chamado linguagem de
programação.
▪ Programação pode ser definida como o ato de descrever um algoritmo que resolva
um problema proposto de forma aplicável.
▪ Como utilizamos computadores para realizar a execução do programa, a
linguagem de programação precisa ser reconhecida pelo computador que
realizará aquela tarefa específica.
▪ Essencialmente computadores reconhecem apenas uma linguagem específica,
formada por instruções relacionadas a microinstruções registradas no micro
programa do processador. Esta linguagem é chamada linguagem ou código de
máquina e é extremamente incompreensível
▪ No entanto é preciso que o programa esteja em linguagem de máquina para que o
computador possa executá-lo, o que é um problema e tanto.
▪ A forma usada para solucionar a questão é relativamente simples: a criação de
«tradutores» que permitam que o programa seja escrito em linguagens mais
inteligíveis para então ser «traduzido» para a linguagem de máquina. Há alguns
tipos diferentes de tradução, como montagem, compilação, interpretação e
interpilação
▪ O uso de tradutores permite que a linguagem usada para a programação
apresente um certo nível de abstração da forma como a máquina funciona.
▪ Linguagens que se aproximam muito do funcionamento da máquina são chamadas de
baixo nível, já linguagens que se afastam do funcionamento são chamados de alto nível.
▪ Por exemplo, a linguagem Assembly possui uma instrução para cada instrução de
máquina, sendo assim uma linguagem de baixo nível.
▪ Isso traz dois inconvenientes: (1) é preciso entender como cada processador funciona
para a criação do programa e (2) o programa se torna pouco portável, sendo necessário
reescrevê-lo para cada tipo de diferente de processador.
▪ Por outro lado, traz uma grande vantagem: como não há uma «tradução» propriamente
dita, apenas uma conversão de símbolos (tokens), a execução do programa se torna
extremamente eficiente.
▪ Essa agilidade ocorre porque toda tradução semântica gera verborragia, ou seja,
excesso de comandos para fazer coisas simples.
▪ Quanto maior a diferença entre a linguagem original e a de destino, maior a
probabilidade de verborragia, mas não necessariamente.
Fonte: https://www.programacaoprogressiva.net/2019/10/Como-programar-o-Hello-World-Ola-mundo-
em-Assembly.html
▪ Linguagens de programação tem apresentado uma contínua evolução desde o seu
surgimento, datado da década de 1950.
▪ 1950:FORTRAN e LISP
▪ 1970:ADA, Pascal, Prolog e SmallTalk
▪ 1980:C++
▪ Entre 1960 e 1970 novas linguagens foram oferecidas para o desenvolvimento de
projetos de software.
▪ O Departamento de Defesa americano, durante o desenvolvimento usando ADA (1970) já
tinha verificado mais de 500 linguagens relacionadas.
▪ O estudo das primeiras linguagens
de programação compreende
linguagens desenvolvidas entre os
anos 50 e 70, usualmente. Destaca-
se:
▪ Linguagens numéricas
▪ Linguagens de negócios
▪ Linguagens para inteligência artificial
▪ Linguagens de sistema
▪ Tecnologia relacionada a computação já teve inicio antes da 2a Grande Guerra
entre as décadas de 30 e 40.
▪ Eram máquinas designadas para resolver problemas numéricos e conhecidas como
calculadoras eletrônicas.
▪ Destinavam-se exclusivamente para cálculo numérico.
▪ No começo dos anos 50, a notação simbólica começou a surgir.
▪ Liderados por Grace Hoper e John Backus teve-se o desenvolvimento de uma linguagem
de máquina executável designada para compilar operações aritméticas simples.
▪ O grande avanço na verdade ocorreu de 1955 a 1957 quando Backus liderou uma
equipe para o desenvolvimento do Fortran, acrônimo de FORmula TRANslator.
▪ Objetivo inicial também era orientado para cálculos numéricos, mas já incluía estruturas
de controle com o uso de expressões condicionais, usando da entrada e saída de dados.
▪ FORTRAN teve tanto sucesso que
mudou o conceito de programação
até então substituindo muitas
linguagens.
▪ Diferentes revisões para o FORTRAN:
▪ FORTRAN
▪ FORTRAN II (1958)
▪ FORTRAN IV (alguns anos depois)
▪ FORTRAN 66
▪ FORTRAN 77
▪ FORTRAN 90
▪ Devido ao sucesso do FORTRAN e receio da dominação da indústria pela IBM a
Sociedade Alemã de Matemática Aplicada (GAMM) organizou um comitê para
desenvolver uma linguagem universal.
▪ ALGOrithmic Language (Algol) ou Algol 58 (Algol 60).
▪ Algol tinha diferentes objetivos:
▪ A notação deveria ser próxima a lógica matemática
▪ Deveria ser útil para a descrição de algoritmos
▪ Programas em Algol deveriam ser compiláveis em linguagem de máquina
▪ Algol não deveria ser vinculado a uma arquitetura de computador específica.
▪ Para permitir essa independência, nenhuma entrada ou saída estava incluída na
linguagem; procedimentos especiais poderiam ser escritos para essas operações.
▪ Para garantir a independência de algum hardware em específico, cada implementação
poderia ser incompatível com outro.
▪ Algol nunca atingiu sucesso comercial nos EUA
▪ Algum sucesso na Europa
▪ O que leva uma linguagem a ter sucesso ou não?
▪ No entanto causou influência no cenário.
▪ Exemplo: desenvolvimento de um técnica que permitia avaliação de expressões
matemáticas sem parênteses, usando um processo de avaliação baseado em pilhas.
▪ Nesse momento a historia começa a
divergir
▪ Através dos conceitos herdados
começou-se novos paradigmas:
▪ Classes C++ e posteriormente C (1980)
▪ Pascal (1968 – 1970)
▪ Processamento de dados foi desde cedo uma aplicação de domínio depois dos
cálculos numéricos.
▪ Em 1955 tem se a linguagem FLOWMATIC, com o objetivo de desenvolver aplicações de
negócio usando uma espécie de formulários.
▪ Em 1959 o Departamento de Defesa americano trabalhava para desenvolver uma
linguagem melhorada.
▪ Após muitas divergências, foi publicada em 1960,a COmmon Business Oriented
Language – COBOL.
▪ Cobol foi revisado em 1961 e 1962,padronizada em 1968 e revisada novamente em 1974
e 1984.
▪ Este campo teve início em meados de 1950 com a Rand Corporation através da
IPL (Linguagem de Processamento de Informações)
▪ IPL-V foi concebida, amplamente usada, mas extremamente limitada a um design de
baixo nível.
▪ O maior avanço no setor ocorreu quando John McCarthy (MIT) desenvolveu LISP
(LIst PRocessing) para o IBM 704.
▪ LISP 1.5 tornou-se a linguagem padrão por muitos anos.
▪ Evolução continuada.
▪ LISP foi designada como uma linguagem funcional de processamento de listas (list-
processing)
▪ O problema usual para LISP envolvia pesquisas.
▪ Jogos foram um bom teste para a linguagem LISP, onde desenvolvia-se uma arvore
de possibilidades e então o usuário poderia navegar pela melhor possibilidade ou
estratégia.
▪ Um paradigma alternativo foi o processamento de strings envolvendo a
transformação de texto para um outro formato qualquer.
▪ Tradução automática, onde símbolos são substituídos por outros é uma aplicação natural.
(COMIT)
▪ LISP foi designada com um propósito mais geral.
▪ PROLOG despontava como uma linguagem com objetivo específico para o controle de
estruturas e implementação de estratégias mas baseado nos conceitos de matemática
lógica.
▪ Devido a necessidade de eficiência, o uso da linguagem assembly permaneceu
por muito tempo, mesmo com a utilização de linguagens de alto nível
▪ Muitos sistemas de programação (CPL/BCPL) foram desenvolvidos, mas nunca
amplamente usados.
▪ A linguagem C, mudou tudo isso.
▪ Com o desenvolvimento de um ambiente competitivo em UNIX com quase que a
totalidade escrita em C durante os anos 70, linguagens alto-nível tem mostrado ser
efetivas neste ambiente, assim como em outros.
Fonte: https://widegroup.wordpress.com/2010/11/09/historia-das-linguagens-de-
programacao/ Fonte:
https://www.csee.umbc.edu/courses/331/fall15/03/sebesta11ed/Figures/sebest
a_ch02_images.ppt.pdf
▪ Quando definimos nível de abstração, entramos numa questão delicada, pois há
um tremendo mal entendido sobre o que seja uma linguagem de alto nível.
▪ A linguagem C é uma linguagem de alto nível, pois abstrai do funcionamento da
máquina, se aproximando da linguagem matemática.
▪ Linguagens de alto nível
▪ C, C++, Delphi, Pascal, JAVA,...
▪ Facilitam a comunicação dos seres humanos com a máquina, sendo linguagens
mais próximas dos humanos.
▪ Devem ser convertidas em linguagem de máquina para serem executadas → tradução
▪ Há muitas variações de como a tradução de uma linguagem de mais alto nível para
a linguagem de máquina é feita.
▪ Montagem
▪ Compilação
▪ Interpretação
▪ Dentre outros..
Fonte: https://medium.com/young-coder/the-difference-between-compiled-and-
interpreted-languages-d54f66aa71f0
▪ A mais simples é a montagem, que é quando cada instrução da linguagem de mais
alto nível é traduzida diretamente para uma instrução da linguagem de máquina. O
programa que faz esta montagem é chamado montador.
▪ Ex.: Assembly.
▪ Um pouco mais complicada é a
compilação:a partir do programa em
linguagem de mais alto nível é gerado um
programa de mais baixo nível equivalente,
que é montado, gerando o código objeto
(programa em código de máquina).Ex.: C.
▪ Na compilação há em geral mais de um
programa trabalhando,basicamente o
compilador, que gera um objeto que faz
chamadas a procedimentos que não
possui,e o linkeditor,que liga ao objeto
outros objetos,chamados bibliotecas,que
possuem os procedimentos necessários,
gerando o objeto final ou código de
máquina.
Fonte: https://medium.com/young-coder/the-difference-between-compiled-and-
interpreted-languages-d54f66aa71f0
▪ Outra alternativa é a interpretação.
Há um programa chamado
interpretador que funciona como se
fosse uma máquina virtual, com suas
próprias instruções, e o programa é
feito usando tais instruções.
Fonte: https://medium.com/young-coder/the-difference-between-compiled-and-
interpreted-languages-d54f66aa71f0
Compilação:
▪ Execução mais rápida
▪ Ciclo edição/teste mais lento
▪ Programa completo de alto nível é
primeiro convertido para a
linguagem de máquina para então
ser executado. Ex. C, Pascal.
Interpretação:
▪ Independência de plataforma
▪ Permite maior dinamismo
▪ Depois de cada instrução de alto
nível ser examinada e decodificada,
ela é executada imediatamente. Ex.
Haskell.
▪ Métodos Híbridos. Ex.: Java
Fonte: http://www.k-binder.be/Papers/OpenTechnologies.htm
▪ A principal parte da programação é a manipulação de
dados: armazenamento, leitura e alteração. Para
armazenamento e leitura usamos posições de memória e
registradores do processador.
▪ Em linguagens de mais baixo nível, usamos os próprios
endereços de memória e o nomes do registrador, mas em
linguagens de nível mais alto, usamos variáveis, que são
«apelidos» para tais endereços e nomes.
▪ Também é necessário saber que quantidade de memória cada
dado ocupa e como ele deve se comporta.
▪ Isso é chamado tipagem.
Fonte: https://www.take.net/blog/devs/linguagens-de-programacao/
▪ Definição: forma como o programador enxerga a solução do problema.Tem mais a
haver com a estruturação.
▪ Em outras palavras, paradigma é a metodologia de solução.
▪ Inicialmente os programadores não se preocupavam com paradigma algum. Os
programas eram simples sequências de procedimentos.
▪ Hoje em dia chamamos isso de programação sequencial e exclui automaticamente todos
os demais paradigmas.
▪ Mais tarde foi desenvolvido o paradigma procedimental e a programação estruturada.
▪ Programação estruturada é baseada na estruturação do código. A idéia é que o
programa seja divido em pequenos procedimentos estruturados, chamados
subrotinas ou funções.
▪ O programa é desenvolvido a partir das funções mais abstratas e terminando pelas mais
específicas (desenvolvimento top-down).
▪ Deu origem à modularização e à programação procedimental.
▪ Erroneamente chamada programação procedural (procedural é procedimental em
inglês), programação procedimental é a programação baseada em procedimentos.
▪ O conceito é usado normalmente em oposição a programação funcional e às vezes se
confunde com programação estruturada ou com programação imperativa.
▪ Na orientação a objetos o programa não se baseia em procedimentos, mas na
relação entre objetos.
▪ Objetos são representações de «coisas» que executam funções (chamadas
métodos). Estas «coisas» são quase microuniversos independentes.
▪ Da interação entre os objetos resulta a solução do problema proposto. Por exemplo, uma
porta é um objeto que, através de sua interação com o portal, a tranca e a chave permite
que determinadas pessoas entram e saiam enquanto outras não.
▪ Problemas em conceituação: os evangelizadores da desinformação pregam que a
orientação a objetos exclui outros paradigmas e que seja o paradigma definitivo,
no entanto não é possível usar orientação a objetos sem programação estruturada,
ou seja, o código precisa estar estruturado para ser orientado a objetos.
▪ A orientação a eventos pressupõe a orientação a objetos, pois implica em criar
objetos que reajam a determinados eventos.
▪ Geralmente é criado loop principal que intercepta os eventos, repassando-os para
os objetos registrados. Algumas linguagens (ou módulos) oferecem uma
implementação pronta do loop principal.

Linguagem de programação estruturada, orientação a objetos

  • 1.
    Juliano Rodrigo Lamb EvertonCoimbra de Araújo Professores da disciplina
  • 2.
    ▪ GAVIOLI, Alan.Notas de aula da disciplina de Linguagem de programação estruturada. 2020. ▪ VICTORINE,Viviane Mizrahi,Treinamento em Linguagem C – Módulo 1 e Módulo 2, Makron Books, 1990 ▪ VICTORINE,Viviane Mizrahi,Treinamento em Linguagem C, 2ª Ed., Makron Books, 2008. ▪ SCHILDT, Herbert. C Completo e total. 3ª edição revista e atualizada. São Paulo: Makron Books, 1996.
  • 3.
    ▪ Ementário ▪ Conteúdoprogramático ▪ Bibliografia ▪ Planejamento de aula e avaliações
  • 6.
    TÓPICOS ▪ Definição dealgoritmos e programação ▪ Linguagens de programação ▪ Breve histórico ▪ Primeiras linguagens ▪ Linguagens numéricas ▪ Linguagens de negócio ▪ Linguagens para inteligência artificial ▪ Níveis de abstração ▪ Linguagens de sistema ▪ Tipos de tradução: montagem x compilação x interpretação ▪ Paradigmas de programação
  • 7.
    ▪ Algoritmos ▪ Programação ▪Linguagem de programação
  • 8.
    ▪ Um algoritmoé uma sequência de passos a ser executada para se chegar a um objeto, no caso, a solução de um problema proposto. ▪ Para que a descrição do algoritmo seja aplicável,tem de ser feita usando um protocolo linguístico que o executor reconheça. Este protocolo é chamado linguagem de programação.
  • 9.
    ▪ Programação podeser definida como o ato de descrever um algoritmo que resolva um problema proposto de forma aplicável.
  • 10.
    ▪ Como utilizamoscomputadores para realizar a execução do programa, a linguagem de programação precisa ser reconhecida pelo computador que realizará aquela tarefa específica. ▪ Essencialmente computadores reconhecem apenas uma linguagem específica, formada por instruções relacionadas a microinstruções registradas no micro programa do processador. Esta linguagem é chamada linguagem ou código de máquina e é extremamente incompreensível ▪ No entanto é preciso que o programa esteja em linguagem de máquina para que o computador possa executá-lo, o que é um problema e tanto.
  • 11.
    ▪ A formausada para solucionar a questão é relativamente simples: a criação de «tradutores» que permitam que o programa seja escrito em linguagens mais inteligíveis para então ser «traduzido» para a linguagem de máquina. Há alguns tipos diferentes de tradução, como montagem, compilação, interpretação e interpilação ▪ O uso de tradutores permite que a linguagem usada para a programação apresente um certo nível de abstração da forma como a máquina funciona. ▪ Linguagens que se aproximam muito do funcionamento da máquina são chamadas de baixo nível, já linguagens que se afastam do funcionamento são chamados de alto nível.
  • 12.
    ▪ Por exemplo,a linguagem Assembly possui uma instrução para cada instrução de máquina, sendo assim uma linguagem de baixo nível. ▪ Isso traz dois inconvenientes: (1) é preciso entender como cada processador funciona para a criação do programa e (2) o programa se torna pouco portável, sendo necessário reescrevê-lo para cada tipo de diferente de processador. ▪ Por outro lado, traz uma grande vantagem: como não há uma «tradução» propriamente dita, apenas uma conversão de símbolos (tokens), a execução do programa se torna extremamente eficiente.
  • 13.
    ▪ Essa agilidadeocorre porque toda tradução semântica gera verborragia, ou seja, excesso de comandos para fazer coisas simples. ▪ Quanto maior a diferença entre a linguagem original e a de destino, maior a probabilidade de verborragia, mas não necessariamente.
  • 14.
  • 15.
    ▪ Linguagens deprogramação tem apresentado uma contínua evolução desde o seu surgimento, datado da década de 1950. ▪ 1950:FORTRAN e LISP ▪ 1970:ADA, Pascal, Prolog e SmallTalk ▪ 1980:C++ ▪ Entre 1960 e 1970 novas linguagens foram oferecidas para o desenvolvimento de projetos de software. ▪ O Departamento de Defesa americano, durante o desenvolvimento usando ADA (1970) já tinha verificado mais de 500 linguagens relacionadas.
  • 16.
    ▪ O estudodas primeiras linguagens de programação compreende linguagens desenvolvidas entre os anos 50 e 70, usualmente. Destaca- se: ▪ Linguagens numéricas ▪ Linguagens de negócios ▪ Linguagens para inteligência artificial ▪ Linguagens de sistema
  • 17.
    ▪ Tecnologia relacionadaa computação já teve inicio antes da 2a Grande Guerra entre as décadas de 30 e 40. ▪ Eram máquinas designadas para resolver problemas numéricos e conhecidas como calculadoras eletrônicas. ▪ Destinavam-se exclusivamente para cálculo numérico. ▪ No começo dos anos 50, a notação simbólica começou a surgir. ▪ Liderados por Grace Hoper e John Backus teve-se o desenvolvimento de uma linguagem de máquina executável designada para compilar operações aritméticas simples. ▪ O grande avanço na verdade ocorreu de 1955 a 1957 quando Backus liderou uma equipe para o desenvolvimento do Fortran, acrônimo de FORmula TRANslator. ▪ Objetivo inicial também era orientado para cálculos numéricos, mas já incluía estruturas de controle com o uso de expressões condicionais, usando da entrada e saída de dados.
  • 18.
    ▪ FORTRAN tevetanto sucesso que mudou o conceito de programação até então substituindo muitas linguagens. ▪ Diferentes revisões para o FORTRAN: ▪ FORTRAN ▪ FORTRAN II (1958) ▪ FORTRAN IV (alguns anos depois) ▪ FORTRAN 66 ▪ FORTRAN 77 ▪ FORTRAN 90
  • 19.
    ▪ Devido aosucesso do FORTRAN e receio da dominação da indústria pela IBM a Sociedade Alemã de Matemática Aplicada (GAMM) organizou um comitê para desenvolver uma linguagem universal. ▪ ALGOrithmic Language (Algol) ou Algol 58 (Algol 60). ▪ Algol tinha diferentes objetivos: ▪ A notação deveria ser próxima a lógica matemática ▪ Deveria ser útil para a descrição de algoritmos ▪ Programas em Algol deveriam ser compiláveis em linguagem de máquina ▪ Algol não deveria ser vinculado a uma arquitetura de computador específica.
  • 20.
    ▪ Para permitiressa independência, nenhuma entrada ou saída estava incluída na linguagem; procedimentos especiais poderiam ser escritos para essas operações. ▪ Para garantir a independência de algum hardware em específico, cada implementação poderia ser incompatível com outro. ▪ Algol nunca atingiu sucesso comercial nos EUA ▪ Algum sucesso na Europa ▪ O que leva uma linguagem a ter sucesso ou não? ▪ No entanto causou influência no cenário. ▪ Exemplo: desenvolvimento de um técnica que permitia avaliação de expressões matemáticas sem parênteses, usando um processo de avaliação baseado em pilhas.
  • 21.
    ▪ Nesse momentoa historia começa a divergir ▪ Através dos conceitos herdados começou-se novos paradigmas: ▪ Classes C++ e posteriormente C (1980) ▪ Pascal (1968 – 1970)
  • 22.
    ▪ Processamento dedados foi desde cedo uma aplicação de domínio depois dos cálculos numéricos. ▪ Em 1955 tem se a linguagem FLOWMATIC, com o objetivo de desenvolver aplicações de negócio usando uma espécie de formulários. ▪ Em 1959 o Departamento de Defesa americano trabalhava para desenvolver uma linguagem melhorada. ▪ Após muitas divergências, foi publicada em 1960,a COmmon Business Oriented Language – COBOL. ▪ Cobol foi revisado em 1961 e 1962,padronizada em 1968 e revisada novamente em 1974 e 1984.
  • 23.
    ▪ Este campoteve início em meados de 1950 com a Rand Corporation através da IPL (Linguagem de Processamento de Informações) ▪ IPL-V foi concebida, amplamente usada, mas extremamente limitada a um design de baixo nível. ▪ O maior avanço no setor ocorreu quando John McCarthy (MIT) desenvolveu LISP (LIst PRocessing) para o IBM 704. ▪ LISP 1.5 tornou-se a linguagem padrão por muitos anos. ▪ Evolução continuada. ▪ LISP foi designada como uma linguagem funcional de processamento de listas (list- processing) ▪ O problema usual para LISP envolvia pesquisas.
  • 24.
    ▪ Jogos foramum bom teste para a linguagem LISP, onde desenvolvia-se uma arvore de possibilidades e então o usuário poderia navegar pela melhor possibilidade ou estratégia. ▪ Um paradigma alternativo foi o processamento de strings envolvendo a transformação de texto para um outro formato qualquer. ▪ Tradução automática, onde símbolos são substituídos por outros é uma aplicação natural. (COMIT) ▪ LISP foi designada com um propósito mais geral. ▪ PROLOG despontava como uma linguagem com objetivo específico para o controle de estruturas e implementação de estratégias mas baseado nos conceitos de matemática lógica.
  • 25.
    ▪ Devido anecessidade de eficiência, o uso da linguagem assembly permaneceu por muito tempo, mesmo com a utilização de linguagens de alto nível ▪ Muitos sistemas de programação (CPL/BCPL) foram desenvolvidos, mas nunca amplamente usados. ▪ A linguagem C, mudou tudo isso. ▪ Com o desenvolvimento de um ambiente competitivo em UNIX com quase que a totalidade escrita em C durante os anos 70, linguagens alto-nível tem mostrado ser efetivas neste ambiente, assim como em outros.
  • 26.
  • 27.
    ▪ Quando definimosnível de abstração, entramos numa questão delicada, pois há um tremendo mal entendido sobre o que seja uma linguagem de alto nível. ▪ A linguagem C é uma linguagem de alto nível, pois abstrai do funcionamento da máquina, se aproximando da linguagem matemática. ▪ Linguagens de alto nível ▪ C, C++, Delphi, Pascal, JAVA,... ▪ Facilitam a comunicação dos seres humanos com a máquina, sendo linguagens mais próximas dos humanos. ▪ Devem ser convertidas em linguagem de máquina para serem executadas → tradução
  • 28.
    ▪ Há muitasvariações de como a tradução de uma linguagem de mais alto nível para a linguagem de máquina é feita. ▪ Montagem ▪ Compilação ▪ Interpretação ▪ Dentre outros.. Fonte: https://medium.com/young-coder/the-difference-between-compiled-and- interpreted-languages-d54f66aa71f0
  • 30.
    ▪ A maissimples é a montagem, que é quando cada instrução da linguagem de mais alto nível é traduzida diretamente para uma instrução da linguagem de máquina. O programa que faz esta montagem é chamado montador. ▪ Ex.: Assembly.
  • 31.
    ▪ Um poucomais complicada é a compilação:a partir do programa em linguagem de mais alto nível é gerado um programa de mais baixo nível equivalente, que é montado, gerando o código objeto (programa em código de máquina).Ex.: C. ▪ Na compilação há em geral mais de um programa trabalhando,basicamente o compilador, que gera um objeto que faz chamadas a procedimentos que não possui,e o linkeditor,que liga ao objeto outros objetos,chamados bibliotecas,que possuem os procedimentos necessários, gerando o objeto final ou código de máquina.
  • 32.
  • 33.
    ▪ Outra alternativaé a interpretação. Há um programa chamado interpretador que funciona como se fosse uma máquina virtual, com suas próprias instruções, e o programa é feito usando tais instruções.
  • 34.
  • 35.
    Compilação: ▪ Execução maisrápida ▪ Ciclo edição/teste mais lento ▪ Programa completo de alto nível é primeiro convertido para a linguagem de máquina para então ser executado. Ex. C, Pascal. Interpretação: ▪ Independência de plataforma ▪ Permite maior dinamismo ▪ Depois de cada instrução de alto nível ser examinada e decodificada, ela é executada imediatamente. Ex. Haskell.
  • 36.
    ▪ Métodos Híbridos.Ex.: Java Fonte: http://www.k-binder.be/Papers/OpenTechnologies.htm
  • 37.
    ▪ A principalparte da programação é a manipulação de dados: armazenamento, leitura e alteração. Para armazenamento e leitura usamos posições de memória e registradores do processador. ▪ Em linguagens de mais baixo nível, usamos os próprios endereços de memória e o nomes do registrador, mas em linguagens de nível mais alto, usamos variáveis, que são «apelidos» para tais endereços e nomes. ▪ Também é necessário saber que quantidade de memória cada dado ocupa e como ele deve se comporta. ▪ Isso é chamado tipagem.
  • 38.
  • 39.
    ▪ Definição: formacomo o programador enxerga a solução do problema.Tem mais a haver com a estruturação. ▪ Em outras palavras, paradigma é a metodologia de solução. ▪ Inicialmente os programadores não se preocupavam com paradigma algum. Os programas eram simples sequências de procedimentos. ▪ Hoje em dia chamamos isso de programação sequencial e exclui automaticamente todos os demais paradigmas. ▪ Mais tarde foi desenvolvido o paradigma procedimental e a programação estruturada.
  • 40.
    ▪ Programação estruturadaé baseada na estruturação do código. A idéia é que o programa seja divido em pequenos procedimentos estruturados, chamados subrotinas ou funções. ▪ O programa é desenvolvido a partir das funções mais abstratas e terminando pelas mais específicas (desenvolvimento top-down). ▪ Deu origem à modularização e à programação procedimental.
  • 41.
    ▪ Erroneamente chamadaprogramação procedural (procedural é procedimental em inglês), programação procedimental é a programação baseada em procedimentos. ▪ O conceito é usado normalmente em oposição a programação funcional e às vezes se confunde com programação estruturada ou com programação imperativa.
  • 42.
    ▪ Na orientaçãoa objetos o programa não se baseia em procedimentos, mas na relação entre objetos. ▪ Objetos são representações de «coisas» que executam funções (chamadas métodos). Estas «coisas» são quase microuniversos independentes. ▪ Da interação entre os objetos resulta a solução do problema proposto. Por exemplo, uma porta é um objeto que, através de sua interação com o portal, a tranca e a chave permite que determinadas pessoas entram e saiam enquanto outras não. ▪ Problemas em conceituação: os evangelizadores da desinformação pregam que a orientação a objetos exclui outros paradigmas e que seja o paradigma definitivo, no entanto não é possível usar orientação a objetos sem programação estruturada, ou seja, o código precisa estar estruturado para ser orientado a objetos.
  • 43.
    ▪ A orientaçãoa eventos pressupõe a orientação a objetos, pois implica em criar objetos que reajam a determinados eventos. ▪ Geralmente é criado loop principal que intercepta os eventos, repassando-os para os objetos registrados. Algumas linguagens (ou módulos) oferecem uma implementação pronta do loop principal.