algoritmos e programação -...

26
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Prof. Dr. Érico Fernando O. Martins [email protected] Algoritmos e Programação

Upload: ngokien

Post on 11-Nov-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA

UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP

FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS

Prof. Dr. Érico Fernando O. [email protected]

Algoritmos e Programação

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

1. Linguagens de Programação

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Definições

- Uma linguagem de programação é um método padronizado paracomunicar instruções para um computador.

- É um conjunto de regras sintáticas e semânticas usadas para definir umprograma de computador.

- Permite que um programador especifique precisamente sobre quais dadosum computador vai atuar, como estes dados serão armazenados outransmitidos e quais ações devem ser tomadas sob várias circunstâncias.

- Linguagens de programação podem ser usadas para expressar algoritmoscom precisão, para serem executados por uma máquina computável.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Baixo Nível x Alto Nível (de Abstração)

- Baixo Nível: cujos símbolos são uma representação direta do código demáquina que será gerado (Ex. Assembly)

- Alto nível: composta de símbolos mais complexos, inteligível pelo serhumano e não-executável diretamente pela máquina (Ex. Python)

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Baixo Nível x Alto Nível (de Abstração)

“Hello World” no Assembly “Hello World” no Python

http://ratosdelaboratorio.blogspot.com.br/2009/04/assembly-hello-world.html

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Compilação x Interpretação

- Uma linguagem de programação pode ser convertida, ou traduzida, emcódigo de máquina por compilação ou interpretada por um processodenominado interpretação. Em ambas ocorre a tradução do código-fontepara código de máquina.

- Código-fonte (source code): é o conjunto de palavras ou símbolos escritos de formaordenada e lógica, contendo instruções em uma linguagem de programação.

- Código de máquina (machine code): é uma sequência de números (sistema binário,octal, hexadecimal, etc) que significam uma sequência de instruções a seremexecutadas pelo processador.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Compilação x Interpretação

- Uma linguagem de programação pode ser convertida, ou traduzida, em código demáquina por compilação ou interpretada por um processo denominadointerpretação. Em ambas ocorre a tradução do código-fonte para código demáquina.

- Compilada: o código fonte é executado diretamente pelo sistema operacional ou peloprocessador, após ser traduzido para o código de máquina por meio de um processochamado compilação, usando um software chamado compilador;

- Interpretada: o código-fonte é executado por um software chamado interpretador, que emseguida é executado pelo sistema operacional ou processador. Mesmo que um código emuma linguagem passe pelo processo de compilação, a linguagem pode ser consideradainterpretada se o programa resultante não for executado diretamente pelo sistemaoperacional ou processador.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Compilação x Interpretação

- Existem também, as linguagens de script, que são linguagensinterpretadas, executadas no interior de programas e/ou de outraslinguagens de programação.

- Teoricamente, qualquer linguagem pode ser compilada ou interpretadae, por disso, há algumas linguagens que possuem ambasimplementações.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem de programação: Compilação x Interpretação

Tipicamente compiladas Tipicamente interpretadas

ALGOLBASICCC++COBOLCobraCommon LispDelphiEiffelFortranJOVIALLabVIEWPascalVisual Basic

ActionScriptBASICC#JavaJavaScriptLispLogoLuaPHPPythonRRubySSmalltalk

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Quantas linguagens de programação existem?

http://alumni.cs.ucr.edu/~vladimir/cs181/PLchart.png

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Quantas linguagens de programação existem?

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Quais são as linguagens de programação mais populares?

https://spectrum.ieee.org/computing/software/the-2017-top-programming-languages

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Linguagem Python

Python como primeira linguagem:

• Python tem uma sintaxe simples que é mais fácil de ler e usar;

• Python tem a maioria dos recursos das linguagens de programação tradicionais.Como resultado, você pode usar python para aprender os conceitos e habilidadesque se aplicam à essas linguagens.

• Python suporta o desenvolvimento de uma ampla gama de aplicações, incluindojogos, aplicações web, administração de sistemas e banco de dados,desenvolvimento cientifico, etc.

• O Python é usado por muitas empresas de sucesso, incluindo o Google, IBM,Disney e EA Games. Como resultado, conhecer python é uma habilidade valiosa.

• Python é de código aberto (open source).

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

• A linguagem de programação Python foi desenvolvida em 1990 por Guido Van Rossum, com o propósito de ser uma linguagem simples, intuitiva e tão poderosa quanto as linguagens tradicionais.

• O nome Python foi uma homenagem de Guido ao grupo de humor “MontyPython's Flying Circus”.

https://twitter.com/gvanrossum

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Python 2.x Python 3.x

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Ano Mês Distribuição (Release) Descrição

2000 Outubro 2.0 Primeira distribuição do Python 2.

2008 Dezembro 3.0 A primeira versão de uma distribuição redesenhada do Python, não retro compatível.

2010 Julho 2.7 A última distribuição do Python 2 com suporte até 2020.

2015 Setembro 3.5 A mais nova distribuição.

Aplicações Python:

Uma aplicação ou aplicativo (app) é um software de computador queexecuta uma tarefa ou um conjunto relacionado de tarefas. No entanto, osaplicativos também podem ser referidos como programas. Na prática, amaioria das pessoas usa esses termos de forma intercambiável.

• Tipos de aplicações Python:• Aplicativo de console (Console application)

• Aplicação GUI (GUI Application)

• Aplicativo Web (Web Application):

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Aplicações Python:

• Aplicativo de console (Console application): neste tipo de aplicativo, você insere comandos no prompt de comando no console que está disponível em seu sistema operacional. Os aplicativos de console são o tipo de aplicativo mais fácil de desenvolver.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Um aplicativo de console é um aplicativo de desktop que usa o console para interagir com o usuário.

Aplicações Python:

• Aplicação GUI (GUI Application): É uma aplicação que possui uma InterfaceGráfica do Usuário (GUI, do inglês Graphical User Interface). Nos casos maissimples o aplicativo GUI executa as mesmas tarefas que o aplicativo deconsole, contudo a aplicação GUI é mais amigável e intuitiva.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Um aplicativo GUI é um aplicativo que usa uma interface gráfica do usuário (GUI) para interagir com o usuário.

Aplicações Python:

• Aplicativo Web (Web Application): Ao contrário de um aplicativo dedesktop, que é executado diretamente em seu computador, um aplicativoda Web pode ser chamado por um navegador da Web que está sendoexecutado em um computador ou dispositivo móvel e pode usar umservidor para processar ou armazenar dados. Frameworks python estãodisponíveis para ajudá-lo a desenvolver esse tipo de aplicativo.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Um aplicativo da Web recebe solicitações de um navegador, processa-as em um servidor e retorna as respostas ao navegador.

Como o Python gera o bytecode (“similar” ao código de máquina tradicional):

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Como o Python gera o bytecode (“similar” ao código de máquina tradicional):

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Para criar o arquivo que contém o código-fonte, o programador usa um editor de textoou Ambiente de Desenvolvimento Integrado(IDE, do inglês Integrated DevelopmentEnvironment).

IDLE - Integrated Development and Learning Environment.

Como o Python gera o bytecode (“similar” ao código de máquina tradicional):

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Os arquivos que contêm o código-fonte têm a extensão .py. Emseguida, o interpretador python éusado para traduzir (ou compilar) ocódigo-fonte em bytecode.

Como o Python gera o bytecode (“similar” ao código de máquina tradicional):

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

Este bytecode pode ser executado por qualquercomputador que tenha a máquina virtual pythoninstalada nele. Esta máquina virtual converte obytecode para que ele possa ser executado pelosistema operacional do computador.

A máquina virtual Python é parte dopacote python e está disponível emtodas as plataformas que suportampython. É por isso que python éindependente da plataforma. Emoutras palavras, é a máquina virtualque possibilita que o pythonfuncione em uma ampla variedadede sistemas operacionais.

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

1. Exercícios Python

Algoritmos e ProgramaçãoProf. Dr. Érico Fernando O. Martins

1. Exercício de compilação em bytecode:• Digite o seguinte código-fonte no IDE Python e salve como teste no desktop (área de trabalho).

• Comandos úteis:

• O que foi gerado?

import osos.getcwd()os.chdir('/name_dir/name_subdir')

Import py_compilepy_compile.compile('name_code.py')