Este documento fornece uma introdução aos principais paradigmas de programação e linguagens de programação. Ele discute brevemente a história das linguagens de programação, introduz os paradigmas imperativo, orientado a objetos, funcional e lógico, e fornece exemplos de linguagens populares em cada paradigma, incluindo C, Java, Lisp e Prolog. O documento também descreve os objetivos do curso e a bibliografia recomendada.
1) O documento é um relatório escolar sobre linguagens de programação feito por três alunos para a disciplina de Programação Web.
2) O relatório discute conceitos básicos de programação, tipos de linguagens de programação, a história da linguagem C e suas características e objetivos.
3) Também aborda código fonte, código de máquina, compiladores e interpretadores.
1) O documento é um trabalho escolar sobre linguagens de programação realizado por três alunos da escola secundária de Santo André.
2) O trabalho aborda conceitos básicos de programação, tipos de linguagens, história da linguagem C e suas características e objetivos.
3) Inclui seções sobre código fonte, código máquina, compiladores e interpretadores.
1) O documento é um trabalho escolar sobre linguagens de programação realizado por três alunos da escola secundária de Santo André.
2) O trabalho aborda conceitos básicos de programação, tipos de linguagens, história da linguagem C e suas características e objetivos.
3) Inclui seções sobre código fonte, código máquina, compiladores e interpretadores.
O documento introduz os principais paradigmas de programação e conceitos básicos de implementação de linguagens de programação, discutindo a motivação para o estudo de linguagens de programação e definindo o que é uma linguagem de programação.
O documento apresenta um minicurso sobre a linguagem de programação C, abordando sua história, estrutura básica, tipos de linguagens, compiladores vs interpretadores e exemplos de códigos. O plano de estudos sugerido inclui lógica de programação, HTML/CSS, MySQL e orientação a objetos.
O documento fornece um resumo histórico sobre linguagens de programação, paradigmas de programação e o paradigma de programação orientada a objetos. Ele discute as principais linguagens desenvolvidas desde a década de 1950 e os respectivos paradigmas, como imperativo, funcional e lógico. O documento também explica conceitos-chave da programação orientada a objetos como abstração de dados, objetos, classes e herança.
O documento é uma apostila sobre a linguagem de programação C++. Ele contém 12 módulos abordando tópicos como a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle de fluxo, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos. O foco é fornecer uma introdução abrangente aos principais conceitos e recursos da linguagem C++.
O documento discute as principais linguagens de programação, sua história e características. Aborda tópicos como definição de linguagem de programação, razões para estudá-las, especificação, tradução e escolha. Detalha as principais linguagens como FORTRAN, COBOL, ALGOL, LISP, APL, BASIC, PL/I, Pascal, Prolog, Smalltalk, C, Modula-2 e Ada.
1) O documento é um relatório escolar sobre linguagens de programação feito por três alunos para a disciplina de Programação Web.
2) O relatório discute conceitos básicos de programação, tipos de linguagens de programação, a história da linguagem C e suas características e objetivos.
3) Também aborda código fonte, código de máquina, compiladores e interpretadores.
1) O documento é um trabalho escolar sobre linguagens de programação realizado por três alunos da escola secundária de Santo André.
2) O trabalho aborda conceitos básicos de programação, tipos de linguagens, história da linguagem C e suas características e objetivos.
3) Inclui seções sobre código fonte, código máquina, compiladores e interpretadores.
1) O documento é um trabalho escolar sobre linguagens de programação realizado por três alunos da escola secundária de Santo André.
2) O trabalho aborda conceitos básicos de programação, tipos de linguagens, história da linguagem C e suas características e objetivos.
3) Inclui seções sobre código fonte, código máquina, compiladores e interpretadores.
O documento introduz os principais paradigmas de programação e conceitos básicos de implementação de linguagens de programação, discutindo a motivação para o estudo de linguagens de programação e definindo o que é uma linguagem de programação.
O documento apresenta um minicurso sobre a linguagem de programação C, abordando sua história, estrutura básica, tipos de linguagens, compiladores vs interpretadores e exemplos de códigos. O plano de estudos sugerido inclui lógica de programação, HTML/CSS, MySQL e orientação a objetos.
O documento fornece um resumo histórico sobre linguagens de programação, paradigmas de programação e o paradigma de programação orientada a objetos. Ele discute as principais linguagens desenvolvidas desde a década de 1950 e os respectivos paradigmas, como imperativo, funcional e lógico. O documento também explica conceitos-chave da programação orientada a objetos como abstração de dados, objetos, classes e herança.
O documento é uma apostila sobre a linguagem de programação C++. Ele contém 12 módulos abordando tópicos como a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle de fluxo, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos. O foco é fornecer uma introdução abrangente aos principais conceitos e recursos da linguagem C++.
O documento discute as principais linguagens de programação, sua história e características. Aborda tópicos como definição de linguagem de programação, razões para estudá-las, especificação, tradução e escolha. Detalha as principais linguagens como FORTRAN, COBOL, ALGOL, LISP, APL, BASIC, PL/I, Pascal, Prolog, Smalltalk, C, Modula-2 e Ada.
(1) O documento apresenta uma introdução sobre linguagens de programação, abordando seus conceitos básicos e classificações;
(2) É destacado que as primeiras linguagens de programação foram criadas na década de 1950, como Fortran e Cobol;
(3) As linguagens podem ser classificadas em gerações, paradigmas, tipos de estrutura e tipo de processamento (compiladas x interpretadas).
O documento apresenta um mini-curso sobre a linguagem C, com informações sobre o professor, objetivos do curso, sugestões de material de apoio e agenda.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e programação orientada a objetos. O foco principal é ensinar os conceitos básicos e fundamentos da linguagem C++.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e entrada/saída. O foco principal é ensinar os conceitos básicos e avançados da linguagem de uma forma estruturada.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e entrada/saída. O foco principal é ensinar os conceitos básicos da linguagem de forma estruturada.
Este documento apresenta uma apostila sobre a linguagem de programação C++. Resume os principais tópicos ensinados nos onze módulos, incluindo a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos.
O documento descreve brevemente a história e características de várias linguagens de programação, incluindo FORTRAN, LISP, ALGOL, COBOL, BASIC, PL/I e outras. Resume os principais paradigmas de programação e tipos de abstrações suportados por linguagens de programação ao longo do tempo.
O documento fornece um resumo histórico das principais linguagens de programação, descrevendo suas características-chave e exemplos de código. As linguagens discutidas incluem FORTRAN, LISP, ALGOL, COBOL, BASIC, PL/I, Snobol, Simula67 e outras. O documento também diferencia linguagens de programação de linguagens de scripting.
Este documento apresenta um índice geral de uma apostila sobre a linguagem de programação C++. O índice inclui 12 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle de fluxo, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos.
O documento discute as linguagens de programação. Aborda a tipologia e tipos de linguagens, incluindo linguagens imperativas, funcionais e baseadas em lógica. Também descreve a evolução das linguagens desde o FORTRAN até linguagens modernas como C++ e Java. Explica a diferença entre código fonte e código máquina, e entre compiladores e interpretadores.
O documento discute a história e conceitos de linguagens de programação. Aborda os níveis de linguagem, tipos como compiladas e interpretadas, e tipagem. Apresenta exemplos de linguagens em cada categoria ao longo da história, desde as primeiras máquinas até linguagens atuais da web.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
Existem três classes de linguagens de programação de acordo com o nível de abstração: linguagens de máquina, de baixo nível e de alto nível. Linguagens de máquina usam códigos binários e dependem da arquitetura da CPU, enquanto linguagens de alto nível são mais independentes e se assemelham à linguagem humana, facilitando a programação.
O documento fornece um resumo sobre linguagens de programação em 3 frases:
1) As linguagens de programação surgiram para descrever mecanismos abstratos e comunicar entre programadores e computadores.
2) Ao longo dos anos, novas linguagens foram criadas para corrigir defeitos de outras ou melhorar desempenho, com foco em áreas como ciência, comércio e inteligência artificial.
3) Linguagens como COBOL, FORTRAN, Pascal, C, C++, Java, Python, entre outras, evolu
O documento resume a linguagem de programação Ruby, incluindo sua criação, influências, versões, exemplos de uso e características principais como tipagem dinâmica, classes, métodos e variáveis.
O documento discute diferentes paradigmas de programação, incluindo imperativo, orientado a objetos, funcional, lógico e paralelo/distribuído. Ele define cada paradigma, lista suas vantagens e desvantagens, e exemplos de linguagens para cada um.
1. A aula introduz o PHP, abordando sua história, características e estrutura básica.
2. Variáveis, constantes, tipos de dados e operadores são explicados. Exemplos ilustram o uso de variáveis, operações matemáticas e lógicas.
3. O documento fornece os conceitos fundamentais da linguagem PHP para iniciantes.
O documento discute as principais linguagens de programação, como surgiram e onde são utilizadas atualmente. Aborda os paradigmas de programação, a diferença entre interpretador e compilador e como funciona um compilador. Apresenta exemplos de linguagens como Assembly, Fortran, Pascal, COBOL, C, C++, Java, PHP e Shell Script.
O documento apresenta uma aula introdutória sobre PHP. Aborda os objetivos da aula, a introdução à linguagem PHP, sua estrutura e sintaxe, variáveis, constantes e operadores.
O documento apresenta o plano de ensino para a disciplina de Linguagem de Programação Estruturada em C. O plano descreve os sete módulos que compõem o conteúdo programático, incluindo conceitos básicos da linguagem C, variáveis, estruturas sequenciais, condicionais, de repetição, funções e vetores. Também define os objetivos gerais e específicos, estratégias de trabalho, avaliação e bibliografia de referência.
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
(1) O documento apresenta uma introdução sobre linguagens de programação, abordando seus conceitos básicos e classificações;
(2) É destacado que as primeiras linguagens de programação foram criadas na década de 1950, como Fortran e Cobol;
(3) As linguagens podem ser classificadas em gerações, paradigmas, tipos de estrutura e tipo de processamento (compiladas x interpretadas).
O documento apresenta um mini-curso sobre a linguagem C, com informações sobre o professor, objetivos do curso, sugestões de material de apoio e agenda.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e programação orientada a objetos. O foco principal é ensinar os conceitos básicos e fundamentos da linguagem C++.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e entrada/saída. O foco principal é ensinar os conceitos básicos e avançados da linguagem de uma forma estruturada.
O documento apresenta uma apostila sobre a linguagem de programação C++. Ela está dividida em 11 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros e entrada/saída. O foco principal é ensinar os conceitos básicos da linguagem de forma estruturada.
Este documento apresenta uma apostila sobre a linguagem de programação C++. Resume os principais tópicos ensinados nos onze módulos, incluindo a história e características de C++, compiladores, tipos de dados, funções, estruturas de controle, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos.
O documento descreve brevemente a história e características de várias linguagens de programação, incluindo FORTRAN, LISP, ALGOL, COBOL, BASIC, PL/I e outras. Resume os principais paradigmas de programação e tipos de abstrações suportados por linguagens de programação ao longo do tempo.
O documento fornece um resumo histórico das principais linguagens de programação, descrevendo suas características-chave e exemplos de código. As linguagens discutidas incluem FORTRAN, LISP, ALGOL, COBOL, BASIC, PL/I, Snobol, Simula67 e outras. O documento também diferencia linguagens de programação de linguagens de scripting.
Este documento apresenta um índice geral de uma apostila sobre a linguagem de programação C++. O índice inclui 12 módulos que abordam tópicos como história e características de C++, compiladores, tipos de dados, funções, estruturas de controle de fluxo, matrizes, strings, ponteiros, entrada e saída de dados e programação orientada a objetos.
O documento discute as linguagens de programação. Aborda a tipologia e tipos de linguagens, incluindo linguagens imperativas, funcionais e baseadas em lógica. Também descreve a evolução das linguagens desde o FORTRAN até linguagens modernas como C++ e Java. Explica a diferença entre código fonte e código máquina, e entre compiladores e interpretadores.
O documento discute a história e conceitos de linguagens de programação. Aborda os níveis de linguagem, tipos como compiladas e interpretadas, e tipagem. Apresenta exemplos de linguagens em cada categoria ao longo da história, desde as primeiras máquinas até linguagens atuais da web.
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
A aula apresenta conceitos iniciais sobre linguagens de programação, incluindo uma breve história desde os primórdios até os dias atuais, níveis de linguagens, tipos como de script, interpretadas e compiladas, e tipagem.
Existem três classes de linguagens de programação de acordo com o nível de abstração: linguagens de máquina, de baixo nível e de alto nível. Linguagens de máquina usam códigos binários e dependem da arquitetura da CPU, enquanto linguagens de alto nível são mais independentes e se assemelham à linguagem humana, facilitando a programação.
O documento fornece um resumo sobre linguagens de programação em 3 frases:
1) As linguagens de programação surgiram para descrever mecanismos abstratos e comunicar entre programadores e computadores.
2) Ao longo dos anos, novas linguagens foram criadas para corrigir defeitos de outras ou melhorar desempenho, com foco em áreas como ciência, comércio e inteligência artificial.
3) Linguagens como COBOL, FORTRAN, Pascal, C, C++, Java, Python, entre outras, evolu
O documento resume a linguagem de programação Ruby, incluindo sua criação, influências, versões, exemplos de uso e características principais como tipagem dinâmica, classes, métodos e variáveis.
O documento discute diferentes paradigmas de programação, incluindo imperativo, orientado a objetos, funcional, lógico e paralelo/distribuído. Ele define cada paradigma, lista suas vantagens e desvantagens, e exemplos de linguagens para cada um.
1. A aula introduz o PHP, abordando sua história, características e estrutura básica.
2. Variáveis, constantes, tipos de dados e operadores são explicados. Exemplos ilustram o uso de variáveis, operações matemáticas e lógicas.
3. O documento fornece os conceitos fundamentais da linguagem PHP para iniciantes.
O documento discute as principais linguagens de programação, como surgiram e onde são utilizadas atualmente. Aborda os paradigmas de programação, a diferença entre interpretador e compilador e como funciona um compilador. Apresenta exemplos de linguagens como Assembly, Fortran, Pascal, COBOL, C, C++, Java, PHP e Shell Script.
O documento apresenta uma aula introdutória sobre PHP. Aborda os objetivos da aula, a introdução à linguagem PHP, sua estrutura e sintaxe, variáveis, constantes e operadores.
O documento apresenta o plano de ensino para a disciplina de Linguagem de Programação Estruturada em C. O plano descreve os sete módulos que compõem o conteúdo programático, incluindo conceitos básicos da linguagem C, variáveis, estruturas sequenciais, condicionais, de repetição, funções e vetores. Também define os objetivos gerais e específicos, estratégias de trabalho, avaliação e bibliografia de referência.
Semelhante a silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf (20)
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
4. Objetivos do Curso
• Apresentar os principais paradigmas de
programação.
• Introduzir programação imperativa (usando Java ou C).
• Introduzir programação orientada a objetos
(usando Java).
• Introduzir programação funcional (usando Lisp).
• Introduzir programação Lógica(usando Prolog).
• Introduzir conceitos básicos de implementação de
linguagens de programação.
5. Sobre Este Curso
Qualquer notação para descrição de algoritmos e estruturas de
dados que é “implementada” em uma computador pode ser
chamada de uma Linguagem de Programação.
Este curso se discutirá justamente o que é uma “implementação”
de uma LP, quais os paradigmas ou tipos de implementação de
LPs, e algumas das LPs mais significativas dentro do universo
destes paradigmas.
Como este é um curso relativamente curto nós discutiremos um
paradigma e uma linguagem de programação em um pouco mais
de profundidade: a programação orientada a objetos e a
linguagem Java.
6. Ementa
• Introdução às LPs
• Programação Funcional e LISP
• Programação Lógica e Prolog
• Programação OO e Java
• Linguagens Dinâmicas e de Script
• Organização de LPs
8. Assumido
• Conhecimento de uma linguagem de
programação de alto nível (ex. C ou Pascal)
Não Assumido
• Prévio conhecimento de outros paradigmas
ou linguagens de programação.
Assumido e Não Assumido
9. Parte 1 - Introdução às
Linguagens de Programação
11. Porque Estudar LPs ? (1)
Já em 1969, SAMMET listou 120 LPs que eram relativamente
bem difundidas. Desde então muitas centenas de outras LPs
surgiram (e desapareceram).
A maioria dos programadores, todavia, nunca chega a usar mais
do que umas poucas linguagens. Muitos não usam mais que uma
ou duas em sua inteira vida profissional.
Por que então estudar linguagens de programação?
12. Porque Estudar LPs (2)
• Melhorar sua habilidade de desenvolver algoritmos (ex., uso
eficiente de recursividade)
• Melhorar sua habilidade de usar a LP (ex., uso eficiente dos
recursos de gerenciamento de memória)
• Aumentar o seu vocabulário de construção úteis de
programação (ex., declarações repita até <repeat-until> e
chaveamento <case> ou <switch>)
13. Porque Estudar LPs (3)
• Melhor escolher uma linguagem de programação por conhecer
seus pontos fortes e fracos (++ depende muito do conhecimento dos
programadores).
• Torna mais fácil aprender novas LPs e acompanhar a tecnologia
(ex., quanto mais LPs você souber, mais fácil se torna aprender
uma nova LP).
• Torna mais fácil projetar novas linguagens de programação (ex.,
algumas interfaces de usuário podem adquirir contornos de uma
“linguagem de programação”).
• E por último, abrangência de formação.
14. Leituras Para Próxima Aula:
A vingança dos nerds
http://www.paulgraham.com/icad.html
A linguagem de cem anos
http://www.paulgraham.com/hundred.html
Riscos das escolas de Java
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Comparação de Sintaxe
http://merd.sourceforge.net/pixel/language-study/syntax-across-languages/
16. Um Pouco de História (i)
1951-55
Hardware: computadores a válvula e memórias com linhas de retardo
de mercúrio
Métodos: Linguagens de máquina, primórdios do uso de sub-rotinas e
estruturas de dados.
PLs: uso experimental de compiladores de expressões.
1956-60
Hardware: armazenamento em fitas magnéticas, memórias de núcleo
de ferrite, circuitos transistorizados.
Métodos: início do uso de compiladores, otimização
de código, interpretadores, processamento de listas, e métodos
dinâmicos de armazenamento.
PLs: FORTRAN, ALGOL 58, ALGOL 60, COBOL, LISP.
17. Um Pouco de História (ii)
1961-65
Hardware: famílias de arquiteturas compatíveis, discos magnéticos
Métodos: SO multi-programados, compiladores direcionados à sintaxe.
PLs: COBOL61, novo ALGOL 60, SNOBOL, JOVIAL, notação APL.
1966-70
Hardware: crescimento explosivo de capacidade e velocidade e
decréscimo de custo, minicomputadores, micro-programação, e circuitos
integrados.
Métodos: sistemas interativo de tempo compartilhado, compiladores com
otimização, sistemas de escrita de tradução.
PLs: APL, FORTRAN 66, COBOL 65, ALGOL 68, SNOBOL 4, BASIC,
PL/I, SIMULA 67, ALGOL-W.
18. Um Pouco de História (iii)
1971-75
Hardware: primeiros microprocessadores/microcomputadores, auge dos
minicomputadores, sistema de armazenamento de massa, memórias de
semicondutores.
Métodos: Verificação de programas, programação estruturada, início da
engenharia de software como disciplina.
PLs: Pascal, COBOL 74, PL/I padrão, C, Scheme, Prolog.
1976-80
Hardware: microcomputadores comerciais, grandes sistemas de
armazenamento de massa, programação distribuída.
Métodos: tipos abstratos de dados, semânticas formais, programação de
tempo real e sistemas embarcados.
PLs: Smalltalk, Ada, FORTRAN 77, ML.
19. Um Pouco de História (iv)
1981-85
Hardware: computadores pessoais, primeiras estações de trabalho, vídeo-
games, redes locais, Arpanet.
Métodos: Programação orientada à objetos, sistemas interativos de
programação, editores baseados em sintaxe.
PLs: Turbo Pascal, Smalltalk-80, uso de Prolog, Ada 83, Postscript.
1986-90
Hardware: idade do microcomputador, estações de trabalho de preço
médio, arquitetura RISC, comunicação global de dados, Internet.
Métodos: computação cliente-servidor (e-mail, ftp, terminais remotos)
PLs: FORTRAN 90, C++, SML (Standard ML).
20. Um Pouco de História (v)
1991-95
Hardware: estações de trabalho rápidas e baratas, arquiteturas
maciçamente paralelas, imagem, voz e fax sobre a Internet.
Métodos: sistemas abertos, ambientes de desenvolvimento, infraestruturas
nacionais de comunicação de dados, surgimento da WWW.
PLs: Ada95, linguagens de processos (TCL, PERL), HTML.
1996-00
Hardware: popularização de computadores e estação de trabalho,
surgimento dos “equipamentos de informação” (celulares e PDAs), vídeo
sobre a Internet.
Métodos: infraestruturas mundiais de comunicação de dados, sistemas
Web, arquiteturas 3-tiers e n-tiers, máquinas virtuais independentes de
plataforma.
PLs: Java, XML, etc ... .
21. E o Momento Atual
2000-5
Hardware: sistemas de informação domésticos, computadores de
baixíssimo custo, e celulares; disseminação de redes wireless.
Métodos: multicasting, identidade digital, sistemas Web semânticos,
sistemas de auxílio à GC, computação social.
PLs: .Net, Java, XML, J2ME, Python, PHP
2005-10
Hardware: smartphones, equipamentos de informação convergentes TV
digital; fazenda de servidores em nuvem.
Métodos: multicasting a nível pessoal (Móvel), computação em nuvem,
sistemas convergentes, redes sociais.
PLs: Ruby on Rails, Python, Groovy
23. Introdução
• O que é uma linguagem?
– “Conjunto de regras que estabelecem normas de
comunicação”.
– Caso as partes envolvidas na comunicação falem
línguas diferentes, surge a necessidade de um tradutor
(intermediário).
• O que é uma linguagem de Programação?
– Também é um conjunto de regras que estabelecem
normas de comunicação entre o programador e o
computador.
– Uma LP deve ser extremamente formal e exata.
– Uma linguagem ambígua torna-se difícil de ser
traduzida para uma linguagem de máquina.
24. Introdução
• Evolução das LPs
– Primeira Geração: Linguagem de máquina
• Código de Máquina (0s e 1s).
– Segunda Geração:
• Linguagem de Montagem - Assembler
– Terceira Geração
• Imperativas: FORTRAN, Cobol, Basic, Algol, ADA, Pascal, C
• Lógicas e Funcionais: LISP, ML, Prolog
– Quarta Geração
• Geradores de Relatórios, Linguagens de Consultas: SQL, CSP
– Quinta Geração
• LOO : Smalltalk, Java, Eiffel, Simula 67
– Sexta Geração ?
• Web e Linguagens Dinâmicas : Python, JavaScript, Ruby
27. Linguagens Imperativas (i)
Linguagens imperativas ou procedurais são linguagens orientadas
à comandos ou declarações. Elas baseiam-se na idéia de que a
memória mantém uma máquina de estados que pode ser
modificada a cada execução das declarações da linguagem.
A Figura a seguir ilustra este processo.
28. +
Linguagens Imperativas (ii)
Geralmente tem uma sintaxe do tipo:
declaração 1;
declaração 2;
declaração 3;
.....
A memória é vista como
um conjunto de caixas
modificadas a cada
declaração do programa.
29. Linguagens Imperativas (iii)
Desenvolvimento de programas consiste na modificação
consecutiva dos estado da memória até se chegue a uma
solução desejada.
Este paradigma representa geralmente a primeira abordagem
que alguém aprende em programação (no MIT usava-se
programação funcional como primeiro curso). Algumas das
mais usadas linguagens de programação usam este modelo de
programação:
C, FORTRAN, Algol, Pascal, COBOL, “C++”, “Java”, etc.
31. Linguagens OO (i)
Linguagens orientadas à objeto são linguagens que estendem a
linguagens imperativas com a introdução do conceitos de objetos.
Objetos são conjuntos de dados geralmente complexos com
funções bem definidas que podem ser aplicadas eles. Funções e
dados são encapsulados pelo objeto de forma a expor somente o
que se quer a outros objetos. Objetos se comunicam por
mensagens, que chamam as funções expostas. Para facilitar esta
prática, funções similares podem ter o mesmo nome deste que
tenham estruturas diversas (polimorfismo em tempo de
compilação), ou a associação entre uma mensagem e um objeto (e
a função chamada) pode ser feita dinamicamente em tempo de
execução (polimorfismo real).
33. Linguagens OO (iii)
Objetos são definidos a partir de outros objetos mais genéricos
através de mecanismos de herança.
Subclasse
Superclasse
34. Linguagens OO (iv)
Ao construir objetos concretos na memória, OO usa a eficiência da
programação imperativa. Ao construir classes de funções que
aplicam-se a um conjunto restrito de objetos, OO ganha através de
encapsulamento e polimorfismo a flexibilidade e confiabilidade da
programação funcional (nossa próxima transparência).
São exemplos de linguagens OO as linguagens Smalltalk, Ada
(não tem polimorfismo real), C++, e Java.
36. Linguagens Funcionais (i)
Linguagens funcionais ou aplicativas são linguagens orientadas à
função que um programa representa. Isto é conseguido pensando-
se na função que deve ser aplicada num estado de máquina inicial
para transformá-lo em um estado de máquina final desejado como
resposta.
Pode-se ver este processo como a construção de uma lente que
pega o estado inicial da memória e o “transforma” em um estado
final desejado. A Figura a seguir ilustra este processo.
37. Linguagens Funcionais (ii)
lente ou
função 1
lente ou
função 2 Resultado
Geralmente tem uma
sintaxe do tipo:
funçãoN(
funçãoN-1(...
função2(
função1(dados)) ...
))
38. Linguagens Funcionais (iii)
Desenvolvimento de programas consiste em sucessivamente
desenvolver funções a partir de funções previamente
existentes (bottom-up), até chegar uma função final
(geralmente complexa) que consegue computar a resposta
desejada a partir do conjunto inicial de dados.
Em vez de olhar para sucessivas máquinas de estados de uma
computação, a programação aplicativa considera sucessivas
transformações funcionais. LISP, ML e HASKELL são três
da mais conhecidas linguagens funcionais.
40. Linguagens Lógicas (i)
Linguagens lógicas ou baseadas em regras são linguagens
baseada na lógica de predicados, onde uma série de regras são
definidas para que o programa tome ações apropriadas para cada
estado habilitador na memória do computador.
Pode-se ver este processo como a construção de uma série de
filtros (as regras) que sucessivamente habilitam mudança de
estados. A figura a seguir ilustra este processo.
41. Linguagens Lógicas (2)
condição habilitadora
ação habilitada
+
Geralmente tem uma sintaxe do tipo:
condição1 -> ação1
condição2 -> ação2
....
condiçãon -> açãon
42. Linguagens Lógicas (3)
Desenvolvimento de programas consiste em construir-se um
conjunto de regras que trate (tenha condições habilitadoras e
tome ações adequadas) todos os possíveis estados de iniciais
do programa.
Prolog (linguagem de programação lógica) é o exemplo mais
conhecido desta família de linguagens, mas qualquer qualquer
linguagem ou ferramenta baseada em tabelas de decisões
podem ser vistas como linguagens baseadas em regras.
Exemplos incluem ferramentas de parsing tais como YACC
(Yet Another Compiler Compiler) ou JavaCC.
44. Programação OO
Programação imperativa separa (ou tende a separar)
dados dos procedimentos usados para manipular estes
dados.
Programação OO concentra-se definir os objetos
dentro de um certo domínio com um conjunto “estado”
e “comportamento”.
45. Conceitos Básicos em OO
• Encapsulamento: os detalhes de implementação dos
objetos são “escondidos” dos usuários deste objeto (só a sua
interface e comportamento é de interesse real).
• Herança: novas classes de objetos podem ser criadas a
partir de outras classes de objetos mais abstratos. Estes novos
objetos herdam e estendem as propriedades dos objetos mais
abstratos.
• Polimorfismo (um nome muita formas): o remetente da
mensagem não precisa se preocupar em saber os detalhes dos
objetos destinatários desta mensagem. A mesma mensagem
pode ser dinamicamente enviada para muitos tipos de
objetos.
47. POO e o Gap Semântico
• O Gap Semântico é a diferença entre a forma como o modelo
representa a realidade, e a realidade propriamente dita.
• Quanto menor o intervalo, mais fácil será a compreensão do
sistema e a forma de alterá-lo. As alterações serão na maioria das
vezes locais, afetando um ou poucos “indivíduos” que são
representados por códigos contidos em objetos.
POO tenta reduzir o GAP Semântico !
48. Objetos
• Objeto: é uma entidade habilitada a ter um estado (informação)
e oferece um determinado número de operações (comporta-
mentos) que podem examinar ou afetar o estado do objeto.
• Modelo Orientado a Objeto: refere-se a modelos cujos
componentes são representados por objetos.
49. Características da POO (1)
• Acesso a Informações: a única forma de acesso externo ao
objeto será através dos métodos, suas particularidades internas
devem ser protegidas do mundo externo.
• Encapsulamento: variáveis e métodos associados a um objeto
são encapsulados. Esta é uma idéia simples e poderosa que
proporciona duas vantagens:
Proteção dos Dados e Modularidade.
• Comunicação: a comunicação entre os objetos ocorre por
Passagem de mensagens (chamada a um Método)
50. Tipo Abstrato de Dados encapsulam implementação e
interface em uma classe de objetos.
Uma ou mais instâncias de uma classe podem então ser
instanciadas.
Uma instância de uma classe é conhecida como um objeto.
Todo objeto tem um estado e comportamento. Aonde o estado
é determinado pelos valores atuais armazenados nas variáveis de
instância e o comportamento é determinado pelos métodos de
instância da classe da qual o objeto foi instanciado.
Características da POO (2)
51. Classes e Instâncias
• Classe: é uma definição, um modelo existente para a
criação de novos objetos. Pode ser considerada como
uma abstração que descreve todas as características
comuns dos objetos criados a partir dela.
• Usando o conceito de classe, características podem ser
associadas a um grupo inteiro de objetos.
• Instância: um objeto que pertença a uma classe é
chamado de instância desta classe.
52. Mais Classes e Instâncias
• Uma classe é uma fôrma que descreve de forma
genérica grupos de objetos com características
similares.
• Uma instância de uma classe é um objeto real.
A classe representa a descrição do que seria um
objeto (ex., um Carro que deve ter modelo, cor, ano,
e dono) enquanto uma instância é uma representação
concreta de um destes objetos na memória (ex., o
Escort verde, ano 2001, do Prof. Manoel).
53. Informação
Ano Fabricação
Cor
Marca
Velocidade Máxima
...
Partes
Motor
Câmbio
Chassis
Banco 1
...
Comportamentos
Liga()
Desliga()
Acelera()
Freia()
...
Para criar instância
Dê Cor
Crie Motor
Crie Câmbio
Crie Chassis
...
Classe Carro
instância de
Carro 1
2001
verde
Escort
122 km/h
...
instância de
Carro 2
2004
branco
Palio
111 km/h
...
instância de
Carro 3
2003
preto
Gol
113 km/h
...
54. Classe Jogador
Atr. Primitivos:
Nome
Idade
Atributos:
Tronco
Perna Direita
Perna Esquerda
Cabeça
Comportamento:
Leia nome
Corra
Salte
Chute
Endereço
Crie Instância:
Crie Cabeça
Crie Tronco
Crie Nome
Crie Perna Direita
Crie Perna Esquerda
instância de
Dida
instância de
Ronaldo
instância de
Juninho
instância de
55. Atributos e Métodos
• Atributos
– As informações e partes que compõem o objeto
– Os valores dos atributos definem o estado do objeto
• Métodos
– Funções e Procedimentos que alteram o estado do
objeto e modela o seu comportamento
56. Informação
Ano Fabricação
Cor
Marca
Velocidade Máxima
...
Partes
Motor
Câmbio
Chassis
Banco 1
...
Comportamentos
Liga()
Desliga()
Acelera()
Freia()
...
Para criar instância
Dê Cor
Crie Motor
Crie Câmbio
Crie Chassis
...
Classe Carro
instância de
Carro 1
2001
verde
Escort
122 km/h
...
instância de
Carro 2
2004
branco
Palio
111 km/h
...
instância de
Carro 3
2003
preto
Gol
113 km/h
...
57. Herança (1)
• Herança:
– Quando várias classes têm informações e comportamentos em
comum, estes podem ser abstraídos para evitar redundância de
implementação
– As informações e comportamentos comuns podem ser
colocados em uma classe mais genérica, chamada superclasse
– As classes mais específicas podem então herdar estas
informações e procedimentos da superclasse
Considere como exemplo a necessidade de se construir
Caminhões e Ônibus, além de Carros. Os pontos em
comum destas classes poderiam ser abstraídos para uma
superclasse “Veículo”.
58. Herança (2)
• Através da herança, descrições comuns podem ser re-
utilizadas, promovendo o conceito de código re-
utilizável.
• Herança elimina a redundância pelo fato de classes
descendentes apenas implementarem informações e
comportamentos adicionais, que as diferenciam das
demais. Isto conduz a sistemas menores e mais fáceis de
compreender.
• Quando modificações são implementadas nas partes
comuns (superclasses), todas as classes descendentes
automaticamente herdam estas modificações. Isto
possibilita a criação de modelos mais fáceis de se
modificar.
59. Informação
Ano Fabricação
Cor
Marca
Velocidade Máxima
...
Partes
Motor
Câmbio
Banco 1
...
Classe Veiculo
Informação
Peso
Tonelagem
Tipo de Carroceria
...
Partes
Cavalo
Carroceria
...
Comportamentos
AbraCavalo()
DesmonteCar()
...
Para criar instância
Super()
Crie Cavalo
Crie Carroceria
...
Classe Caminhao
Informação
Número de Portas
Tipo de Ar
...
Partes
Chassis
...
Comportamentos
AbraMala()
...
Para criar instância
Super()
Crie Chassis
...
Comportamentos
Liga()
Desliga()
Acelera()
Freia()
...
Para criar instância
Dê Cor
Crie Motor
Crie Câmbio
...
herda de
Classe Carro
60. Polimorfismo
• superclasses também podem ser usadas para
“prometer” um comportamento que as subclasses
devem implementar
• desta maneira o remetente de uma mensagem só
precisa saber a um nível abstrato que o objeto tem
aquele comportamento
• isto permite criar situações em que o comportamento
real de um objeto é definido em tempo de execução
61. Classe Veiculo
Comportamentos Prometidos
Liga();
Freia();
...
herda de
Classe Carro
Comp. Implementados
Liga() { >> liga o carro};
Freia() {>> freia o carro};
...
Classe Onibus
Comp. Implementados
Liga(){>>liga ônibus};
Freia(){>>freia o ônibus};
...
Ao saber que um objeto é um Veiculo, outros objetos sabem que
podem enviar para ele a mensagem Liga(), independente de sua
classe real. Devido as diferentes implementações, esta mensagem
gerará comportamentos diferentes para diferentes classes de
objetos.
62. Exemplo de Polimorfismo
Considere que a variável “v” é definida com um veículo.
função ligueVeiculo( Veiculo v) {
v.liga();
}
Qualquer carro ou ônibus pode então ser associada a “v”:
Carro c1 = CrieCarro();
Onibus o3 = CrieOnibus();
ligueVeiculo(c1);
ligueVeiculo(o3);
Ambos veículos são ligados através da mensagem v.liga(), mas
se as classes carro e ônibus têm implementações próprias para a
rotina liga(). A mensagem “liga()” chamará rotinas diferentes
quando “v” for um carro ou um caminhão.