linguagensde) programação) imperavas e) declaravas...

41
Linguagens de Programação Impera3vas e Declara3vas Computação Aplicada à Comunicação e Arte

Upload: hoangnguyet

Post on 10-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Linguagens  de  Programação  Impera3vas  e  Declara3vas  

Computação  Aplicada  à  Comunicação  e  Arte  

Computador  

CPU  

•  Principal  componente  de  um  computador  digital.  

•  Localiza  e  executa  as  instruções  de  um  programa.  

•  Capaz  de  executar  operações  simples  com  grande  rapidez.  

Memória  

•  Principal  – Memória  volá3l  usada  para  armazenar  dados  e  programas.  –  Conteúdo  modificável  pelas  instruções  dos  programas.  –  Permite  acesso  aleatório.  

•  Secundária  –  Um  dos  disposi3vos  não-­‐voláteis  mais  usados  para  o  armazenamento  de  grandes  volumes  de  dados.  

–  U3liza  superHcies  magne3záveis  para  armazenar  as  informações.  

–  Permite  acesso  randômico  aos  dados  armazenados.  

•  Qualquer  construção  em  linguagem  de  máquina  deve  ser  representada  por  números  binários  formados  apenas  com  seqüências  de  zeros  (0s)  e  uns  (1s)  

•  Computadores  entendem  apenas  um  conjunto  rela3vamente  pequeno  de  instruções  simples  como,  por  exemplo,  mova  tal  número  de  uma  posição  para  outra  em  memória  ou  some  dois  números  inteiros.  Cada  3po  de  computador  possui  um  conjunto  de  instruções  específico  dessa  natureza  

•  Uma  sensível  evolução  em  relação  à  linguagem  de  máquina  foi  o  surgimento  da  linguagem  assembly  (final  da  década  de  1940),  que  introduziu  os  seguintes  melhoramentos:  – Uso  de  palavras  mnemônicas  para  representar  operações  escritas  como  códigos  binários  em  linguagem  de  máquina.    •  ADD  ao  invés  de  1001  

– Uso  de  variáveis  simbólicas  em  vez  de  endereços  para  representar  espaços  na  memória  do  computador    •  X  ao  invés  do  endereço  1100  

Linguagens  de  Programação  •  Programar  em  linguagem  de  máquina  é  uma  tarefa  entediante  e  propensa  a  erros.  

•  A  par3r  de  meados  dos  anos  50  várias  linguagens  de  alto  nível  foram  criadas.  

•  Tais  linguagens  possuem  nível  de  abstração  rela3vamente  elevados.  

•  �������������Elas  são  mais  próximas  das  linguagens  u3lizadas  pelos  seres  humanos.  

•  Escolha  da  linguagem  de  programação  depende  da  aplicação  que  sera  desenvolvida.  

Linguagens  de  alto  nível  •  FORTRAN  (1957)  •  COBOL  (1960)  •  ALGOL  (1968)  •  PASCAL  (1970)  •  C  (1972)  •  C++  (1983)  •  Python  (1991)  •  JAVA  (1995)  •  Go  (2009)  

Tradutores  •  Tradutor  

–  Tradutor  é  um  programa  de  computador  que  aceita  como  entrada  um  programa  escrito  em  assembly  ou  numa  linguagem  de  alto  nível,  e  produz  como  saída  um  programa  escrito  em  linguagem  de  máquina.  São  3:  

–  Assembler  •  programas  escritos  em  assembly  requerem  um  assembler  (ou  montador)  para  

traduzir  programas  escritos  em  assembly  em  programas  escritos  em  linguagem  de  máquina.    

–  Compilador  •  Compilador  é  um  programa  que  traduz  um  programa  escrito  numa  linguagem  de  

alto  nível  (programa-­‐fonte)  num  programa  escrito  numa  linguagem  de  máquina  (programa-­‐objeto)    

–  Interpretador  •  interpretador  não  produz  programas-­‐objeto,  ele  simula  um  computador  cuja  

linguagem  de  máquina  seria  aquela  do  programa-­‐fonte  que  está  sendo  traduzido,  de  forma  que  cada  instrução  do  programa-­‐fonte  seja  traduzida  exatamente  antes  de  ser  executada  e  de  acordo  com  o  fluxo  de  execução  do  programa    

Compilação  

•  Programas  escritos  em  linguagens  de  alto  nível  não  são  executados  diretamente  pelo  processador.  

•  Antes  de  executá-­‐lo  é  preciso  traduzir  os  comandos  de  alto-­‐nível  para  instruções  de  máquina.  

•  Esta  tarefa  (compilação)  é  realizada  por  um  programa  chamado  de  compilador.  

Solução  de  problemas  •  Obje3vo:  encontrar  uma  sequência  de  passos  que  permitam  que  o  

problema  possa  ser  resolvido  de  maneira  automá3ca  e  repe33va.  •  Detalhamento  do  problema.  •  Perfeita  compreensão  do  problema.  •  Descrição  da  solução:  

–  Clara  –  não  ambígua  –  Sequencial  

•  Linguagem  u3lizada  na  solução  deve  ser  compreendida  pelo  executor  da  solução.  

•  Atores  envolvidos  –  criador  da  solução  (programador)  –  executor  da  solução  (computador)  –  usuário  da  solução  (cliente,  etc.)  

Algoritmo  •  definição  precisa  do  problema  -­‐>  algoritmo  •  algoritmo  consiste  de  uma  sequência  de  passos  

(instruções)  que  recebem  alguns  valores  como  entrada  e  produzem  alguns  valores  como  saída  –  quando  executadas,  as  instruções  de  um  algoritmo  resolvem  um  determinado  problema.  

–  essas  instruções  não  devem  ser  ambíguas    –  todo  algoritmo  deve  encerrar  

•  Receita  culinária,  instruções  de  direção  =  Algoritmos  –  Numa  receita  culinária,  os  ingredientes  e  utensílios  u3lizados  (por  exemplo,  ovos,  farinha  de  trigo,  assadeira)  compõem  a  entrada  e  o  produto  final  (por  exemplo,  um  bolo)  é  a  saída  

Algoritmo  •  um  algoritmo  é  desenvolvido  para  lidar  com  vários  casos  de  

entrada.  •  Um  algoritmo  é  correto,  quando,  para  cada  caso  de  

entrada,  ele  pára  com  a  saída  correta.  Um  algoritmo  incorreto  pode  não  parar  quando  ele  recebe  um  dado  caso  de  entrada  ou  pode  parar  apresentando  um  resultado  que  não  é  correto.  

•  Pode  haver  vários  algoritmos  funcionalmente  equivalentes  que  resolvem  um  mesmo  problema  

•  tradução  de  algoritmo  planejado  em  código  –  etapa  principal  do  desenvolvimento  

•  nem  todo  problema  possui  algoritmo  –  jogar  xadrez,  enriquecer  etc.  

Algoritmo  •  problemas  que  são  resolvidos  trivialmente  por  seres  

humanos,  como  falar  uma  língua  natural  ou  reconhecer  um  rosto,  também  não  possuem  solução  algorítmica  

•  problemas  rela3vamente  diHceis  para  seres  humanos,  como  mul3plicar  dois  números  inteiros  com  mais  de  dez  dígitos  cada,  possuem  algoritmos  rela3vamente  triviais.  

•  A  abordagem  mais  comum  u3lizada  na  construção  de  algoritmos  é  denominada  dividir  e  conquistar.  

•  U3lizando  essa  abordagem,  divide-­‐se  sucessivamente  um  problema  em  subproblemas  cada  vez  menores  até  que  eles  possam  ser  resolvidos  trivialmente.    

Algoritmo  

•  Variáveis  •  Operadores    – Unários  e  Binários  

•  Expressões  – Aritmé3cas  –  Relacionais  –  Lógicas  

•  Ações  condicionais  •  Repe3ções  

Operadores  aritmé3cos  

Operadores  relacionais  

Operadores  lógicos  

Operadores  

•  Desvios  condicionais  •  Desvios  incondicionais  •  Repe3ções  

•  Tipos  –  Int  – Char  – Double  

Bom  código  

•  Legibilidade  •  Manutenibilidade  •  Portabilidade  •  Eficiência  •  Reusabilidade  •  Robustez  •  Usabilidade  •  Confiabilidade  

Ambientes  de  desenvolvimento  

•  IDE  •  Editor  •  Compilador  •  Linker  •  Loader  •  Debugger  

•  Linguagens  declara3vas  – HTML,  NCL,  XML…  

•  Declara3vo  se  descreve  o  que  ele  faz  e  não  como  seus  procedimentos  funcionam  

•  Linguagens  de  marcação  são  declara3vas  pois  descrevem  o  que  são  suas  estruturas  e  não  como  elas  serão  u3lizadas  

HTML  

•  HTML    – abreviação  para  HyperText  Markup  Language,  que  significa  Linguagem  de  Marcação  de  Hipertexto  

•  u3lizada  na  construção  de  páginas  na  Web.  •  Documentos  HTML  podem  ser  interpretados  por  navegadores.    

•  fruto  da  junção  entre  os  padrões  HyTime  e  SGML.  

HTML  

•  Criada  por  Tim  Berners-­‐Lee  – Década  de  90    – Em  estação  NeXTcube  usando  o  ambiente  de  desenvolvimento  NeXTSTEP  

•  Em  janeiro  de  2008  a  W3C  publicou  a  especificação  do  HTML5  

•  TAGs  

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="description" content="a descrição do seu site em no máximo 90 caracteres"> <meta name="keywords" content="escreva palavras-chaves curtas, máximo 150 caracteres"> <title>Título do Documento</title> </head> <body> <!-- Aqui fica a página que será visível para todos, onde pode-se inserir textos, imagens, links para outras páginas, etc, geralmente usa-se: --> <div>Tag para criar-se uma 'caixa', um bloco, mais utilizada com "Cascading Style Sheets (Folhas de Estilo em Cascata)</div> <span>Tag para modificação de uma parte do texto da página</span> <img src="endereço_de_uma_imagem.jpg" /> <a href="http://www.wikipedia.org">Wikipedia, A Enciclopédia Livre</a> </body> </html>

HTML  •  Cabeçalho  –  <3tle>:  define  o  ztulo  da  página,  que  é  exibido  na  barra  de  ztulo  dos  navegadores  

–  <style  type="text/css">:  define  formatação  em  CSS  –  <script  type="text/javascript">:  define  programação  de  certas  funções  em  página  com  scripts,  podendo  adicionar  funções  de  JavaScript  

–  <link>:  define  ligações  da  página  com  outros  arquivos  como  feeds,  CSS,  scripts,  etc  

–  <meta>:  define  propriedades  da  página,  como  codificação  de  caracteres,  descrição  da  página,  autor,  etc  

HTML  

•  Corpo  – <br  />:  quebra  de  linha.  – <h1>,<h2>...:  ztulos  pré  formatados    – <div>:  determina  uma  divisão  na  página  a  qual  pode  possuir  variadas  formatações.  

– <u>  e  <s>:  negrito,  itálico,  sublinhado  e  riscado,  respec3vamente.  

– <img  />:  imagem.  – <a>:  hiper-­‐ligação  para  um  outro  local,  seja  uma  página,  um  e-­‐mail  ou  outro  serviço.  

HTML  

•  Links  – <a  href="ht-­‐tp://pt.wikipedia.org/">Clique  aqui  para  aceder  à  página  principal  da  Wikipédia  em  português.</a>  

– <a  name="nome">texto</a>  

HTML5  

•  Esta  evolução  da  linguagem  padrão  para  web  pode  eliminar  a  necessidade  de  plug-­‐ins  para  aplicações  mul3mídia  em  navegadores  – desenvolvimento  do  HTML5  tornaria  o  Adobe  Flash  não  mais  necessário,  tanto  para  assis3r  vídeo  ou  mesmo  exibir  qualquer  conteúdo  web  

•  Com  a  evolução  da  linguagem,  os  navegadores  passam  da  categoria  "mostradores"  de  páginas  para  um  renderizador  de  "web  so~ware".  

HTML5  

•  Novas  API’s,  entre  elas  uma  para  desenvolvimento  de  gráficos  bidimensionais  

•  Controle  embu3do  de  conteúdo  mul3mídia  •  Aprimoramento  do  uso  off-­‐line  •  Melhoria  na  depuração  de  erros  •  <audio>  e  <video>  •  EME  (Encrypted  Media  Extensions  -­‐  DRM)  

HTML5  •  Canvas  •  Timed  Media  Playback  •  Offline  •  Editable  content  •  Drag-­‐and-­‐drop  •  History  •  MIME  type  and  protocol  handler  registra3on  •  Microdata  •  Web  Messaging  •  Web  Storage  –  similar  a  cookies  

HTML5  <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <title>Áudio em HTML5</title> </head> <body> <audio controls autoplay> <source src="audio.ogg" /> <!-- Mensagem explicando que o navegador não suporta áudio ou o formato usado. --> <p>Seu navegador não suporta áudio HTML5 ou o formato Opus.</p> </audio> </body> </html>

JavaScript  

•  Netscape  2.0  •  Subset  de  ECMAScript  –  ISO/IEC  16262  

•  Linguagem  interpretada  •  Comumente  executada  no  lado  do  cliente  – Node.js  –  JS  do  lado  do  servidor  

•  Orientada  a  objetos  

<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8" /> <title>Teste</title> <script> window.onload = function () { document.getElementById("hello").addEventListener("click", function () { alert("Bem-vindo!"); }, false); }; </script> </head> <body> <noscript>Seu navegador não suporta JavaScript ou ele está desabilitado.</noscript> <button id="hello">Dizer "Olá"</button> </body> </html>

// Mostra um alerta de Confirmar e Cancelar. if ( confirm( 'Escolha "Ok" ou "Cancelar" para ver a mensagem correspondente.' ) ) {

alert( 'Você apertou o botão "OK"' ); } else {

alert( 'Você apertou o botão "Cancelar"' ); }