SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
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.

Mais conteúdo relacionado

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

IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1Ramon Mayor Martins
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
Grande porte cobol level 1 - versão 2.3.5
Grande porte   cobol level 1 - versão 2.3.5Grande porte   cobol level 1 - versão 2.3.5
Grande porte cobol level 1 - versão 2.3.5Jeison Barros
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Fundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeFundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeJuliano Sales
 
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
 
As 7 principais linguagens de programação usadas em desenvolvimento mobile
As 7 principais linguagens de programação usadas em desenvolvimento mobileAs 7 principais linguagens de programação usadas em desenvolvimento mobile
As 7 principais linguagens de programação usadas em desenvolvimento mobiledaliarafaela
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430Texas Instruments
 
ESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxJorge Pereira
 
Desenvolvimento de Jogos
Desenvolvimento de JogosDesenvolvimento de Jogos
Desenvolvimento de JogosKelvinSalton
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 

Semelhante a Linguagem de programação estruturada, orientação a objetos (20)

Linguagem c
Linguagem cLinguagem c
Linguagem c
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
apostila de dev.pdf
apostila de dev.pdfapostila de dev.pdf
apostila de dev.pdf
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Grande porte cobol level 1 - versão 2.3.5
Grande porte   cobol level 1 - versão 2.3.5Grande porte   cobol level 1 - versão 2.3.5
Grande porte cobol level 1 - versão 2.3.5
 
Apostila de devc++ novo
Apostila de devc++ novoApostila de devc++ novo
Apostila de devc++ novo
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
Fundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeFundamentos em C# com Clean Code
Fundamentos em C# com Clean Code
 
Apostila c
Apostila cApostila c
Apostila c
 
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)
 
As 7 principais linguagens de programação usadas em desenvolvimento mobile
As 7 principais linguagens de programação usadas em desenvolvimento mobileAs 7 principais linguagens de programação usadas em desenvolvimento mobile
As 7 principais linguagens de programação usadas em desenvolvimento mobile
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
 
ESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no Linux
 
Desenvolvimento de Jogos
Desenvolvimento de JogosDesenvolvimento de Jogos
Desenvolvimento de Jogos
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 

Último

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORDRONDINELLYRAMOS1
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 

Último (11)

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 

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

  • 1. Juliano Rodrigo Lamb Everton Coimbra 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údo programático ▪ Bibliografia ▪ Planejamento de aula e avaliações
  • 4.
  • 5.
  • 6. 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
  • 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 pode ser definida como o ato de descrever um algoritmo que resolva um problema proposto de forma aplicável.
  • 10. ▪ 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.
  • 11. ▪ 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.
  • 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 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.
  • 15. ▪ 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.
  • 16. ▪ 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
  • 17. ▪ 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.
  • 18. ▪ 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
  • 19. ▪ 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.
  • 20. ▪ 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.
  • 21. ▪ 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)
  • 22. ▪ 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.
  • 23. ▪ 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.
  • 24. ▪ 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.
  • 25. ▪ 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.
  • 27. ▪ 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
  • 28. ▪ 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
  • 29.
  • 30. ▪ 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.
  • 31. ▪ 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.
  • 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.
  • 35. 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.
  • 36. ▪ Métodos Híbridos. Ex.: Java Fonte: http://www.k-binder.be/Papers/OpenTechnologies.htm
  • 37. ▪ 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.
  • 39. ▪ 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.
  • 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 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.
  • 42. ▪ 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.
  • 43. ▪ 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.