SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
Computação	
  Cien.fica	
  
1º	
  Ano	
  /	
  1º	
  Semestre	
  
Prof.	
  Lufialuiso	
  Sampaio	
  Velho	
  	
  	
  	
  
Ano	
  Lec?vo	
  2013	
  
Objec&vos	
  
	
  A	
  disciplina	
  de	
  Computação	
  Cien.fica	
  consiste	
  em:	
  
•	
  	
  	
  	
  Permi?r	
  o	
  desenvolvimento	
  do	
  raciocínio	
  lógico	
  
• 	
   Aprender	
   as	
   técnicas	
   de	
   resolução	
   de	
   problemas	
   por	
   meio	
   de	
  
algoritmos	
  
• 	
   U?lizar	
   os	
   conhecimentos	
   adquiridos	
   durante	
   as	
   aulas	
   para	
  
desenvolver	
  programas	
  de	
  computadores.	
  	
  	
  	
  	
  	
  
Avaliação	
  
	
  Os	
  estudantes	
  serão	
  avaliados	
  nas	
  componentes	
  prá?cas	
  e	
  teóricas:	
  
•	
  Avaliações	
  con.nuas	
  
•	
  Prova	
  parcelares	
  
•	
  Exame	
  final	
  escrito	
   	
  
•	
  Projecto	
  em	
  grupo	
  de	
  duas	
  (2)	
  pessoas	
  
Metodologia	
  
•	
   	
  As	
  aulas	
  são	
  ministradas	
  de	
  forma	
  Teórica	
  /	
  Prá?ca,	
  com	
  algumas	
  
imagens	
  ilustra?vas	
  relacionadas	
  ao	
  contexto	
  da	
  aula.	
  
•	
  	
  Assuntos	
  de	
  interesse	
  geral	
  deverão	
  ser	
  tratados	
  na	
  sala	
  de	
  aula.	
  
• 	
   Em	
   questão	
   de	
   dúvidas,	
   poderão	
   u?lizar	
   o	
   endereço	
   electrônico:	
  
ccisptec@gmail.com	
  
Programa	
  da	
  Disciplina	
  
1.	
  	
  	
  	
  Conceitos	
  sobre	
  a	
  	
  informá?ca	
  
• Definição	
  e	
  surgimento	
  da	
  Informá?ca	
  
• Computador:	
   definição,	
   funcionamento,	
   gerações	
   de	
   computadores,	
  
esquema	
  de	
  um	
  computador,	
  arquitectura,	
  classificação	
  dos	
  computadores	
  
2.	
  	
  	
  Algoritmo	
  
• Conceito	
  de	
  Algoritmo	
  
• Técnicas	
  de	
  Resolução	
  de	
  problemas	
  
• Formas	
  de	
  representação	
  dos	
  Algoritmos	
  
• Tipos	
  de	
  Dados	
  
• Variáveis	
  
3.	
  	
  	
  Expressões	
  
• Operadores	
  Aritmé?cos	
  
• Expressões	
  Aritmé?cas	
  
• Precedências	
  gerais	
  dos	
  operadores	
  aritmé?cos	
  
Programa	
  da	
  Disciplina	
  
3.	
  	
  	
  Expressões	
  (cont)	
  
• Operadores	
  Lógicos	
  
• Expressões	
  Lógicas	
  	
  
• Operadores	
  Relacionais	
  
• Estrutura	
  Condicional	
  
4.	
  	
  Estruturas	
  de	
  Repe?ção	
  
• Definição	
  e	
  ?pos	
  existentes	
  
• Importância	
  das	
  Estruturas	
  de	
  Repe?ção	
  na	
  construção	
  de	
  um	
  Algoritmo	
  
5.	
  	
  Estrutura	
  de	
  Dados	
  
• Variáveis	
   compostas	
   homogêneas	
   Unidimensional	
   e	
   Mul?dimensional
(Definição,	
  declaração	
  e	
  manipulação)	
  
6.	
   Projecto	
  Final	
  da	
  Disciplina	
  
Nota:	
   Cada	
   capítulo	
   será	
   acompanhado	
   por	
   um	
   conjunto	
   de	
   Exercícios	
   a	
   serem	
  
resolvidos	
  na	
  sala	
  de	
  aula	
  e/ou	
  Tarefa	
  para	
  Casa	
  	
  	
  
Bibliografia	
  
Barbosa,	
  Lisbete	
  Madsen.	
  Ensino	
  de	
  Algoritmos	
  em	
  cursos	
  de	
  Computação.	
  Educ.	
  2001	
  
Boente,	
  Alfredo.	
  Construindo	
  Algoritmos	
  Computacionais:	
  Lógica	
  de	
  Programação.	
  Rio	
  de	
  
Janeiro:	
  Basport,	
  2003	
  
CORMEN,	
  Thomas	
  H	
  (et	
  al.).	
  Algoritmos:	
  Teoria	
  e	
  Prá?ca.	
  Rio	
  de	
  Janeiro:	
  Ed.	
  Campus,	
  2002	
  
FARBELLONE,	
  André	
  Luiz	
  Villar,;	
  ERBERSPACHER,	
  Henri	
  Freederico.	
  Lógica	
  de	
  Programação:	
  	
  
A	
  construção	
  de	
  Algoritmo	
  e	
  Estrutura	
  de	
  Dados.	
  São	
  Paulo,	
  Editora	
  Pearson	
  Fren?ce	
  Hall,	
  
2005	
  
SOUZA,	
  Marco	
  António	
  Furlan	
  de.	
  Algoritmos	
  e	
  Lógica	
  de	
  Programação.	
  São	
  Paulo:	
  
Thomson,	
  2005	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  
O	
   Termo	
   informá?ca	
   foi	
   criado	
   pelo	
   cien?sta	
  
francês	
   Philips	
   Dreyfus	
   em	
   1962,	
   como	
   sendo	
   o	
  
resultado	
  dos	
  termos:	
  Informação	
  +	
  Automá?ca	
  
Informá?ca	
  é	
  definida	
  como	
  a	
  ciência	
  que	
  estuda	
  o	
  
tratamento	
  automá?co	
  da	
  Informação	
  tendo	
  como	
  
suporte	
  o	
  computador.	
  
Informação:	
   define	
   o	
   conjunto	
   de	
   dados	
   bem	
  
estruturados	
   que	
   geram	
   o	
   conhecimento	
   de	
   um	
  
determinado	
  assunto	
  ou	
  temá?ca.	
  
Ex:	
  Conjunto	
  de	
  dados	
  do	
  B.I	
  de	
  um	
  indivíduo	
  
Automá?ca:	
  define	
  a	
  forma	
  de	
  como	
  a	
  informação	
  
é	
  manipulada.	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  
Dados	
  consiste	
  em:	
  
•	
  	
  Factos	
  ob?dos	
  a	
  par?r	
  de	
  uma	
  observação,	
  levantamento	
  ou	
  ocorrência.	
  
Ex:	
  temperatura,	
  nome,	
  idade.	
  	
  	
  
Caracterís?cas	
  da	
  Informação	
  
•	
  Intangibilidade	
  (não	
  possui	
  existência	
  nsica)	
  
•	
  U&lidade	
  (deve	
  corresponder	
  aos	
  objec?vos	
  a	
  a?ngir)	
  
•	
  Codificação	
  (Para	
  receber	
  a	
  informação,	
  o	
  receptor	
  deve	
  conhecer	
  o	
  código	
  em	
  que	
  foi	
  
transmi?da)	
  
•	
  Tempo	
  (a	
  informação	
  pode	
  variar	
  dependendo	
  do	
  tempo)	
  	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  
Computador:	
   é	
   designado	
   ao	
   conjunto	
   de	
   disposi?vos	
  
electrônicos	
   capazes	
   de	
   receber	
   dados,	
   	
   processá-­‐los	
   de	
  
forma	
  automá?ca	
  e	
  fornecer	
  resultados.	
  
COMPUTADOR	
  =	
  HARDWARE	
  +	
  SOFTWARE	
  
Hardware:	
  define	
  a	
  parte	
  nsica	
  de	
  um	
  computador.	
  	
  
Ex:	
  Monitor,	
  teclado,	
  mouse,	
  etc.	
  
Sosware:	
  Define	
  a	
  parte	
  lógica	
  de	
  um	
  computador.	
  	
  
Ex:	
  Sistema	
  opera?vo,	
  programas	
  aplica?vos,	
  etc.	
  
Funções	
  principais:	
  
•	
  Receber	
  dados	
  
•	
  Processar	
  dados	
  
•	
  Armazenar	
  dados	
  
•	
  Mostrar	
  resultado	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  
Os	
   soswares	
   são	
   dis?nguidos	
   em	
   Sosware	
   de	
   Sistema	
   e	
  
Sosware	
  de	
  Aplicação.	
  
Sosware	
  de	
  Sistema:	
  é	
  o	
  elo	
  de	
  ligação	
  entre	
  o	
  homem	
  e	
  o	
  
computador.	
  Isto	
  é,	
  todo	
  o	
  programa	
  que	
  permite	
  dar	
  vida	
  
ao	
  computador.	
  Ex:	
  Sistema	
  Opera?vo.	
  	
  
Sosware	
   de	
   Aplicação:	
   é	
   todo	
   o	
   programa	
   que	
   facilita	
   a	
  
realização	
   das	
   nossas	
   tarefas.	
   Ex:	
   Office,	
   programas	
   de	
  
jogos,	
  Autocad,	
  windows	
  media	
  player,	
  etc.	
  
Para	
   podermos	
   u?lizar	
   os	
   soswares	
   de	
   aplicação,	
   é	
  
necessário	
   a	
   existência	
   de	
   um	
   sistema	
   opera?vo	
   instalado	
  
no	
  computador.	
  Caso	
  contrário,	
  consis?rá	
  em	
  uma	
  simples	
  
máquina	
  que	
  não	
  sa?sfaz	
  as	
  nossas	
  necessidades.	
  	
  
Sistema	
  Opera?vo:	
  é	
  todo	
  o	
  programa	
  que	
  efectua	
  a	
  gestão	
  
de	
  todas	
  as	
  tarefas	
  a	
  serem	
  executadas	
  no	
  computador	
  bem	
  
como	
  a	
  gestão	
  de	
  recursos	
  (drive	
  de	
  CD,	
  Impressora,	
  etc).	
  
São	
   exemplos	
   de	
   sistemas	
   opera?vos:	
   Windows	
   Vista,	
  
Windows	
   8,	
   Mac	
   OS	
   x	
   ,	
   Linux	
   (Ubuntu,	
   Xubuntu,	
   Fedora),	
  
etc.	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Arquitectura	
  do	
  Computador	
  
Define	
   a	
   estrutura	
   de	
   um	
   computador,	
   bem	
   como	
   a	
   interação	
   entre	
   os	
   elementos	
   que	
   o	
  
cons?tuem	
  para	
  obter	
  o	
  resultado	
  desejado.	
  
A	
  Arquitectura	
  a	
  ser	
  estudada	
  é	
  denominada	
  Arquitectura	
  de	
  Von	
  Neumann.	
  É	
  representada	
  
pelos	
  periféricos	
  de	
  Entrada,	
  Saída,	
  Memórias	
  e	
  a	
  Unidade	
  Central	
  de	
  Processamento.	
  
Ver	
  a	
  figura	
  abaixo:	
  
Fig.1	
  –	
  Arquitectura	
  de	
  Von	
  Neumann	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Arquitectura	
  do	
  Computador	
  
Periférico	
  de	
  Entrada:	
  é	
  todo	
  o	
  disposi?vo	
  que	
  permite	
  a	
  inserção	
  de	
  dados	
  no	
  computador.	
  Ex:	
  
Teclado,	
  leitor	
  de	
  código	
  de	
  barras,	
  rato,	
  Scanner,	
  etc.	
  
Periférico	
  de	
  Saída:	
  é	
  todo	
  o	
  disposi?vo	
  que	
  permite	
  a	
  visualização	
  da	
  informação	
  após	
  o	
  seu	
  
processamento.	
  
Periférico	
  de	
  E/S:	
  permitem	
  a	
  comunicação	
  entre	
  o	
  homem	
  e	
  o	
  computador	
  ou	
  vice-­‐versa.	
  Ex:	
  
Pendrives,	
  disco	
  rígido,	
  drive	
  de	
  CD,	
  drive	
  de	
  disquete,	
  etc.	
  
CPU	
  (Unidade	
  Central	
  de	
  Processamento):	
  	
  
É	
  considerado	
  como	
  o	
  cérebro	
  do	
  computador,	
  pois	
  é	
  nela	
  em	
  que	
  os	
  dados	
  são	
  manipulados	
  e	
  
os	
  cálculos	
  são	
  feitos.	
  É	
  cons?tuída	
  por	
  dois	
  (2)	
  componentes	
  principais:	
  Unidade	
  de	
  Controlo	
  
(UC)	
  e	
  a	
  Unidade	
  Aritmé?ca	
  e	
  Lógica	
  (ULA).	
  
	
  A	
  unidade	
  de	
  Controlo,	
  carrega	
  as	
  instruções	
  na	
  Memória	
  principal,	
  interpreta	
  e	
  executa	
  e	
  a	
  
ULA	
  é	
  responsável	
  pela	
  execução	
  de	
  cálculos	
  aritmé?cos	
  e	
  Lógicos.	
  	
  
Memória:	
  são	
  disposi?vos	
  capazes	
  de	
  armazenar	
  dados	
  e/ou	
  instruções.	
  	
  	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Funcionamento	
  
Primeiramente	
   quando	
   ligamos	
   o	
   computador,	
   é	
   carregado	
   o	
   sosware	
   de	
   inicialização	
  
(Boot),	
  que	
  verifica	
  o	
  estado	
  de	
  cada	
  hardware	
  e	
  se	
  está	
  pronto	
  para	
  ser	
  usado.	
  A	
  seguir,	
  é	
  
carregado	
  o	
  sistema	
  opera?vo	
  junto	
  com	
  outros	
  os	
  programas	
  que	
  entram	
  em	
  execução	
  logo	
  
que	
  o	
  computador	
  é	
  ligado.	
  
É	
  necessário	
  ter	
  em	
  conta	
  que	
  toda	
  a	
  informação	
  que	
  circula	
  no	
  computador	
  não	
  é	
  passada	
  
com	
  a	
  nossa	
  linguagem	
  (natural),	
  mas	
  sim	
  um	
  conjunto	
  de	
  códigos	
  binários	
  denominados	
  
bits	
  (menor	
  unidade	
  de	
  representação	
  da	
  informação	
  no	
  computador).	
  Quando	
  digitamos	
  
uma	
  letra	
  apar?r	
  do	
  teclado,	
  na	
  verdade	
  esta	
  letra	
  passa	
  por	
  uma	
  conversão	
  e	
  só	
  assim	
  é	
  
que	
  ela	
  é	
  manipulada.	
  
Após	
   o	
   envio	
   de	
   um	
   comando	
   (qualquer	
   acção	
   feita	
   pelo	
   disposi?vo	
   de	
   entrada),	
   o	
  
processador	
   interpreta	
   este	
   comando	
   (responsabilidade	
   da	
   U.C),	
   e	
   carrega	
   as	
   instruções	
  
con?das	
   na	
   memória	
   primária	
   para	
   a	
   sua	
   execução.	
   Caso	
   seja	
   necessário	
   efectuar	
   algum	
  
cálculo	
  lógico	
  ou	
  aritmé?co,	
  a	
  U.C	
  trata	
  de	
  encaminhar	
  para	
  a	
  ULA	
  para	
  serem	
  executados.	
  
Só	
  após	
  toda	
  a	
  operação	
  de	
  processamento	
  dos	
  dados	
  e	
  execução	
  de	
  instruções	
  é	
  que	
  são	
  
a?vados	
  os	
  sinais	
  de	
  saída	
  para	
  podemos	
  obter	
  o	
  resultado	
  desejado.	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Gerações	
  de	
  Computadores	
  
Tudo	
   começou	
   com	
   a	
   necessidade	
   do	
   ser	
   humano	
  
efectuar	
   cálculos,	
   sendo	
   que	
   a	
   contagem	
   com	
   os	
  
dedos,	
  pedras	
  e	
  paus	
  	
  tornaram-­‐se	
  insuficiente	
  para	
  
a?ngir	
  os	
  melhores	
  êxitos	
  nas	
  suas	
  ac?vidades.	
  
Foi	
  a	
  par?r	
  desta	
  fase	
  que	
  surgiu	
  o	
  Ábaco	
  inventado	
  
pelos	
  Chineses	
  a	
  aproximadamente	
  1.000	
  a.c	
  (placa	
  
de	
  madeira	
  com	
  arames	
  e	
  pequenas	
  pedrinhas	
  que	
  
podiam	
   ser	
   movidas)	
   para	
   auxiliar	
   nas	
   operações	
  
aritmé?cas.	
  Esta	
  placa	
  era	
  fortemente	
  u?lizado	
  por	
  
Egípcios	
  e	
  Babilônios.	
  
Já	
  em	
  1612,	
  foi	
  desenvolvida	
  a	
  primeira	
  calculadora	
  
portá?l	
   por	
   John	
   Napier	
   que	
   se	
   chamou	
   Ossos	
   de	
  
Napier	
   que	
   eram	
   cons?tuidos	
   por	
   um	
   conjunto	
   de	
  
bastões	
  para	
  realizar	
  as	
  mul?plicações	
  por	
  meio	
  de	
  
adições.	
  	
  
Fig.2	
  –	
  Ábaco	
  
Fig.3	
  –	
  Ossos	
  de	
  Napier	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Gerações	
  de	
  Computadores	
  
Em	
  1642,	
  o	
  matemá?co	
  Blaise	
  Pascal	
  criou	
  uma	
  máquina	
  
calculadora	
   mecânica	
   que	
   efectuava	
   as	
   operações	
   de	
  
adição	
  e	
  subtração	
  denominada	
  Pascaline,	
  com	
  o	
  intuito	
  
de	
   ajudar	
   nos	
   negócios	
   do	
   seu	
   pai.	
   Para	
   o	
   caso	
   das	
  
mul?plicações	
  e	
  divisões,	
  efectuava	
  somas	
  e	
  subtrações	
  
sucessivas.	
  
Em	
  1801	
  na	
  França,	
  Joseph	
  Jacquard	
  criou	
  uma	
  máquina	
  
de	
   tear	
   que	
   usava	
   cartões	
   perfurados	
   onde	
   con?nha	
   a	
  
configuração	
   dos	
   modelos	
   de	
   tecidos	
   a	
   serem	
  
produzidos,	
   com	
   intuito	
   de	
   subs?tuir	
   o	
   trabalho	
  
humano.	
  	
  
Fig.1.4	
  –	
  Somador	
  Pascaline	
  
Fig.	
  1.5	
  –	
  Tear	
  de	
  Jacquard	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Gerações	
  de	
  Computadores	
  
Já	
   em	
   1822,	
   Charles	
   Babbage	
   começa	
   a	
   projectar	
   uma	
  
máquina	
  a	
  vapor	
  programável	
  denominada	
  máquina	
  de	
  
diferenças	
  que	
  efectuava	
  apenas	
  adições;	
  após	
  10	
  anos,	
  
Babbage	
   pensou	
   em	
   criar	
   uma	
   máquina	
   que	
   pudesse	
  
realizar	
   qualquer	
   ?po	
   de	
   cálculo	
   tendo	
   como	
   principio	
  
básico	
   a	
   programação,	
   foi	
   denominada	
   como	
   máquina	
  
analí?ca.	
  
Esta	
   máquina	
   seria	
   alimentada	
   por	
   cartões,	
   usando	
   	
   o	
  
conceito	
   de	
   cartões	
   perfurados	
   de	
   Jacquard	
   mas	
   para	
  
armazenar	
  instruções	
  e	
  dados.	
  Ela	
  não	
  foi	
  concluída	
  por	
  
descrédito	
   dos	
   seus	
   financiadores,	
   mas	
   a	
   sua	
  
colaboradora	
  Ada	
  King	
  (Ada	
  Lovelace)	
  propôs	
  programas	
  
e	
   ainda	
   técnicas	
   de	
   programação	
   para	
   a	
   referida	
  
máquina.	
  
Ada	
   Lovelace	
   tornou-­‐se	
   a	
   primeira	
   programadora	
   do	
  
mundo	
  e	
  Charles	
  Babbage	
  como	
  o	
  pai	
  da	
  Computação.	
  
Fig.	
  1.6	
  –	
  Máquina	
  de	
  diferenças	
  de	
  Babbage	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
Gerações	
  de	
  Computadores	
  
Em	
   1890,	
   o	
   norte	
   americano	
   Hermann	
   Hollerith	
  
projectou	
   um	
   tabulador	
   electromecânico,	
   que	
  
processava	
  automa?camente	
  os	
  cartões	
  perfurados	
  que	
  
era	
   um	
   instrumento	
   essencial	
   para	
   entrada	
   de	
   dados;	
  
originando	
  assim	
  o	
  nome	
  de	
  processamento	
  de	
  dados.	
  	
  	
  	
  
Cartões	
   perfurados:	
   cartão	
   de	
   papel	
   perfurado	
   em	
  
código	
   BCD	
   (Binary	
   Coded	
   Decimal),	
   era	
   usado	
   para	
  
recolha	
  de	
  dados	
  no	
  censo	
  de	
  1890	
  nos	
  EUA.	
  	
  	
  	
  	
  	
  	
   Fig.	
  1.7	
  –	
  Tabulador	
  de	
  Hollerith	
  
Fig.	
  1.8	
  –	
  Cartões	
  perfurados	
  de	
  Hollerith	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
1ª	
  Geração	
  de	
  Computadores	
  
Z1	
  de	
  Konrad	
  Zuse	
  projectado	
  em	
  1936	
  a	
  par?r	
  de	
  relés,	
  executavam	
  os	
  cálculos	
  e	
  dados	
  lidos	
  em	
  
fitas	
  perfuradas.	
  Tornou-­‐se	
  assim	
  no	
  primeiro	
  computador	
  electro-­‐mecânico.	
  	
  	
  
Em	
  1944	
  Howard	
  Aiken	
  concebeu	
  o	
  computador	
  eletromecânico	
  Harvard	
  Mark	
  1,	
  que	
  funcionava	
  
sem	
   o	
   conceito	
   de	
   programa	
   armazenado	
   ou	
   seja	
   para	
   que	
   o	
   programa	
   fosse	
   executado,	
   era	
  
necessário	
  carregá-­‐lo	
  a	
  par?r	
  de	
  uma	
  fita	
  perfurada	
  e	
  as	
  instruções	
  eram	
  executadas	
  durante	
  a	
  
leitura	
  da	
  fita.	
  
Em	
   1946	
   é	
   apresentado	
   o	
   ENIAC	
   (Electronic	
   Numeric	
   Integrator	
   and	
   Calculator	
   )	
   cujo	
   o	
  
desenvolvimento	
  foi	
  liderado	
  por	
  John	
  Mauchly	
  e	
  J.	
  Presper	
  Eckert,	
  era	
  cons?tuído	
  por	
  18	
  mil	
  
válvulas,	
  pesava	
  30	
  toneladas,	
  possuía	
  uma	
  memória	
  pequena	
  e	
  os	
  programas	
  eram	
  configurados	
  
por	
  cabos.	
  
John	
   Von	
   Neumann	
   juntou-­‐se	
   a	
   equipa	
   do	
   ENIAC	
   após	
   ter	
   proposto	
   o	
   conceito	
   de	
   programa	
  
armazenado,	
   ou	
   seja	
   as	
   instruções	
   e	
   os	
   dados	
   deviam	
   ser	
   armazenados	
   segundo	
   uma	
   única	
  
representação	
  este	
  conceito	
  foi	
  denominado	
  por	
  Arquitectura	
  de	
  Von	
  Neumann	
  e	
  implementado	
  
no	
  computador	
  EDVAC	
  (Electronic	
  Discrete	
  Variable	
  Computer)	
  	
  	
  	
  	
  	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
COMPUTADORES	
  DA	
  1ª	
  GERAÇÃO	
  (1940	
  -­‐	
  1955)	
  
	
  Construídos	
  a	
  base	
  de	
  Válvulas	
  electrônicas	
  
	
  Aplicações	
  nos	
  campos	
  cien.fico	
  e	
  militar	
  
	
  Linguagem	
  Máquina	
  
	
  Uso	
  restrito	
  
	
  Cartões	
  perfurados	
  e	
  fitas	
  de	
  papel	
  como	
  memória	
  
	
  Grande	
  consumo	
  de	
  energia	
  
	
  Elevado	
  peso	
  e	
  processamento	
  na	
  ordem	
  dos	
  milissegundos	
  
	
  Grandes	
  problemas	
  de	
  aquecimento	
  
	
  Necessidade	
  de	
  reprogramação	
  para	
  cada	
  tarefa	
  a	
  executar	
  	
  	
  	
  
Fig.	
  1.9	
  –	
  ENIAC	
  
Fig.	
  1.8	
  –	
  MARK	
  1	
  
Fig.	
  1.10	
  –	
  Válvula	
  electrônica	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
2ª	
  Geração	
  de	
  Computadores	
  
Com	
  o	
  surgimento	
  do	
  transistor	
  em	
  1947,	
  reduziu	
  significa?vamente	
  as	
  dificuldades	
  apresentadas	
  
pelas	
   válvulas	
   electrônicas.	
   A	
   velocidade	
   de	
   processamento	
   passou	
   a	
   ser	
   medida	
   em	
  
microssegundos,	
  e	
  surgiram	
  as	
  linguagens	
  de	
  programação	
  de	
  alto	
  nível	
  como	
  a	
  FORTRAN	
  e	
  o	
  
COBOL.	
  
Primeiro	
   computador	
   transistorizado	
   foi	
   o	
   TX-­‐0,	
   construido	
   no	
   Massachuse~s	
   Ins?tute	
   of	
  
Tecnology	
  em	
  1957.	
  Posteriormente	
  a	
  IBM	
  criou	
  o	
  primeiro	
  modelo	
  comercial	
  denominado	
  IBM	
  
1401,	
  mais	
  barato	
  e	
  bastante	
  rápido.	
  
	
  Em	
  1964	
  a	
  CDC	
  (Control	
  Data	
  Corpora?ion)	
  criou	
  um	
  Supercomputador	
  denominado	
  CDC	
  –	
  6600	
  
que	
   permi?a	
   descarregar	
   o	
   processamento	
   da	
   CPU	
   pelo	
   uso	
   de	
   pequenos	
   computadores	
  
auxiliares	
  que	
  tratavam	
  da	
  entrada	
  e	
  saída	
  de	
  dados,	
  bem	
  como	
  o	
  gerenciamento	
  de	
  tarefas	
  de	
  
forma	
  paralela.	
  	
  	
  	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
COMPUTADORES	
  DA	
  2ª	
  GERAÇÃO	
  (1955	
  -­‐	
  1963)	
  
	
  Subs?tuição	
  de	
  válvulas	
  pelo	
  transistor	
  
	
  Ocupavam	
  menos	
  espaço	
  e	
  consome	
  menos	
  energia	
  
	
  Construção	
  de	
  computadores	
  mais	
  baratos,	
  mais	
  potentes	
  
e	
  mais	
  fiáveis	
  
	
  Uso	
  do	
  conceito	
  sobre	
  memória	
  auxiliar	
  (fitas	
  magné?cas	
  
e	
  discos	
  magné?cos)	
  
	
  Uso	
  das	
  linguagens	
  de	
  programação	
  de	
  Alto	
  nível	
  (Cobol	
  e	
  
Fortran)	
  
 	
   Velocidade	
   de	
   processamento	
   na	
   ordem	
   dos	
  
Microssegundos	
  
Fig.	
  1.10	
  –	
  TRANSISTOR	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
3ª	
  Geração	
  de	
  Computadores	
  
A	
  principal	
  caracterís?ca	
  desta	
  geração	
  é	
  o	
  uso	
  dos	
  Circuitos	
  Integrados	
  criado	
  em	
  1958	
  por	
  
Robert	
  Noyce.	
  	
  
O	
  Circuito	
  Integrado	
  é	
  cons?tuído	
  por	
  dezenas	
  de	
  Transistores,	
  que	
  executam	
  desde	
  funções	
  
lógicas	
  simples	
  até	
  as	
  funções	
  mais	
  complexas.	
  
Reduziu	
   bastante	
   o	
   espaço,	
   baixou	
   o	
   consumo	
   de	
   energia,	
   e	
   reduziu	
   a	
   velocidade	
   de	
  
processamento	
  para	
  nanossegundos.	
  
•IBM	
  360	
  é	
  um	
  exemplo	
  de	
  computadores	
  desta	
  geração.	
  
COMPUTADORES	
  DA	
  3ª	
  GERAÇÃO	
  (1963	
  -­‐	
  1970)	
  
	
  Subs?tuição	
  dos	
  transistores	
  por	
  Circuitos	
  integrados	
  
	
  Velocidade	
  de	
  Processamento	
  em	
  nanossegundos	
  	
  
	
  Generalização	
  das	
  linguagens	
  de	
  alto-­‐nível	
  
	
  Sistemas	
  opera?vos	
  mul?-­‐u?lizadores	
  
	
  Invenção	
  do	
  Mouse	
  (rato	
  em	
  1963	
  por	
  Douglas	
  Engelbart)	
  
Fig.	
  1.10	
  –	
  CIRCUITO	
  INTEGRADO	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
COMPUTADORES	
  DA	
  4ª	
  GERAÇÃO	
  (1971	
  -­‐	
  1990)	
  
Esta	
   geração	
   é	
   marcada	
   pelos	
   microprocessadores.	
   Um	
   Microprocessador	
   consiste	
   em	
   um	
  
disposi?vo	
   electrônico	
   encapsulado	
   em	
   um	
   chip	
   que	
   possui	
   internamente	
   uma	
   Unidade	
   de	
  
controlo,	
  uma	
  unidade	
  lógico-­‐aritmé?ca	
  e	
  uma	
  memória	
  interna.	
  
Primeiro	
   Microprocessador	
   que	
   surgiu	
   foi	
   o	
   Intel	
   4004	
   desenvolvido	
   para	
   uma	
   empresa	
   de	
  
calculadoras.	
  Já	
  em	
  1981,	
  a	
  IBM	
  decidiu	
  inves?r	
  em	
  microprocessadores	
  lançando	
  assim	
  o	
  IBM	
  –PC	
  
baseado	
  no	
  processador	
  Intel	
  8088	
  com	
  16	
  KB	
  de	
  memória	
  RAM.	
  
CARACTERÍSTICAS	
  
	
  Computadores	
  com	
  Chips	
  VLSI	
  (Aperfeiçoamento	
  dos	
  Circuitos	
  Integrados)	
  
	
  Miniaturização	
  de	
  componentes	
  
	
  Velocidade	
  de	
  Processamento	
  em	
  picossegundos	
  
	
  Baixa	
  de	
  preços	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
COMPUTADORES	
  DA	
  5ª	
  GERAÇÃO	
  (1991	
  –	
  até	
  hoje)	
  
A	
  5ª	
  Geração	
  de	
  Computadores	
  é	
  marcada	
  pela	
  u?lização	
  dos	
  Circuitos	
  Integrados	
  em	
  grande	
  
escala	
  de	
  Integração.	
  Isto	
  implica	
  a	
  integração	
  de	
  elevados	
  circuitos	
  electrônicos	
  na	
  ordem	
  
dos	
  100.000	
  à	
  1.000.000	
  de	
  transistores.	
  
Os	
  computadores	
  que	
  u?lizamos	
  hoje	
  ainda	
  podemos	
  enquadrá-­‐los	
  na	
  5ª	
  geração.	
  	
  	
  	
  
CARACTERÍSTICAS	
  
	
  Aumento	
  da	
  capacidade	
  de	
  processamento	
  de	
  dados,	
  armazenamento	
  e	
  transferência	
  
	
  Miniaturização	
  de	
  componentes	
  
	
  Processamento	
  paralelo	
  (várias	
  operações	
  a	
  serem	
  executadas	
  ao	
  mesmo	
  tempo)	
  
	
  Baixa	
  de	
  preços	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
CLASSIFICAÇÃO	
  DOS	
  COMPUTADORES	
  
Os	
   computadores	
   podem	
   ser	
   classificados	
   quanto	
   a	
   sua	
   função	
  
que	
  exercem	
  ou	
  pelas	
  suas	
  dimensões	
  (porte).	
  
Quanto	
  as	
  suas	
  funções:	
  
Servidores:	
   são	
   computadores	
   que	
   servem	
   as	
   redes	
   de	
  
computadores.	
   Disponibilizam	
   inúmeros	
   serviços,	
   como	
   por	
  
exemplo:	
  internet,	
  base	
  de	
  dados,	
  ficheiros,	
  impressoras,	
  etc.	
  
Consola	
   de	
   vídeo	
   games:	
   prove	
   ao	
   u?lizador	
   um	
   ambiente	
   de	
  
entretenimento	
  (jogos).	
  
Sistemas	
   Embarcados:	
   são	
   disposi?vos	
   que	
   incorporam	
   um	
  
computador	
  no	
  seu	
  interior	
  para	
  realizar	
  uma	
  tarefa	
  específica.	
  
Ex:	
  Computadores	
  de	
  bordo	
  de	
  um	
  automóvel	
  	
  
Quanto	
  ao	
  porte:	
  
Grande	
  porte:	
  supercomputadores	
  e	
  mainframes.	
  
Supercomputadores,	
   são	
   bastante	
   rápidos,	
   potentes	
   capazes	
   de	
  
processar	
   informações	
   na	
   ordem	
   dos	
   Bilhões	
   de	
   instruções	
   por	
  
segundo.	
  
Mainframes,	
   processam	
   grandes	
   quan?dades	
   de	
   informação,	
  
sendo	
   bastante	
   usados	
   pelos	
   bancos,	
   companhias	
   de	
   seguro	
   e	
  
aéreas,	
  na	
  internet,	
  etc.	
  
Fig.	
  1.11	
  –	
  Mainframe	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
CLASSIFICAÇÃO	
  DOS	
  COMPUTADORES	
  
Médio	
   Porte:	
   Denominadas	
   estações	
   de	
   trabalho,	
  
correspondem	
   aos	
   computadores	
   com	
   grande	
  
capacidade	
   de	
   processamento,	
   e	
   em	
   alguns	
   casos	
  
permitem	
  o	
  ambiente	
  mul?	
  u?lizador.	
  
Os	
  também	
  denominados	
  mini	
  computadores,	
  
são	
  menores	
  que	
  os	
  mainframes,	
  e	
  maiores	
  em	
  	
  
relação	
  aos	
  computadores	
  pessoais.	
  
Onde	
  são	
  u&lizados?	
  
Hoje	
  em	
  dia,	
  os	
  minicomputadores	
  são	
  geral-­‐	
  
mente	
  u?lizados	
  como	
  servidores	
  nas	
  redes	
  de	
  
Computadores.	
  	
  
Fig.	
  1.12	
  –	
  Worksa&ons	
  
CAP.	
  I:	
  Conceitos	
  sobre	
  a	
  Informá&ca	
  	
  	
  
CLASSIFICAÇÃO	
  DOS	
  COMPUTADORES	
  
Pequeno	
  porte:	
  Computadores	
  de	
  uso	
  pessoal.	
  Ex:	
  Desktop,	
  laptop,	
  tablet.	
  
São	
  os	
  computadores	
  que	
  u?lizamos	
  
no	
  nosso	
  dia	
  à	
  dia,	
  quer	
  os	
  que	
  se	
  	
  
mantém	
  em	
  nossas	
  casas,	
  bem	
  como	
  
os	
  que	
  usamos	
  em	
  qualquer	
  parte	
  
(laptops,	
  tablets).	
  	
  	
  
CAPÍTULO	
  II	
  
ALGORITMO	
  
Ano	
  Lec?vo	
  2013	
  
Algoritmo	
  	
  
Definição	
  
Sequência finita de passos que visam a atingir um objectivo específico.
Conjunto de passos com uma determinada ordem, que nos permitem
resolver um problema.
Para a solução de qualquer problema computacional, é necessário recorrer a
técnica de algoritmo pelo facto de permitir extrair deste o conjunto de detalhes
envolvidos, e encontrar a melhor solução para o devido problema.
É importante saber que o computador não compreende a linguagem humana;
então os programas quando são construídos, geralmente utiliza-se uma
linguagem de alto nível (JAVA, C, C++, PASCAL) e posteriormente convertidos
para linguagem máquina (zeros e uns) por intermédio de um compilador.
Exemplos de algoritmos: receita de bolo, passos para trocar o pneu de um carro,
passos para ligar um computador, passos para levantar dinheiro de um Multicaixa,
etc.
Algoritmo	
  	
  
Um algoritmo actua sobre um conjunto de entradas(ingredientes no caso do bolo),
procedimentos para manipulação das entradas (preparação do bolo) de formas a
gerar uma saída benéfica para o utilizador. os algoritmos uma vez concebidos,
podem ser traduzidos para qualquer linguagem de programação (processo de
codificação), ou seja precisamos projectar apenas uma vez e escrever para
qualquer linguagem. Exemplo: a forma como cozinhamos o arroz, pode ser
traduzida para o inglês, o francês, etc, tornando-se compreensível caso utilizamos
as regras das respectivas línguas (sintaxe). Veja abaixo as etapas de um
algoritmo
CAP.	
  II	
  
Fig.	
  2.1	
  –	
  Fases	
  de	
  um	
  Algoritmo	
  
Algoritmo	
  	
  
CARACTERÍSTICAS	
  
Todo	
  algoritmo	
  tem	
  as	
  seguintes	
  caracterís?cas	
  principais:	
  
Finitude:	
  deve	
  possuir	
  um	
  número	
  finito	
  de	
  passos.	
  
Definição:	
  as	
  acções	
  devem	
  ser	
  definidas	
  de	
  forma	
  rigorosa	
  e	
  sem	
  ambiguidades	
  
Entradas:	
  um	
  algoritmo	
  deve	
  ter	
  zero	
  ou	
  mais	
  entradas	
  isto	
  é,	
  as	
  quan?dades	
  que	
  lhe	
  são	
  
fornecidas	
  antes	
  do	
  seu	
  início.	
  
Saídas:	
  um	
  algoritmo	
  deve	
  ter	
  uma	
  ou	
  mais	
  saídas,	
  isto	
  é,	
  quan?dades	
  relacionadas	
  com	
  
as	
  entradas.	
  
Efec?vidade:	
  as	
  operações	
  devem	
  ser	
  alcançáveis	
  em	
  um	
  tempo	
  finito.	
  
Eficácia:	
  Deve	
  resolver	
  o	
  problema	
  proposto	
  
Livre	
   de	
   linguagem:	
   a	
   construção	
   de	
   um	
   algoritmo	
   não	
   depende	
   de	
   uma	
   linguagem	
  
específica,	
  mas	
  o	
  contrário	
  é	
  válido.	
  	
  
Algoritmo	
  	
  
Exemplo:	
  Algoritmo	
  para	
  tomar	
  banho	
  
1º	
  Entre	
  em	
  baixo	
  do	
  chuveiro.	
  
2º	
  Ligue	
  a	
  água	
  e	
  ajuste	
  a	
  temperatura.	
  	
  
3º	
  Pegue	
  o	
  champô	
  e	
  esfregue	
  no	
  cabelo.	
  	
  
4º	
  Molhe	
  o	
  cabelo.	
  	
  
5º	
  Pegue	
  o	
  sabonete	
  e	
  esfregue	
  por	
  todo	
  o	
  corpo.	
  
6º	
  Molhe	
  o	
  corpo.	
  
7º	
  Desligue	
  o	
  chuveiro.	
  
8º	
  Pegue	
  uma	
  toalha.	
  
9º	
  Enxugue	
  o	
  cabelo	
  e	
  o	
  corpo.	
  
Algoritmo	
  	
  
RESOLUÇÃO	
  DE	
  PROBLEMAS	
  
Acabamos	
   por	
   definir	
   o	
   conceito	
   sobre	
   algoritmos,	
   agora	
   sabemos	
   que	
   é	
   o	
   meio	
   que	
  
possuímos	
  para	
  resolver	
  problemas	
  quer	
  computacionais	
  ou	
  não.	
  Mas	
  como	
  podemos	
  
analisar	
  um	
  problema	
  e	
  chegar	
  ao	
  resultado	
  exacto?	
  Precisamos	
  de	
  antemão:	
  
 Compreender	
  o	
  problema:	
  geralmente	
  o	
  problema	
  é	
  proposto	
  por	
  um	
  enunciado,	
  ou	
  
seja	
   um	
   texto	
   que	
   explica	
   o	
   problema	
   e	
   fornece	
   detalhes	
   para	
   a	
   solução.	
   Nesta	
  
podemos	
   nos	
   ques?onar:	
   O	
   que	
   pede	
   o	
   problema?;	
   	
   Quais	
   são	
   as	
   condições	
   do	
  
problema?	
  Existe	
  alguma	
  informação	
  para	
  descobrir	
  ou	
  cálculo	
  a	
  efectuar?	
  
 Elabore	
  uma	
  estratégia	
  de	
  resolução:	
  Encontre	
  conexões	
  entre	
  os	
  dados,	
  use	
  teoremas	
  
ou	
  formulas	
  para	
  ajudar,	
  verifique	
  se	
  está	
  a	
  levar	
  em	
  conta	
  todos	
  os	
  dados	
  e	
  condições.	
  
 Execute	
  a	
  estratégia:	
  nesta	
  fase	
  é	
  posta	
  em	
  prá?ca	
  todas	
  as	
  estratégias	
  elaboradas	
  para	
  
a	
  resolução	
  do	
  problema.	
  
 Revise:	
  Examine	
  a	
  solução	
  ob?da	
  a	
  par?r	
  do	
  resultado	
  ob?do	
  executando	
  o	
  teste	
  de	
  
mesa.	
  	
  	
  	
  	
  
Algoritmo	
  	
  
Exercícios	
  
1. Crie	
  um	
  algoritmo	
  que	
  recebe	
  dois	
  números	
  inteiros,	
  fornece	
  o	
  resultado	
  da	
  soma	
  
dos	
  mesmos.	
  
2. Três	
  músicos:	
  Damião,	
  Paulino	
  e	
  Emanuel,	
  tocam	
  guitarra,	
  bateria	
  e	
  baixo.	
  Contudo,	
  
não	
  se	
  sabe	
  quem	
  toca	
  o	
  quê.	
  Sabe-­‐se	
  que	
  o	
  Damião	
  não	
  é	
  o	
  baixista.	
  Que	
  Paulino	
  
ensaia	
   com	
   o	
   guitarrista	
   às	
   Quintas.	
   E	
   que	
   o	
   baixista	
   ensaia	
   sempre	
   sozinho	
   às	
  
Terças.	
  Quem	
  toca	
  cada	
  um	
  dos	
  instrumentos?	
  
3. Um	
   comboio	
   parte	
   de	
   Luanda	
   a	
   uma	
   velocidade	
   de	
   120	
   Km/h	
   em	
   direcção	
   a	
  
Malange,	
   ao	
   mesmo	
   tempo	
   em	
   que	
   outro	
   comboio	
   parte	
   de	
   Malange	
   a	
   uma	
  
velocidade	
  de	
  80km/h	
  em	
  direcção	
  a	
  Luanda.	
  Quando	
  os	
  comboios	
  se	
  encontram,	
  
qual	
  deles	
  está	
  mais	
  próximo	
  de	
  Luanda?	
  Aquele	
  que	
  parte	
  de	
  Luanda	
  ou	
  o	
  que	
  
parte	
  de	
  Malange?	
  	
  
Formas	
  de	
  Representação	
  de	
  um	
  Algoritmo	
  	
  
Um	
  algoritmo	
  pode	
  ser	
  representado	
  em	
  três	
  (3)	
  formas	
  principais:	
  Descrição	
  Narra?va,	
  
Fluxograma	
  e	
  Pseudocódigo	
  (Portugol).	
  
Descrição	
  Narra&va:	
  Representa-­‐se	
  pela	
  descrição	
  de	
  uma	
  sequência	
  de	
  passos	
  em	
  nossa	
  
língua	
   natural	
   (português).	
   Este	
   método	
   ajuda	
   a	
   compreender	
   e	
   organizar	
   as	
   etapas	
  
necessária	
   para	
   resolver	
   um	
   problema;	
   mas	
   esta	
   técnica	
   não	
   é	
   compreendida	
   pelo	
  
computador,	
  pois	
  não	
  compreende	
  a	
  linguagem	
  humana.	
  	
  
Sendo	
  assim,	
  é	
  importante	
  construir	
  os	
  algoritmos	
  em	
  uma	
  linguagem	
  de	
  programação	
  
específica;	
  normalmente	
  o	
  Pseudocódigo.	
  
Regras	
  de	
  construção	
  
• U?lizar	
  somente	
  um	
  verbo	
  em	
  cada	
  frase	
  
• Construir	
  o	
  algoritmo	
  numa	
  visão	
  para	
  leigos	
  em	
  informá?ca	
  
• 	
  U?lizar	
  frases	
  curtas	
  e	
  simples	
  
• Ser	
  objec?vo	
  
• Não	
  u?lizar	
  palavras	
  que	
  tenham	
  mais	
  do	
  que	
  um	
  sen?do	
  de	
  compreensão	
  
Exemplos	
  de	
  algoritmo	
  em	
  Descrição	
  Narra&va	
  	
  
SOLUÇÃO	
  
1. Crie	
  um	
  algoritmo	
  que	
  recebe	
  dois	
  números	
  inteiros,	
  fornece	
  o	
  resultado	
  da	
  soma	
  
dos	
  mesmos.	
  
Algor?mo	
  “soma	
  de	
  dois	
  numeros”	
  
Entrada:	
  dois	
  numeros	
  
Inicio	
  
Receber	
  primeiro	
  numero	
  
Receber	
  segundo	
  numero	
  
Somar	
  primeiro	
  e	
  segundo	
  numero	
  
Saída:	
  Mostrar	
  resultado	
  da	
  soma	
  
Fim	
  do	
  algoritmo	
  
SOLUÇÃO	
  
2. Três	
  músicos:	
  Damião,	
  Paulino	
  e	
  Emanuel,	
  tocam	
  guitarra,	
  bateria	
  e	
  baixo.	
  Contudo,	
  
não	
  se	
  sabe	
  quem	
  toca	
  o	
  quê.	
  Sabe-­‐se	
  que	
  o	
  Damião	
  não	
  é	
  o	
  baixista.	
  Que	
  Paulino	
  
ensaia	
   com	
   o	
   guitarrista	
   às	
   Quintas.	
   E	
   que	
   o	
   baixista	
   ensaia	
   sempre	
   sozinho	
   às	
  
Terças.	
  Quem	
  toca	
  cada	
  um	
  dos	
  instrumentos?	
  
Algoritmo	
  “instrumento	
  do	
  musico”	
  
Entrada:	
  tres	
  musicos	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tres	
  instrumentos	
  
Inicio	
  
Excluir	
  o	
  Damião	
  do	
  baixo	
  
Excluir	
  o	
  Paulino	
  da	
  guitarra	
  
Excluir	
  o	
  Paulino	
  do	
  Baixo	
  
Associar	
  Damião	
  a	
  Guitarra	
  
Associar	
  Emanuel	
  ao	
  Baixo	
  
Associar	
  Paulino	
  a	
  Bateria	
  
Saída:	
  Mostrar	
  resultado	
  da	
  associacao	
  
Fim	
  do	
  algoritmo	
  
Exemplos	
  de	
  algoritmo	
  em	
  Descrição	
  Narra&va	
  	
  
Formas	
  de	
  Representação	
  de	
  um	
  Algoritmo	
  	
  
Fluxograma:	
   Representa-­‐se	
   por	
   símbolos	
   gráficos	
   predefinidos,	
   que	
   ilustram	
   os	
   passos	
  
individuais	
  e	
  suas	
  interligações	
  até	
  chegar	
  a	
  solução	
  do	
  problema;	
  é	
  como	
  se	
  es?vesse	
  a	
  
juntar	
  um	
  quebra	
  cabeças.	
  
As	
  instruções	
  a	
  serem	
  executadas	
  são	
  colocadas	
  no	
  interior	
  de	
  cada	
  figura.	
  
Modo	
  de	
  representação	
  
Indica	
  o	
  início	
  ou	
  fim	
  do	
  algoritmo	
  
Processamento	
  de	
  dados	
  ou	
  execução	
  de	
  operações	
  
Entrada	
  de	
  dados	
  	
  
Saída	
  de	
  dados	
  
Exemplos	
  de	
  algoritmo	
  em	
  Fluxograma	
  
1. Crie	
  um	
  algoritmo	
  que	
  recebe	
  dois	
  números	
  inteiros,	
  fornece	
  o	
  resultado	
  da	
  soma	
  
dos	
  mesmos.	
  
SOLUÇÃO	
  
inicio	
  
Primeiro	
  numero	
  
Segundo	
  numero	
  
Primeiro	
  +	
  Segundo	
  	
   Primeiro	
  +	
  Segundo	
  	
   fim	
  
Nota:	
   Na	
   saída	
   o	
   resultado	
   é	
   representado	
   novamente	
   (Primeiro	
   +	
   Segundo)	
   para	
   ilustrar	
   o	
  
conteúdo	
  que	
  sairá	
  no	
  ecrã.	
  O	
  uso	
  de	
  variáveis	
  simplifica	
  esta	
  operação.	
  Ver	
  nas	
  próximas	
  aulas.	
  
Exemplos	
  de	
  algoritmo	
  em	
  Fluxograma	
  
1. Crie	
  um	
  algoritmo	
  para	
  tomar	
  banho	
  no	
  chuveiro.	
  
SOLUÇÃO	
  
inicio	
  
Entrar	
  no	
  chuveiro	
  
Ligar	
  a	
  água	
   Pegar	
  no	
  champô	
  e	
  
esfregar	
  na	
  cabeça	
   Molhar	
  o	
  cabelo	
  
Pegar	
  no	
  sabonete	
  e	
  
esfregar	
  no	
  corpo	
   Molhar	
  o	
  corpo	
  
Desligar	
  o	
  chuveiro	
   Pegar	
  na	
  toalha	
  e	
  enxugar	
  
o	
  corpo	
  e	
  o	
  cabelo	
  
fim	
  
Formas	
  de	
  Representação	
  de	
  um	
  Algoritmo	
  	
  
Pseudocódigo	
   (Portugol):	
   u?liza	
   palavras	
   escolhidas	
   e	
   bem	
   definidas.	
   É	
   um	
   método	
  
bastante	
  aproximado	
  a	
  uma	
  linguagem	
  de	
  programação	
  de	
  alto	
  nível.	
  
As	
  instruções	
  escritas	
  em	
  Pseudocódigo,	
  são	
  facilmente	
  traduzidas	
  em	
  outras	
  linguagens,	
  
desde	
  a	
  definição	
  dos	
  ?pos	
  de	
  dados,	
  instruções	
  de	
  repe?ção,	
  selecção,	
  etc,	
  para	
  além	
  do	
  
facto	
   destas	
   serem	
   escritas	
   em	
   português.	
   Mas,	
   é	
   importante	
   aprender	
   as	
   regras	
   de	
  
representação	
  para	
  cada	
  instrução	
  (Sintaxe).	
  
Regras	
  de	
  representação	
  
programa	
  <nome_do_programa>	
  
declaracoes<definicoes_de_constantes>	
  
<declaracoes_de_variaveis>	
  
Inicio	
  
<instrucoes_do_programa>	
  
fim	
  
Formas	
  de	
  Representação	
  de	
  um	
  Algoritmo	
  	
  
Representação	
  de	
  instruções	
  principais	
  
Entrada	
  de	
  dados:	
  u?lize	
  a	
  instrução	
  leia().	
  No	
  interior	
  do	
  parênteses	
  são	
  postos	
  os	
  
elementos	
  que	
  deseja	
  de	
  entrada	
  do	
  algoritmo.	
  Por	
  ex:	
  uma	
  variável.	
  	
  
Saída	
  de	
  dados:	
  u?lize	
  a	
  instrução	
  escreva	
  ().	
  No	
  interior	
  do	
  parênteses	
  são	
  postos	
  os	
  
elementos	
  que	
  deseja	
  mostrar.	
  Por	
  ex:	
  um	
  resultado.	
  
Exemplo	
  1:	
  
Crie	
  um	
  algoritmo	
  que	
  imprima	
  na	
  tela	
  a	
  seguinte	
  mensagem:	
  “Ola,	
  este	
  é	
  o	
  meu	
  
primeiro	
  programa”	
  
Solução	
  
programa	
  “imprime_mensagem”	
  	
  
Inicio	
  
Escreva(“Ola,	
  este	
  é	
  o	
  meu	
  primeiro	
  programa”)	
  	
  
fim	
  
Crie	
  um	
  algoritmo	
  que	
  recebe	
  três	
  notas	
  de	
  um	
  aluno	
  (p1,p2,p3)	
  e	
  calcula	
  a	
  média	
  
final	
  deste	
  aluno.	
  
Resolução	
  
Algoritmo	
  “media	
  do	
  aluno”	
  
var	
  
P1,p2,p3:inteiro	
  
media:real	
  
Inicio	
  
Escreva(“digite	
  a	
  primeira	
  nota”)	
  
Leia(p1)	
  
Escreva(“digite	
  a	
  segunda	
  nota”)	
  
Leia(p2)	
  
Escreva(“digite	
  a	
  terceira	
  nota”)	
  
Leia(p3)	
  
media<-­‐(p1+p2+p3)/3	
  
Escreva(“A	
  media	
  final	
  do	
  aluno	
  e”,media)	
  
Fim	
  do	
  algoritmo	
  
Exemplos	
  de	
  algoritmo	
  em	
  Pseudocódigo	
  
Formas	
  de	
  Representação	
  de	
  um	
  Algoritmo	
  	
  
Conceitos	
  a	
  ter	
  em	
  conta	
  na	
  criação	
  dos	
  algoritmos	
  em	
  Pseudocódigo	
  
Sintaxe:	
   define	
   o	
   conjunto	
   de	
   regras	
   grama?cais	
   de	
   formação	
   de	
   sentenças	
   válidas	
   ou	
  
grama?calmente	
  correctas	
  segundo	
  determinada	
  linguagem.	
  
Ex:	
  No	
  português	
  não	
  deve	
  escrever	
  a	
  palavra	
  Programação	
  como	
  Programacao.	
  	
  
Neste	
  caso	
  existe	
  um	
  erro	
  de	
  sintaxe.	
  
Semân&ca:	
  indica	
  a	
  associação	
  das	
  sentenças,	
  permi?ndo	
  a	
  sua	
  correcta	
  interpretação.	
  
Ex:	
  Belo	
  Angola	
  é	
  país	
  um.	
  	
  
Neste	
  caso,	
  em	
  termos	
  de	
  sintaxe	
  está	
  correcto	
  mas	
  não	
  se	
  consegue	
  interpretar	
  a	
  frase	
  
pois	
   os	
   termos	
   não	
   estão	
   enquadrados	
   apropriadamente.	
   Considera-­‐se	
   um	
   erro	
   de	
  
semân?ca.	
  
Com	
   base	
   nas	
   definições,	
   conclui-­‐se	
   que	
   a	
   sintaxe	
   expressa	
   as	
   regras	
   que	
   devem	
   ser	
  
obedecidas	
  para	
  a?ngir	
  determinado	
  resultado	
  e	
  a	
  semân?ca	
  representa	
  o	
  conteúdo	
  das	
  
palavras	
   da	
   linguagens,	
   permi?ndo	
   assim	
   uma	
   interpretação	
   correcta	
   do	
   escrito	
   com	
  
determinada	
  linguagem.	
  
Tipos	
  de	
  Dados	
  	
  
Para	
  que	
  o	
  computador	
  consiga	
  armazenar	
  ou	
  manipular	
  um	
  dado,	
  necessita	
  saber	
  o	
  seu	
  ?po.	
  
Sendo	
  assim,	
  um	
  ?po	
  de	
  dado	
  define	
  o	
  ?po	
  de	
  informação	
  que	
  entra	
  e	
  sai	
  do	
  computador.	
  Os	
  
?pos	
  de	
  dados	
  podem	
  ser:	
  inteiro,	
  real,	
  literal	
  ou	
  caracter,	
  booleano	
  
Tipo	
  de	
  dado	
  Inteiro:	
  envolve	
  o	
  conjunto	
  de	
  números	
  inteiros	
  posi?vos	
  e	
  nega?vos.	
  	
  
Ex:	
  -­‐1,	
  3,	
  10,	
  12,	
  -­‐50.	
  
Tipo	
   de	
   dado	
   Real:	
   envolve	
   o	
   conjunto	
   de	
   números	
   decimais	
   ou	
   fraccionários	
   posi?vos	
   e	
  
nega?vos.	
  Ex:	
  0.5,	
  -­‐1.3,	
  -­‐11.3,	
  12.4.	
  
Todo	
  o	
  ?po	
  de	
  dado	
  real	
  possui	
  envolvido	
  um	
  valor	
  inteiro;	
  ou	
  seja	
  os	
  inteiros	
  são	
  subconjuntos	
  
dos	
  números	
  reias.	
  	
  
Tipo	
   de	
   dado	
   Literal:	
   representa	
   uma	
   sequência	
   de	
   caracteres	
   com	
   letras,	
   dígitos,	
   ou	
   ainda	
  
símblos	
  especiais.	
  São	
  também	
  denominados	
  por	
  Strings(cadeia	
  de	
  caracteres)	
  Ex:	
  Nome	
  de	
  uma	
  
pessoa,	
  morada,	
  nº	
  do	
  B.I,	
  etc.	
  
Dentro	
  destes	
  existe	
  igualmente	
  o	
  ?po	
  Caractere	
  que	
  permite	
  armazenar	
  apenas	
  um	
  caractere	
  
(uma	
  letra,	
  um	
  símbolo,	
  ou	
  um	
  dígito).	
  Ex:	
  Sexo	
  (M,F)	
  
Tipo	
  Lógico	
  (Booleano):	
  é	
  representado	
  por	
  dois	
  valores	
  principais	
  (Verdadeiro	
  (V)	
  e	
  Falso	
  (F))	
  	
  	
  
CAP.	
  II	
  
Tipos	
  de	
  Dados	
  	
  
Quando	
  u?lizar	
  um	
  ou	
  outro	
  ?po	
  de	
  dado?	
  
Imagine	
  que	
  precisas	
  armazenar	
  os	
  dados	
  de	
  uma	
  pessoa:	
  Nome,	
  idade,	
  morada,	
  sexo,	
  altura,	
  e	
  
precisa	
  saber	
  se	
  esta	
  é	
  ou	
  não	
  casada?	
  
Sugestão:	
  
Nome	
  da	
  pessoa	
  -­‐>	
  Literal	
  	
  
Idade	
  -­‐>	
  Inteiro	
  
Morada	
  -­‐>	
  Literal	
  	
  
Sexo-­‐>	
  caractere	
  
Altura-­‐>	
  Real,	
  pois	
  possui	
  a	
  parte	
  inteira	
  e	
  faccionária.	
  Ex:	
  1,70	
  cm	
  
A	
  condição	
  de	
  ser	
  casado	
  ou	
  não	
  dará	
  sempre	
  em	
  V	
  ou	
  F;	
  então	
  u?lize	
  o	
  lógico	
  
CAP.	
  II	
  
Variáveis	
  
Uma	
   variável	
   corresponde	
   a	
   uma	
   posição	
   de	
   memória	
   por	
   onde	
   guardamos	
   os	
   dados,	
   cujo	
  
conteúdo	
  pode	
  mudar	
  ao	
  longo	
  da	
  execução	
  do	
  programa.	
  Toda	
  variável	
  tem	
  um	
  nome	
  que	
  é	
  
conhecido	
  como	
  iden&ficador.	
  
É	
   importante	
   saber	
   que	
   quando	
   ocorre	
   uma	
   alteração	
   do	
   valor	
   con?do	
   na	
   variável,	
   o	
   valor	
  
armazenado	
  anteriormente	
  é	
  perdido	
  na	
  mémória.	
  Isto	
  é,	
  supondo	
  que	
  tenho	
  o	
  nome	
  Sampaio	
  
armazenado	
   em	
   memória;	
   se	
   por	
   algum	
   mo?vo	
   eu	
   alterar	
   o	
   nome	
   Sampaio	
   para	
   Lufialuiso,	
   o	
  
nome	
  anterior	
  é	
  eliminado	
  da	
  memória	
  e	
  subs?tuido	
  pelo	
  novo.	
  
CAP.	
  II	
  
	
  	
  Necessidade	
  da	
  u&lização	
  de	
  variáveis	
  
Vamos	
  supor	
  que	
  queremos	
  fazer	
  um	
  programa	
  que	
  solicita	
  para	
  um	
  u?lizador	
  digitar	
  a	
  sua	
  
idade	
   e	
   exibe	
   a	
   este	
   quantos	
   anos	
   faltam	
   para	
   ele	
   a?ngir	
   100	
   anos	
   de	
   idade.	
   Precisaremos	
  
armazenar	
  a	
  idade	
  do	
  u?lizador	
  para	
  depois	
  realizar	
  o	
  cálculo	
  100	
  -­‐	
  idade_u?lizador	
  e	
  depois	
  
armazenar	
  também	
  o	
  resultado.	
  
Usando	
  a	
  ideologia	
  acima	
  que	
  a	
  variável	
  é	
  um	
  espaço	
  na	
  memória	
  em	
  que	
  armazenamos	
  os	
  
dados,	
   seria	
   necessário	
   dizer	
   o	
   endereço	
   que	
   o	
   mesmo	
   está	
   localizado.	
   Neste	
   contexto,	
   em	
  
programação	
  é	
  usado	
  o	
  conceito	
  de	
  variável	
  para	
  representar	
  o	
  apelido	
  do	
  endereço.	
  
Variáveis	
  
Regras	
  de	
  uso	
  e	
  declaração	
  de	
  variáveis	
  
	
  Toda	
  a	
  variável	
  deve	
  ser	
  declarada	
  antes	
  de	
  ser	
  usada	
  (inclui	
  o	
  seu	
  ?po	
  e	
  o	
  iden?ficador);	
  
	
  Toda	
  a	
  variável	
  deve	
  ter	
  sempre	
  um	
  ?po	
  de	
  dado	
  associado	
  	
  
	
  O	
  primeiro	
  caractere	
  deve	
  ser	
  uma	
  letra;	
  
	
  Uma	
  variável	
  deve	
  ter	
  sempre	
  um	
  valor	
  inicial	
  antes	
  de	
  ser	
  usada;	
  
	
  Nome	
  de	
  variáveis	
  escritas	
  com	
  letras	
  maiúsculas	
  serão	
  diferentes	
  de	
  letras	
  minúsculas	
  (case	
  
sensi?ve);	
  
 	
   Nenhuma	
   palavra	
   reservada	
   à	
   ferramenta	
   (COMPILADOR)	
   poderá	
   ser	
   usada	
   como	
   nome	
   da	
  
variável;	
  
	
  U?lize	
  nomes	
  representa?vos	
  para	
  dar	
  uma	
  visão	
  do	
  conteúdo	
  con?do	
  nela;	
  
	
  Se	
  haver	
  mais	
  de	
  um	
  caractere,	
  este	
  só	
  poderá	
  ser:	
  letra	
  ou	
  algarismo;	
  
	
  O	
  nome	
  de	
  uma	
  variável	
  não	
  deve	
  conter	
  caracteres	
  especiais,	
  com	
  excepção	
  do	
  underline	
  (_).	
  
CAP.	
  II	
  
• São exemplo de variáveis os seguintes: Nome, aluno1, nome_completo, a, b, idade
• Não representam identificadores válidos os seguintes: ~nome, 1aluno, nome?completo,
idade-pessoa, filhação
Variáveis	
  
Atribuição:	
  é	
  um	
  termo	
  u?lizado	
  para	
  atribuir	
  um	
  valor	
  a	
  uma	
  variável,	
  ou	
  seja	
  armazenar	
  um	
  
determinado	
  conteúdo	
  em	
  uma	
  variável.	
  
Esta	
  operação	
  é	
  representada	
  em	
  Pseudocódigo	
  por	
  uma	
  seta	
  apontando	
  para	
  a	
  esquerda,	
  onde	
  a	
  
direita	
  fica	
  o	
  valor	
  a	
  ser	
  atribuído	
  e	
  a	
  esquerda	
  a	
  variável	
  a	
  receber	
  o	
  valor.	
  
Ex:	
  variável	
  <-­‐	
  constante	
  
	
  	
  	
  	
  	
  	
  variável	
  <-­‐	
  variável	
  	
  
	
  	
  	
  	
  	
  	
  Variável	
  <-­‐	
  expressão	
  
Para	
  o	
  1ª	
  linha	
  lê-­‐se:	
  variável	
  recebe	
  constante	
  (idem	
  para	
  os	
  outros	
  subs?tuindo	
  o	
  que	
  está	
  a	
  ser	
  
atribuído).	
  	
  
CAP.	
  II	
  
•	
  São	
  exemplo	
  de	
  variáveis	
  os	
  seguintes:	
  Nome,	
  aluno1,	
  nome_completo,	
  a,	
  b,	
  idade	
  
• 	
   Não	
   representam	
   iden?ficadores	
   válidos	
   os	
   seguintes:	
   ~nome,	
   1aluno,	
   nome?completo,	
   idade-­‐
pessoa,	
  filhação	
  	
  
Regras	
  de	
  uso	
  e	
  declaração	
  de	
  variáveis	
  
Variáveis	
  
Regra	
  de	
  declaração	
  de	
  variável	
  
<nome_do_?po>	
  <nome_da_variavel>;	
  	
  <nome_da_variavel>	
  :<nome_do_?po>	
  
ou	
  	
  
<nome_do_?po>	
  <nome_da_variavel>,	
  ...	
  ,	
  <nome_da_variavel>;	
  
	
  <nome_da_variavel>,	
  ...	
  ,	
  <nome_da_variavel>:	
  <nome_do_?po>	
  
Ex:	
  inteiro	
  idade	
  -­‐>	
  inteiro	
  representa	
  o	
  ?po	
  de	
  dado	
  e	
  idade	
  representa	
  o	
  nome	
  da	
  variável	
  
	
  	
  	
  	
  Ano_nascimento	
  :	
  inteiro	
  -­‐>	
  Ano	
  nascimento	
  é	
  a	
  variável	
  e	
  o	
  inteiro	
  é	
  o	
  ?po	
  de	
  dado	
  
	
  	
  	
  	
  	
  	
  	
  real	
  peso	
  -­‐>	
  real	
  representa	
  o	
  ?po	
  de	
  dado	
  e	
  peso	
  representa	
  o	
  nome	
  da	
  variável	
  
O	
   modo	
   de	
   declaração	
   de	
   variável	
   pode	
   variar	
   de	
   acordo	
   com	
   a	
   linguagem	
   de	
   programação	
   a	
   ser	
  
u?lizada	
  ou	
  o	
  compilador	
  em	
  causa.	
  Para	
  algoritmos,	
  usando	
  o	
  compilador	
  VISUAL	
  G,	
  a	
  declaração	
  é	
  
feita	
  da	
  seguinte	
  maneira:	
  idade:	
  inteiro	
  
Isto	
  quer	
  dizer,	
  que	
  a	
  SINTAXE	
  (Regra	
  de	
  escrita)	
  do	
  compilador	
  define	
  a	
  declaração	
  de	
  variável	
  deste	
  
modo.	
  
CAP.	
  II	
  
Variáveis	
  
Exercício	
  
Faça	
  um	
  algoritmo	
  que	
  recebe	
  três	
  notas	
  de	
  um	
  aluno	
  e	
  calcula	
  a	
  média	
  das	
  notas.	
  
Solução	
  
1-­‐	
  Compreenda	
  o	
  problema	
  e	
  elabore	
  a	
  estratégia	
  de	
  resolução	
  
Questão:	
  O	
  que	
  o	
  problema	
  pede?	
  	
  
Preciso	
  de	
  alguma	
  variável	
  para	
  resolver	
  este	
  problema;	
  se	
  sim,	
  que	
  ?po	
  de	
  dado	
  vou	
  armazenar	
  
nestas	
  variáveis?	
  
O	
  resultado	
  de	
  que	
  ?po	
  será?	
  
De	
  que	
  modo	
  vou	
  representar	
  o	
  algoritmo?	
  Fluxograma	
  ou	
  Pseudocódigo?	
  
2-­‐	
  Execute	
  a	
  estratégia.	
  
CAP.	
  II	
  
Variáveis	
  
	
  	
  	
  Solução	
  do	
  exercício	
  u?lizando	
  pseudocódigo:	
  
	
   algoritmo	
  “media_de_tres_notas”	
  
	
   Var	
  
	
   nota1,	
  nota2,	
  nota3:	
  real	
  
	
   media	
  :	
  real	
  
	
   Inicio	
  
	
   escreva	
  (“Digite	
  as	
  tres	
  notas	
  do	
  aluno”)	
  
	
   leia	
  (nota1)	
  
	
   leia	
  (nota2)	
  
	
   leia	
  (nota3)	
  
	
   media<-­‐(nota1+nota2+nota3)/3	
  
	
   escreva	
  (“A	
  média	
  do	
  aluno	
  corresponde	
  a	
  	
  ”,	
  media)	
  	
  
	
   fimalgoritmo	
  
CAP.	
  II	
  
Constantes	
  
Uma	
  constante	
  é	
  um	
  valor	
  fixo	
  que	
  não	
  é	
  alterado	
  durante	
  o	
  tempo	
  ou	
  durante	
  a	
  execução	
  do	
  
algoritmo.	
  
Ex1:	
  5,	
  2.4,	
  “OLA”,	
  V.	
  
Nota:	
  A	
  constante	
  V	
  con?da	
  no	
  exemplo	
  é	
  do	
  ?po	
  lógico.	
  
Ex2:	
  escreva(“estás	
  a	
  aprender”)	
  -­‐>	
  o	
  frase	
  con?da	
  no	
  parênteses	
  determina	
  uma	
  constante.	
  
	
  Para	
  diferenciar	
  os	
  dados	
  constantes	
  do	
  ?po	
  Caractere	
  dos	
  outros	
  ?pos	
  de	
  dados,	
  usa-­‐se	
  aspas	
  	
  	
  	
  
(“	
  ”)	
  para	
  delimitá-­‐los;	
  e	
  os	
  dados	
  do	
  ?po	
  lógico	
  u?lizam	
  as	
  constantes	
  V	
  -­‐>	
  Verdadeiro	
  e	
  F	
  -­‐>	
  
Falso.	
  
	
  Possuem	
  um	
  nome	
  único	
  para	
  a	
  sua	
  iden?ficação	
  (iden?ficador)	
  	
  
	
  Recomenda-­‐se	
  o	
  uso	
  de	
  nomes	
  suges?vos.	
  Ex:	
  pi=3.1415	
  ,	
  sexo=“feminino”	
  
	
  As	
  regras	
  para	
  a	
  declaração	
  de	
  constantes	
  são	
  as	
  mesmas	
  usadas	
  para	
  as	
  variáveis	
  
CAP.	
  II	
  
Constantes	
  
Declaração	
  de	
  constantes	
  
Sintaxe:	
  
const	
  <nome_da_constante>	
  =	
  valor	
  
Const	
  –	
  é	
  uma	
  palavra	
  reservada,	
  usada	
  sempre	
  que	
  declarar	
  uma	
  constante.	
  
nome_da_constante	
  –	
  iden?ficador	
  da	
  constante	
  
Valor	
  –	
  valor	
  fixo	
  atribuído	
  a	
  constante.	
  
Ex:	
  const	
  pi=3,1415	
  
	
   	
  	
  	
  	
  	
  	
  	
  morada=“Sambizanga”	
  
CAP.	
  II	
  
Operadores	
  e	
  Expressões	
  aritmé&cas	
  
CAP.	
  II	
  
São	
  denominados	
  operadores	
  aritmé?cos	
  os	
  seguintes	
  elementos:	
  	
  
OPERADOR	
   DENOMINAÇÃO	
   PRIORIDADE	
  DE	
  EXECUÇÃO	
  	
  
(os	
  com	
  maior	
  prioridade	
  são	
  os	
  
primeiros	
  a	
  serem	
  executados)	
  
+	
   Adição	
   1	
  
-­‐	
   Subtracção	
   1	
  
*	
   Mul?plicação	
   2	
  
/	
   Divisão	
   2	
  
DIV	
   Divisão	
  inteira	
   2	
  
MOD	
  ou	
  %	
   Resto	
  da	
  divisão	
  inteira	
   2	
  
**	
  ou	
  ^	
   Potenciação	
   3	
  
As	
  expressões	
  aritmé?cas	
  são	
  expressões	
  cujos	
  operadores	
  são	
  aritmé?cos	
  e	
  os	
  operandos	
  são	
  
variáveis	
  ou	
  constantes	
  do	
  ?po	
  inteiro	
  ou	
  real.	
  
Ex:	
  3+3/2	
  ,	
  	
  X+Y,	
  	
  2*K	
  
Nota:	
  Caso	
  a	
  prioridade	
  for	
  igual,	
  a	
  expressão	
  aritmé?ca	
  é	
  resolvida	
  da	
  esquerda	
  para	
  a	
  direita.	
  	
  
Operadores	
  lógicos	
  e	
  relacionais	
  
CAP.	
  II	
  
São	
  denominados	
  operadores	
  lógicos	
  os	
  seguintes	
  elementos:	
  	
  
Operador	
   Tipo	
   PRIORIDADE	
  DE	
  EXECUÇÃO	
  	
  
(os	
  com	
  maior	
  prioridade	
  são	
  os	
  
primeiros	
  a	
  serem	
  executados)	
  
OU	
   Binário	
   1	
  
E	
   Binário	
   2	
  
NÃO	
   Unário	
   3	
  
As	
  expressões	
  lógicas	
  são	
  cons?tuídas	
  por	
  operadores	
  lógicos	
  e	
  variáveis	
  ou	
  constantes	
  do	
  
?po	
  lógico	
  originando	
  resultados	
  do	
  ?po	
  verdadeiro	
  ou	
  falso.	
  
Nota:	
  	
  
	
  U?lizando	
  os	
  operadores	
  lógicos	
  é	
  necessário	
  saber	
  que:	
  uma	
  expressão	
  A	
  E	
  B	
  só	
  será	
  
verdadeira	
  se	
  A	
  for	
  Verdadeira	
  e	
  B	
  for	
  Verdadeira.	
  Caso	
  contrário	
  será	
  falsa	
  
	
  Uma	
  expressão	
  A	
  OU	
  B	
  será	
  verdadeira	
  caso	
  pelo	
  menos	
  uma	
  delas	
  (A	
  OU	
  B)	
  forem	
  
verdadeiras.	
  
Operadores	
  Relacionais	
  
CAP.	
  II	
  
São	
  denominados	
  operadores	
  os	
  seguintes	
  elementos:	
  	
  
O	
   Resultado	
   ob?do	
   numa	
   relação	
   é	
   sempre	
   um	
   valor	
   lógico	
   (	
   V	
   ou	
   F).	
   Ex:	
   A+B=C,	
   é	
   uma	
  
expressão	
  que	
  será	
  verdadeira	
  ou	
  falsa	
  a	
  medida	
  em	
  que	
  o	
  resultado	
  da	
  expressão	
  aritmé?ca	
  
for	
  igual	
  ao	
  conteúdo	
  de	
  C.	
  	
  
Operador	
   Função	
  
=	
   Igual	
  
>	
   Maior	
  que	
  
<	
   Menor	
  que	
  
>=	
   Maior	
  ou	
  igual	
  
<=	
   Menor	
  ou	
  igual	
  
<	
  >	
   Diferente	
  de	
  
CAPÍTULO	
  III	
  
Estruturas	
  de	
  Selecção	
  
Ano	
  Lec?vo	
  2013	
  
Estrutura	
  de	
  Selecção	
  (Condicional)	
  
A	
   estrutura	
   de	
   selecção	
   permite	
   a	
   execução	
   de	
   instruções	
   caso	
   determinadas	
   condições,	
  
representadas	
   por	
   expressões	
   lógicas	
   ou	
   relacionais,	
   são	
   ou	
   não	
   verdadeiras.	
   Existem	
   as	
  
seguintes	
  estruturas	
  de	
  selecção:	
  
	
  Estrutura	
  de	
  Selecção	
  Simples	
  
	
  Estrutura	
  de	
  Selecção	
  Composta	
  
	
  Estrutura	
  de	
  Selecção	
  encadeada	
  
	
  Escolha	
  múl?pla	
  
Estrutura	
  de	
  Selecção	
  Simples:	
  É	
  u?lizada	
  quando	
  necessitamos	
  executar	
  uma	
  ou	
  várias	
  ins-­‐	
  
truções	
  caso	
  uma	
  condição	
  seja	
  sa?sfeita.	
  Esta	
  estrutura	
  não	
  executa	
  nada	
  caso	
  a	
  condição	
  
seja	
  falsa.	
  	
  	
  	
  
Sintaxe:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   	
   	
  Se	
  <condição>	
  entao	
  
	
   	
   	
   	
   Instrução	
  
	
   	
   	
  	
   	
   fimse;	
  	
  
SIM	
  
NÃO	
  
Representação	
  gráfica	
  de	
  uma	
  estrutura	
  condicional	
  (Fluxograma):	
  	
  	
  
CAP.	
  III	
  
Estrutura	
  de	
  Selecção	
  
CAP.	
  III	
  
Ex:	
   Faça	
   um	
   algoritmo	
   que	
   verifica	
   se	
   um	
   dado	
   número	
   é	
   par?	
   Resolva	
   u?lizando	
  
Fluxograma	
  e	
  Pseudocódigo.	
  
Solução	
  usando	
  Fluxograma:	
  
Estrutura	
  de	
  Selecção	
  
CAP.	
  III	
  
Ex:	
   Faça	
   um	
   algoritmo	
   que	
   verifica	
   se	
   um	
   dado	
   número	
   é	
   par?	
   Resolva	
   u?lizando	
  
Fluxograma	
  e	
  Pseudocódigo.	
  
Solução	
  usando	
  Pseudocodigo:	
  
algoritmo	
  "numero	
  par”	
  
var	
  
n:inteiro	
  
Inicio	
  
escreva("Insira	
  um	
  numero")	
  
leia	
  (n)	
  
se	
  (n	
  mod	
  2=0)	
  entao	
  
escreva	
  (n,"	
  é	
  par	
  ")	
  
fimse	
  
fimalgoritmo	
  
Estrutura	
  de	
  Selecção	
  
CAP.	
  III	
  
Estrutura	
  de	
  Selecção	
  Composta:	
  permite	
  a	
  execução	
  de	
  duas	
  alterna?vas	
  a	
  par?r	
  de	
  uma	
  
única	
  condição;	
  isto	
  é	
  suponha	
  que	
  um	
  conjunto	
  de	
  acções	
  dependa	
  da	
  avaliação	
  verdadeira	
  
e	
   apenas	
   uma	
   dependa	
   de	
   uma	
   falsa?	
   Usando	
   o	
   ?po	
   de	
   selecção	
   Simples	
   estudada	
  
anteriormente,	
  isto	
  não	
  é	
  possível.	
  Mas	
  vejamos	
  como	
  a	
  composta	
  funciona:	
  
Sintaxe:	
  
	
  	
   	
   se	
  <condição>	
  entao	
  
	
   	
   	
   <sequência	
  de	
  instruções>	
  
	
   	
   senão	
  
	
   	
   	
   <instruções>	
  
	
   	
   	
   fimse;	
  
Estrutura	
  de	
  Selecção	
  
CAP.	
  III	
  
Ex:	
  Crie	
  um	
  algoritmo	
  que	
  dado	
  a	
  idade	
  de	
  um	
  indivíduo,	
  determina	
  se	
  o	
  mesmo	
  é	
  Jovem	
  ou	
  
não.	
  Admite	
  que	
  o	
  indivíduo	
  é	
  Jovem	
  caso	
  a	
  sua	
  idade	
  es?ver	
  entre	
  os	
  18	
  e	
  40	
  Anos.	
  
Solução	
  em	
  pseudocódigo	
  	
  	
  	
  
algoritmo	
  "teste	
  se	
  é	
  jovem"	
  
var	
  
idade:inteiro	
  
	
  	
  	
  	
  	
  inicio	
  
	
  	
  	
  	
  	
  escreva("Digite	
  a	
  Idade	
  do	
  indivíduo")	
  
	
  	
  	
  	
  	
  leia(idade)	
  
	
  	
  	
  	
  	
  	
   se	
  ((idade>=18)E	
  (idade<=40))	
  entao	
  
	
  	
  	
  	
  	
  escreva("Este	
  individuo	
  é	
  Jovem")	
  
	
  	
  	
  	
  	
  senao	
  
	
  	
  	
  	
  	
  escreva("O	
  individuo	
  não	
  Jovem.	
  Poderá	
  ser	
  um	
  Adolescente	
  ou	
  Idoso")	
  
	
  	
  	
  	
  	
  fimse	
  
	
   fimalgoritmo	
  
Estrutura	
  de	
  Selecção	
  
Estrutura	
   de	
   Selecção	
   Encadeada:	
   representa	
   o	
   agrupamento	
   de	
   várias	
   selecções.	
  
Normalmente,	
  é	
  usada	
  quando	
  uma	
  determinada	
  ação	
  ou	
  bloco	
  deve	
  ser	
  executado	
  caso	
  
um	
  grande	
  conjunto	
  de	
  possibilidades	
  forem	
  sa?sfeitas.	
  
Sintaxe:	
  
	
  	
   	
   se	
  <condição>	
  entao	
  
	
   	
   	
   se	
  <condição>	
  entao	
  
	
   	
   	
   	
   <conjunto	
  de	
  instruções>	
  
	
   	
   	
   fimse;	
  
	
   	
   senao	
  
	
   	
   	
   <instrução>	
  
	
   	
   fimse;	
  
CAP.	
  III	
  
Estrutura	
  de	
  Selecção	
  
Ex:	
  Crie	
  um	
  algoritmo	
  em	
  que	
  dado	
  dois	
  números	
  inteiros,	
  verifique	
  se	
  os	
  dois	
  são	
  pares.	
  
Caso	
  forem,	
  adicione	
  2	
  ao	
  maior.	
  Caso	
  forem	
  ímpares	
  some	
  os	
  dois	
  números	
  e	
  imprima	
  os	
  
resultados.	
  Solucione	
  u?lizando	
  pseudocódigo	
  
Solução	
  	
  	
  
CAP.	
  III	
  
algoritmo	
  "dois_pares”	
  
var	
  
n1:inteiro	
  
n2:inteiro	
  
inicio	
  
escreva("Insira	
  o	
  primeiro	
  numero")	
  
leia	
  (n1)	
  
escreva("Insira	
  o	
  segundo	
  numero")	
  
leia	
  (n2)	
  
se	
  ((n1	
  mod	
  2=0)	
  e	
  (n2	
  mod	
  2=0))	
  entao	
  
se	
  (n1>n2)	
  entao	
  
n1<-­‐n1+2	
  
escreva	
  ("O	
  primeiro	
  número	
  é	
  par	
  e	
  resulta	
  em	
  ",	
  n1)	
  
senao	
  
n2<-­‐n2+2	
  
	
  	
  	
  	
  escreva	
  ("O	
  segundo	
  número	
  é	
  par	
  e	
  resulta	
  em	
  ",	
  n2)	
  
fimse	
  
senao	
  
escreva	
  ("Condição	
  para	
  impares	
  e	
  a	
  soma	
  é	
  ",	
  n1+n2)	
  
fimse	
  
fimalgoritmo	
  
Estrutura	
  de	
  Selecção	
  
Selecção	
   de	
   múl&pla	
   escolha:	
   é	
   u?lizada	
   quando	
   necessitamos	
   testar	
   um	
   conjunto	
   de	
  
valores,	
  e	
  quando	
  acções	
  diferentes	
  são	
  associadas	
  a	
  esses	
  valores.	
  
Imagine	
  que	
  ?véssemos	
  mais	
  do	
  que	
  cinco	
  (5)	
  condições	
  para	
  serem	
  testadas	
  para	
  executar	
  
determinadas	
  acções;	
  poderia-­‐mos	
  u?lizar	
  várias	
  selecções	
  encadeadas.	
  Mas	
  não	
  é	
  prá?co.	
  	
  
Sintaxe:	
  
	
  	
   	
   escolha	
  (expressão)	
  
	
   	
   	
   caso	
  <hipótese	
  1>:	
  	
  	
  <instrução1>	
  
	
   	
   	
   caso	
  <hipótese	
  2>:	
  	
  	
  <instrução2>	
  
	
   	
   	
   caso	
  <hipótese	
  3>:	
  	
  	
  <instrução3>	
  
	
   	
   	
   caso	
  contrário	
  :	
  <instrução	
  n>	
  
	
   	
   fimescolha	
  	
  	
  	
  
CAP.	
  III	
  
Estrutura	
  de	
  Selecção	
  
Questões	
  a	
  levar	
  em	
  conta	
  na	
  Selecção	
  de	
  múl&pla	
  escolha:	
  
	
  A	
  expressão	
  é	
  avaliada,	
  e	
  o	
  valor	
  será	
  comparado	
  com	
  cada	
  uma	
  das	
  hipóteses.	
  
	
  A	
  opção	
  caso	
  contrário	
  (outrocaso	
  em	
  outros	
  compiladores)	
  é	
  opcional	
  
	
  A	
  hipótese	
  referida	
  na	
  sintaxe	
  é	
  definida	
  como	
  uma	
  constante	
  caractere,	
  uma	
  constante	
  
numérica,	
  e	
  em	
  alguns	
  casos	
  literais	
  
	
  Esta	
  estrutura,	
  é	
  amplamente	
  u?lizada	
  em	
  algoritmos	
  com	
  menus	
  (P.e:	
  Calculadora)	
  
Exemplo:	
  Crie	
  um	
  algoritmo	
  que	
  simule	
  a	
  execução	
  de	
  uma	
  máquina	
  calculadora.	
  	
  	
  	
  	
  	
  
CAP.	
  III	
  
algoritmo	
  ”calculadora”	
  
a,b:inteiro	
  
soma,subtraccao,	
  mul&plicacao:inteiro	
  
divisao:real	
  
op:caractere	
  
inicio	
  
escreva	
  ("Digite	
  o	
  primeiro	
  numero")	
  
leia(a)	
  
escreva	
  ("Digite	
  o	
  segundo	
  numero")	
  
leia(b)	
  
escreval	
  ("Digite	
  a	
  operação	
  que	
  deseja:	
  +	
  (soma)	
  -­‐	
  (subtraccao)	
  *	
  (Mul&plicacao)	
  /	
  (Divisao)")	
  
leia(op)	
  
escolha	
  (op)	
  
	
  caso	
  "+"	
  
	
  soma<-­‐a+b	
  
	
  escreva	
  (soma)	
  
caso	
  "-­‐"	
  
subtraccao<-­‐a-­‐b	
  
escreva	
  (subtraccao)	
  
caso	
  "*"	
  
mul&plicacao<-­‐	
  a*b	
  
escreva	
  (mul&plicacao)	
  
caso	
  "/"	
  
divisao<-­‐a/b	
  
escreva	
  (divisao)	
  
outrocaso	
  
escreva	
  ("Operacao	
  inexistente")	
  
fimescolha	
  
fimalgoritmo	
  
CAP.	
  III	
  
CAPÍTULO	
  IV	
  
Estruturas	
  de	
  Repe?ção	
  
Ano	
  Lec?vo	
  2013	
  
Estruturas	
  de	
  Repe&ção	
  
São	
  estruturas	
  que	
  permitem	
  a	
  execução	
  repe?da	
  de	
  um	
  certo	
  trecho	
  do	
  programa	
  por	
  um	
  
determinado	
   número	
   de	
   vezes	
   ou	
   ainda	
   enquanto	
   uma	
   certa	
   condição	
   mantém-­‐se	
  
verdadeira.	
  Existem	
  três	
  principais	
  ?pos	
  de	
  estruturas	
  de	
  repe?ção:	
  
	
  enquanto	
  	
  
	
  repita	
  
	
  para	
  
As	
  estruturas	
  de	
  repe?ção	
  diferem-­‐se	
  pelo	
  seu	
  modo	
  de	
  funcionamento,	
  algumas	
  precisam	
  
que	
  uma	
  certa	
  condição	
  seja	
  verdadeira	
  para	
  que	
  execute	
  o	
  loop	
  (laço	
  de	
  repe?ção),	
  outras	
  
dependem	
  do	
  valor	
  	
  de	
  uma	
  variável	
  de	
  controlo	
  para	
  que	
  execute	
  as	
  instruções.	
  
Imagine	
  que	
  deseja	
  mostrar	
  a	
  tabuada	
  de	
  um	
  número	
  inteiro	
  qualquer.	
  Até	
  o	
  momento,	
  com	
  
o	
  que	
  foi	
  aprendido,	
  o	
  ideal	
  seria	
  mul?plicar	
  o	
  número	
  dado	
  com	
  cada	
  número	
  no	
  intervalo	
  
de	
  1	
  à	
  n.	
  Isto	
  quer	
  dizer	
  que	
  teríamos	
  n	
  mul?plicações,	
  o	
  que	
  não	
  seria	
  viável.	
  
Sendo	
  assim,	
  aplica-­‐se	
  o	
  conceito	
  sobre	
  laços	
  de	
  repe?ção	
  para	
  resolver	
  casos	
  similares.	
  	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Enquanto:	
  é	
  uma	
  estrutura	
  que	
  efectua	
  um	
  teste	
  condicional	
  no	
  início	
  do	
  laço	
  e	
  a	
  execução	
  
do	
   bloco	
   de	
   acções	
   ou	
   da	
   acção	
   necessita	
   que	
   a	
   condição	
   seja	
   verdadeira.	
   Quando	
   a	
  
condição	
  for	
  falsa,	
  as	
  instruções	
  não	
  são	
  executadas	
  nenhuma	
  vez.	
  
Sintaxe	
  (Pseudocódigo):	
  	
   	
   	
   	
   	
   	
   Representação	
  Fluxograma:	
  	
  	
  
enquanto	
  (condição)	
  faca	
  
/*	
  instruções	
  a	
  serem	
  executadas	
  
	
  enquanto	
  a	
  condição	
  for	
  verdadeira*/	
  
fimenquanto	
  	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Modo	
  de	
  funcionamento:	
  
1. Na	
  estrutura	
  enquanto,	
  o	
  teste	
  lógico	
  permite	
  controlar	
  o	
  número	
  de	
  repe?ções	
  a	
  serem	
  
realizadas	
  pelo	
  laço.	
  	
  
2. Ao	
   executarmos	
   o	
   algoritmo,	
   caso	
   o	
   resultado	
   do	
   teste	
   lógico	
   for	
   verdadeiro,	
   as	
  
instruções	
   dentro	
   do	
   laço	
   serão	
   realizadas;	
   quando	
   o	
   algoritmo	
   encontra	
   o	
  
“fimenquanto”	
   (ou	
   a	
   bolinha	
   do	
   fluxograma)	
   ele	
   retorna	
   para	
   o	
   teste	
   lógico	
   afim	
   de	
  
avaliá-­‐lo	
  novamente	
  para	
  saber	
  se	
  deve	
  repe?r	
  mais	
  uma	
  vez.	
  
3. 	
  Se	
  o	
  teste	
  der	
  verdadeiro,	
  os	
  comandos	
  do	
  laço	
  são	
  novamente	
  executados,	
  mas	
  se	
  der	
  
falso	
  o	
  algoritmo	
  sai	
  do	
  laço	
  e	
  segue	
  a	
  sua	
  execução	
  realizando	
  o	
  próximo	
  comando	
  que	
  
es?ver	
  após	
  o	
  “fimenquanto”.	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Contadores	
  e	
  Somadores:	
  
Em	
  laços	
  de	
  repe?ção,	
  necessitamos	
  de	
  contadores	
  para	
  contar	
  o	
  número	
  de	
  repe?ções	
  a	
  
serem	
   efectuadas,	
   e	
   de	
   somadores	
   para	
   acumular	
   os	
   valores	
   de	
   entrada	
   em	
   uma	
   única	
  
variável.	
  
Imagine	
  que	
  deseja	
  mostrar	
  a	
  soma	
  dos	
  10	
  primeiros	
  números	
  naturais.	
  Como	
  vamos	
  saber	
  
o	
   número	
   de	
   vezes	
   já	
   repe?das?	
   A	
   resposta	
   é	
   u?lizando	
   uma	
   variável	
   contadora	
   que	
  
receberá	
  um	
  valor	
  inicial	
  (geralmente	
  zero)	
  e	
  em	
  cada	
  repe?ção	
  é	
  incrementada	
  em	
  uma	
  
unidade	
  através	
  de	
  uma	
  atribuição	
  (Ex:	
  a<-­‐a+1).	
  
Usando	
   esta	
   analogia,	
   podemos	
   dizer	
   que	
   incremento:	
   é	
   a	
   acção	
   de	
   acrescentar	
   uma	
  
unidade	
  ao	
  valor	
  de	
  uma	
  variável;	
  e	
  decremento	
  é	
  a	
  acção	
  contrária.	
  E	
  como	
  obter	
  o	
  total	
  da	
  
soma	
  dos	
  números?	
  Neste	
  caso	
  temos	
  de	
  u?lizar	
  um	
  acumulador	
  para	
  que	
  em	
  cada	
  laço,	
  
acumule	
  numa	
  variável	
  os	
  valores	
  que	
  serão	
  fornecidos(neste	
  caso	
  1+2+3+.....10).	
  	
  	
  	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Ex:	
  Crie	
  um	
  algoritmo	
  que	
  soma	
  a	
  quan?dade	
  de	
  números	
  pares	
  de	
  1	
  à	
  20.	
  	
  
Solução:	
  
	
   Algoritmo	
  	
  "soma_pares"	
  
	
   var	
  
	
   soma:inteiro	
  
	
   cont:inteiro	
  
	
   inicio	
  
	
   	
   cont	
  <-­‐	
  1	
  
	
   	
   soma<-­‐	
  0	
  
	
   	
   enquanto	
  (cont<=20)	
  faca	
  
	
   	
   	
   se	
  (cont	
  mod	
  2	
  =	
  0)	
  entao	
  
	
   	
   	
   soma<-­‐	
  soma+cont	
  
	
   	
   	
   fimse	
  
	
   	
   	
   cont<-­‐	
  cont+1	
  
	
   	
   fimenquanto	
  
	
   	
   escreva	
  ("A	
  soma	
  total	
  é	
  ",	
  soma)	
  
	
   	
   	
   fimalgoritmo	
  
CAP.	
  IV	
  
CAP.	
  IV	
  
cont	
  <-­	
  cont+1	
  
soma:inteiro	
  
cont:inteiro	
  
início	
  
cont<-­1
soma<-­0	
  
Cont<=20	
  
Cont	
  mod	
  2	
  =	
  0	
  
soma	
  <-­	
  soma+cont	
  
7im	
  
F	
  
V
V
F	
  
Estruturas	
  de	
  Repe&ção	
  
Repita:	
  é	
  uma	
  estrutura	
  que	
  efectua	
  um	
  teste	
  condicional	
  no	
  final	
  do	
  laço.	
  Deste	
  modo,	
  o	
  
bloco	
  de	
  instruções	
  do	
  laço	
  serão	
  executados	
  no	
  mínimo	
  uma	
  vez,	
  até	
  que	
  uma	
  determinada	
  
condição	
  seja	
  verdadeira;	
  isto	
  quer	
  dizer	
  que	
  ela	
  executa	
  enquanto	
  for	
  falsa.	
  	
  
Sintaxe	
  (Pseudocódigo):	
  	
   	
   	
   	
   	
   	
   Representação	
  Fluxograma:	
  	
  	
  
repita	
  	
  
/*	
  instruções	
  a	
  serem	
  executadas	
  
	
  enquanto	
  a	
  condição	
  for	
  falsa*/	
  
até	
  (condição)	
  	
  	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Para:	
  é	
  uma	
  estrutura	
  que	
  repete	
  um	
  conjunto	
  de	
  operações	
  por	
  um	
  determinado	
  número	
  
de	
  vezes	
  previamente	
  definido.	
  Esta	
  estrutura	
  não	
  prevê	
  uma	
  condição	
  tal	
  como	
  as	
  outras,	
  
pois	
  possui	
  limites	
  fixos	
  (inicio	
  e	
  final).	
  	
  	
  
Sintaxe	
  (Pseudocódigo):	
  	
   	
   	
   	
   	
   	
   Representação	
  Fluxograma:	
  	
  	
  
para	
  V	
  de	
  vi	
  até	
  vf	
  passo	
  p	
  faca	
  	
  
/*	
  instruções	
  a	
  serem	
  executadas	
  
	
  enquanto	
  a	
  condição	
  for	
  verdadeira*/	
  
fimpara	
  
Ou	
  ainda	
  
para	
  V	
  de	
  vi	
  até	
  vf	
  	
  faca	
  	
  	
  
/*	
  instruções	
  a	
  serem	
  executadas	
  
	
  enquanto	
  a	
  condição	
  for	
  verdadeira*/	
  
fimpara	
  
CAP.	
  IV	
  
Estruturas	
  de	
  Repe&ção	
  
Onde:	
  
V	
  -­‐	
  é	
  a	
  variável	
  de	
  controlo	
  
vi	
  –	
  é	
  o	
  valor	
  inicial	
  da	
  variável	
  V	
  
vf	
  –	
  é	
  o	
  valor	
  final	
  da	
  variável	
  V	
  
p	
  –	
  é	
  o	
  valor	
  do	
  incremento	
  à	
  variável	
  V	
  
Nota:	
  tudo	
  o	
  que	
  es?ver	
  o	
  faça	
  e	
  o	
  fimpara	
  será	
  caracterizado	
  como	
  o	
  que	
  deve	
  ser	
  feito	
  
para	
  cada	
  ocorrência.	
  
CAP.	
  IV	
  
CAPÍTULO	
  V	
  
Estruturas	
  de	
  Dados	
  
Ano	
  Lec?vo	
  2013	
  
Estruturas	
  de	
  Dados	
  
Definição:	
  
As	
  estruturas	
  de	
  dados,	
  definem	
  a	
  forma	
  como	
  os	
  dados	
  estão	
  organizados	
  e	
  armazenados	
  
na	
  memória	
  do	
  computador,	
  por	
  forma	
  a	
  facilitar	
  o	
  seu	
  acesso	
  e	
  manipulação.	
  
Até	
  aqui,	
  estudamos	
  que	
  numa	
  variável	
  só	
  é	
  possível	
  armazenar	
  um	
  valor;	
  ou	
  seja,	
  caso	
  ?ver	
  
um	
  valor	
  	
  armazenado	
  numa	
  variável,	
  e	
  desejar	
  armazenar	
  outro	
  valor	
  na	
  mesma	
  variável,	
  o	
  
que	
  poderá	
  acontecer	
  será	
  a	
  subs?tuição	
  do	
  an?go	
  pelo	
  novo.	
  	
  
Quando	
  precisamos	
  armazenar	
  um	
  conjunto	
  de	
  valores	
  são	
  u?lizadas	
  variáveis	
  compostas	
  
que	
   podem	
   ser:	
   Homogêneas	
   e	
   Heterogêneas;	
   as	
   variáveis	
   compostas	
   Homogêneas	
  
agregam	
   um	
   conjunto	
   de	
   dados	
   do	
   mesmo	
   ?po	
   e	
   as	
   variáveis	
   compostas	
   Heterogêneas,	
  
agregam	
  um	
  conjunto	
  de	
  dados	
  de	
  ?pos	
  diferentes.	
  
Nesta	
   primeira	
   secção,	
   estudaremos	
   as	
   variáveis	
   compostas	
   Homogêneas,	
   que	
   envolvem	
  
Vectores	
  e	
  Matrizes,	
  também	
  conhecidas	
  como	
  Arrays.	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Suponhamos	
  que	
  nos	
  é	
  proposto	
  o	
  seguinte	
  problema:	
  
Crie	
  um	
  algoritmo	
  que	
  solicita	
  o	
  nome	
  de	
  10	
  estudantes	
  e	
  as	
  suas	
  respec?vas	
  notas,	
  calcula	
  
as	
  suas	
  médias	
  e	
  imprime	
  o	
  nome	
  de	
  cada	
  um	
  e	
  a	
  média	
  do	
  final	
  do	
  semestre.	
  
Possível	
  solução:	
  
	
   	
   Algoritmo	
  “dados	
  escolares	
  de	
  10	
  alunos”	
  
	
   	
   var	
  
	
  	
   	
   nome1,	
  nome2,....nome10:literal	
  
	
   	
   media1,	
  media2,	
  media3,.....media10:real	
  
	
   	
   inicio	
  
	
  	
   	
   leia(nome1)	
  
	
   	
   leia(nome2)	
  
	
   	
   ......	
  
	
   	
   leia(nome10)	
  
	
   	
   ..........	
  
	
   	
   	
   fimalgoritmo	
  	
  	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
U?lizando	
   a	
   solução	
   apresentada	
   anteriormente,	
   seria	
   bastante	
   trabalhoso	
   solucionar	
   o	
  
problema	
  proposto;	
  o	
  mais	
  fácil	
  seria	
  u?lizar	
  o	
  conceito	
  de	
  vectores.	
  
Definição:	
  
Vector	
  representa	
  um	
  conjunto	
  de	
  variáveis	
  	
  capazes	
  de	
  armazenar	
  valores	
  do	
  mesmo	
  ?po	
  
(literal,	
  inteiro,	
  real,	
  etc).	
  Um	
  vector	
  é	
  visto	
  como	
  uma	
  caixa	
  com	
  vários	
  compar?mentos	
  
onde	
  podemos	
  guardar	
  documentos;	
  para	
  o	
  nosso	
  caso	
  específico	
  é	
  considerado	
  como	
  uma	
  
variável	
  onde	
  podemos	
  armazenar	
  mais	
  de	
  um	
  dado.	
  
Caracterís&cas	
  de	
  um	
  Vector	
  
	
  Possui	
  um	
  nome	
  (iden?ficador)	
  
	
  Possui	
  um	
  índice	
  (posição)	
  
	
  U?liza	
  colchetes	
  (dois	
  parênteses	
  rectos	
  )	
  para	
  representar	
  as	
  posições	
  do	
  vector	
  
	
  Armazena	
  apenas	
  dados	
  do	
  mesmo	
  ?po	
  (qualquer	
  ?po	
  de	
  dado)	
  
	
  Elementos	
  individuais	
  são	
  acessados	
  por	
  meio	
  da	
  sua	
  posição	
  	
  	
  	
  	
  	
  	
  	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Sintaxe	
  para	
  declaração	
  de	
  um	
  vector	
  
<nome	
  do	
  vector>:	
  vetor	
  [Li..Lf]	
  de	
  <&po	
  de	
  dado>	
  
Ex:	
  nome:	
  vetor	
  [0..4]	
  de	
  literal	
  
Representação	
  gráfica	
  de	
  um	
  Vector	
  
A	
  figura	
  acima	
  representa	
  um	
  vector	
  de	
  cinco	
  (5)	
  posições	
  com	
  valores	
  do	
  ?po	
  literal.	
  
Imagine	
  que	
  o	
  nome	
  da	
  variável	
  do	
  ?po	
  vector	
  seja	
  nome	
  tal	
  como	
  na	
  figura	
  acima:	
  
Significa	
  o	
  seguinte:	
  nome[0]	
  =	
  “Maria”,	
  nome[1]=“Valdino”,	
  ...	
  ,	
  nome[4]=“Sandra”	
  
CAP.	
  V	
  
Maria	
   Valdino	
   Sónia	
  	
   Eliana	
   Sandra	
  
[0]	
   [1]	
   [2]	
   [3]	
   [4]	
  
nome	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
OPERAÇÕES	
  COM	
  VECTORES	
  
	
  Não	
  é	
  possível	
  manipular	
  directamente	
  todos	
  os	
  elementos	
  do	
  vector;	
  apenas	
  um	
  de	
  cada	
  
vez.	
  
	
  O	
  acesso	
  individual	
  a	
  cada	
  componente	
  do	
  vector	
  é	
  realizado	
  pela	
  especificação	
  do	
  nome	
  e	
  
a	
  posição	
  do	
  mesmo	
  por	
  meio	
  de	
  índices.	
  
 	
   O	
   índice	
   não	
   representa	
   o	
   valor	
   con?do	
   no	
   vector;	
   mas	
   sim	
   a	
   posição	
   em	
   que	
   um	
  
determinado	
  valor	
  está	
  armazenado	
  no	
  vector.	
  
ATRIBUIÇÃO	
  DE	
  VALORES	
  
Ex:	
  Nome[2]	
  <-­‐	
  “Joaquim”	
  ,	
  quer	
  dizer	
  que	
  é	
  atribuído	
  a	
  constante	
  Joaquim	
  do	
  ?po	
  literal	
  
para	
  a	
  segunda	
  posição	
  do	
  vector	
  Nome.	
  
idade[10]	
  <-­‐	
  50,	
  quer	
  dizer	
  que	
  é	
  atribuído	
  o	
  valor	
  50	
  para	
  a	
  décima	
  posição	
  do	
  vector	
  idade	
  	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Nota:	
  É	
  necessário	
  levar	
  em	
  conta	
  que	
  o	
  valor	
  a	
  ser	
  atribuído	
  pode	
  ser	
  uma	
  constante,	
  uma	
  
variável	
  ou	
  uma	
  expressão.	
  
LEITURA	
  DE	
  VECTORES	
  
A	
  leitura	
  dos	
  elementos	
  do	
  vector	
  é	
  feita	
  passo	
  a	
  passo;	
  ou	
  seja	
  um	
  elemento	
  de	
  cada	
  vez,	
  
considerando	
  o	
  nome	
  do	
  vector	
  e	
  a	
  posição	
  correspondente.	
  Neste	
  caso	
  é:	
  
Sintaxe	
  
leia	
  (<lista	
  de	
  variáveis>).	
  Ex:	
  leia	
  (escola	
  [3])	
  
ESCRITA	
  DE	
  VECTORES	
  
Os	
  passos	
  são	
  os	
  mesmos	
  em	
  comparação	
  aos	
  referidos	
  acima.	
  Sendo	
  assim	
  teremos:	
  
Sintaxe	
  	
  
	
  escreva	
  (<lista	
  de	
  variáveis>).	
  Ex:	
  escreva	
  (escola	
  [3])	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Para	
  a	
  manipulação	
  dos	
  vectores,	
  quer	
  para	
  a	
  leitura	
  como	
  para	
  a	
  escrita	
  de	
  valores	
  nele	
  
con?dos,	
  ou	
  qualquer	
  operação	
  a	
  ser	
  efectuada	
  são	
  u?lizadas	
  estruturas	
  repe?ção.	
  
Suponha	
   que	
   deseja	
   armazenar	
   em	
   um	
   vector	
   N,	
   5	
   valores	
   do	
   ?po	
   inteiro	
   e	
   imprimir	
   os	
  
mesmos	
  valores.	
  Considerando	
  uma	
  leitura	
  e	
  escrita	
  normal	
  sem	
  estruturas	
  de	
  repe?ção,	
  
teríamos	
  o	
  seguinte:	
  
CAP.	
  V	
  
leia	
  (N[0],	
  N[1],N[2],N[3],N[4])	
  
escreval(N[0])	
  
escreval(N[1])	
  
escreval(N[2])	
  
escreval(N[3])	
  
escreval(N[4])	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Para	
   solucionar	
   esta	
   situação,	
   u?lizamos	
   estruturas	
   de	
   repe?ção	
   (enquanto	
   ...	
   faca,	
  
repita...até	
  e	
  para	
  de...	
  até)	
  então	
  teremos:	
  	
  
CAP.	
  V	
  
algoritmo	
  "vector	
  de	
  5	
  elementos”	
  
Var	
  
N:vetor	
  [0..4]	
  de	
  inteiro	
  
	
  i:inteiro	
  
Inicio	
  
para	
  i	
  de	
  0	
  ate	
  4	
  faca	
  
leia	
  (N[i])	
  
fimpara	
  
para	
  i	
  de	
  0	
  ate	
  4	
  faca	
  
escreval(N[i])	
  
fimpara	
  
fimalgoritmo	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
Exemplos:	
  	
  
1. Crie	
   um	
   algoritmo	
   que	
   dado	
   10	
   números	
   aleatórios,	
   imprima	
   os	
   mesmos	
   na	
   ordem	
  
inversa	
  em	
  que	
  foram	
  inseridos.	
  Ex:	
  2,3,4,6	
  resultará	
  em:	
  6,4,3,2	
  
2. Escreva	
   um	
   algoritmo	
   que	
   soma	
   todos	
   elementos	
   con?dos	
   no	
   vector	
   e	
   imprima	
   o	
  
resultado	
  da	
  soma.	
  
3. Faça	
  um	
  algoritmo	
  que	
  lê	
  uma	
  sequência	
  infinita	
  de	
  números	
  e	
  termina	
  apenas	
  quando	
  
digitar	
  o	
  número	
  zero	
  (0)	
  	
  	
  
CAP.	
  V	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
1.	
  Solução	
  
CAP.	
  V	
  
algoritmo	
  "vector	
  de	
  10	
  elementos"	
  
var	
  
	
  	
  	
  	
  N:vetor	
  [0..9]	
  de	
  inteiro	
  
	
  	
  	
  	
  i:inteiro	
  
inicio	
  
	
  	
  	
  	
  	
  i<-­‐0	
  
escreva("Digite	
  10	
  números")	
  
enquanto	
  (i<=9)	
  faca	
  
leia	
  (N[i])	
  
i<-­‐i+1	
  
fimenquanto	
  
escreval("O	
  inverso	
  dos	
  valores	
  inseridos	
  é:	
  ")	
  
enquanto	
  (i>0)	
  faca	
  
i<-­‐i-­‐1	
  
escreval(N[i])	
  
fimenquanto	
  
fimalgoritmo	
  
Variáveis	
  compostas	
  homogêneas	
  unidimensional	
  
(vectores)	
  	
  
2.	
  Solução	
  
CAP.	
  V	
  
algoritmo	
  "soma	
  de	
  10	
  elementos"	
  
var	
  
	
  	
  	
  	
  N:vetor	
  [0..9]	
  de	
  inteiro	
  
	
  	
  	
  	
  soma:inteiro	
  
	
  	
  	
  	
  i:inteiro	
  
inicio	
  
	
  	
  	
  	
  	
  i<-­‐0	
  
	
  	
  	
  	
  	
  soma<-­‐0	
  
escreva("Digite	
  10	
  números")	
  
enquanto	
  (i<=9)	
  faca	
  
leia	
  (N[i])	
  
i<-­‐i+1	
  
fimenquanto	
  
para	
  i	
  de	
  0	
  ate	
  9	
  faca	
  
soma<-­‐soma+N[i]	
  
fimpara	
  
escreval("O	
  somatório	
  dos	
  valores	
  inseridos	
  é:	
  ",soma)	
  
fimalgoritmo	
  

Mais conteúdo relacionado

Semelhante a Computação Científica: Algoritmos e Estruturas de Dados

Noções de Processamento de Dados.pptx
Noções de Processamento de Dados.pptxNoções de Processamento de Dados.pptx
Noções de Processamento de Dados.pptxSamara Santos
 
PowerPoint
PowerPointPowerPoint
PowerPointana.vaz
 
Introdução a Informatica Basica
Introdução a Informatica BasicaIntrodução a Informatica Basica
Introdução a Informatica BasicaPedro Kangombe
 
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora nonoano_terceira
 
Apostila introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626
Apostila  introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626Apostila  introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626
Apostila introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626Sandra Dória
 
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES IORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Ipaulocoob
 
Ici 7 ano capitulo 1 - pc
Ici 7 ano   capitulo 1 - pcIci 7 ano   capitulo 1 - pc
Ici 7 ano capitulo 1 - pcSusana Cascais
 
Introdução à Informática
Introdução à InformáticaIntrodução à Informática
Introdução à Informáticasilvaniav
 
Apresentação TIC - Unidade 1 Introdução aos Computadores
Apresentação TIC - Unidade 1 Introdução aos ComputadoresApresentação TIC - Unidade 1 Introdução aos Computadores
Apresentação TIC - Unidade 1 Introdução aos Computadoreshenriquecorreiosapo
 
INFORMÁTICA I - MECANICA.pptx
INFORMÁTICA I - MECANICA.pptxINFORMÁTICA I - MECANICA.pptx
INFORMÁTICA I - MECANICA.pptxJohnCapaloTJ
 
Informatica basica e tecnologias na educacao unidade 01
Informatica basica e tecnologias na educacao   unidade 01Informatica basica e tecnologias na educacao   unidade 01
Informatica basica e tecnologias na educacao unidade 01Alelis Gomes
 
Resumos para Concursos - v.34 - Informática (2014)
Resumos para Concursos - v.34 - Informática (2014)Resumos para Concursos - v.34 - Informática (2014)
Resumos para Concursos - v.34 - Informática (2014)Editora Juspodivm
 

Semelhante a Computação Científica: Algoritmos e Estruturas de Dados (20)

Noções de Processamento de Dados.pptx
Noções de Processamento de Dados.pptxNoções de Processamento de Dados.pptx
Noções de Processamento de Dados.pptx
 
Abel Pires e Pedro Jesus
Abel Pires e Pedro JesusAbel Pires e Pedro Jesus
Abel Pires e Pedro Jesus
 
PowerPoint
PowerPointPowerPoint
PowerPoint
 
Introdução a Informatica Basica
Introdução a Informatica BasicaIntrodução a Informatica Basica
Introdução a Informatica Basica
 
Introdução a computação
Introdução a computaçãoIntrodução a computação
Introdução a computação
 
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora
Aulas de tic- fichas 1, 2 ,3, 4 . laura e joana nora
 
Apostila introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626
Apostila  introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626Apostila  introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626
Apostila introduaao_a_internet_e_inclusao_digital_witer_calc_1346740626
 
T.i.c.9.º
T.i.c.9.ºT.i.c.9.º
T.i.c.9.º
 
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES IORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
 
Introducao a informatica
Introducao a informaticaIntroducao a informatica
Introducao a informatica
 
Ici 7 ano capitulo 1 - pc
Ici 7 ano   capitulo 1 - pcIci 7 ano   capitulo 1 - pc
Ici 7 ano capitulo 1 - pc
 
Exercicio 1
Exercicio 1Exercicio 1
Exercicio 1
 
Introdução à Informática
Introdução à InformáticaIntrodução à Informática
Introdução à Informática
 
Apresentação TIC - Unidade 1 Introdução aos Computadores
Apresentação TIC - Unidade 1 Introdução aos ComputadoresApresentação TIC - Unidade 1 Introdução aos Computadores
Apresentação TIC - Unidade 1 Introdução aos Computadores
 
power point
power pointpower point
power point
 
INFORMÁTICA I - MECANICA.pptx
INFORMÁTICA I - MECANICA.pptxINFORMÁTICA I - MECANICA.pptx
INFORMÁTICA I - MECANICA.pptx
 
Informatica basica e tecnologias na educacao unidade 01
Informatica basica e tecnologias na educacao   unidade 01Informatica basica e tecnologias na educacao   unidade 01
Informatica basica e tecnologias na educacao unidade 01
 
IP_Notas01.ppt
IP_Notas01.pptIP_Notas01.ppt
IP_Notas01.ppt
 
IP_Notas01.ppt
IP_Notas01.pptIP_Notas01.ppt
IP_Notas01.ppt
 
Resumos para Concursos - v.34 - Informática (2014)
Resumos para Concursos - v.34 - Informática (2014)Resumos para Concursos - v.34 - Informática (2014)
Resumos para Concursos - v.34 - Informática (2014)
 

Último

apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaWilliamCruz402522
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp txrafaelacushman21
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 

Último (7)

apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aula
 
Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp tx
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 

Computação Científica: Algoritmos e Estruturas de Dados

  • 1. Computação  Cien.fica   1º  Ano  /  1º  Semestre   Prof.  Lufialuiso  Sampaio  Velho         Ano  Lec?vo  2013  
  • 2. Objec&vos    A  disciplina  de  Computação  Cien.fica  consiste  em:   •        Permi?r  o  desenvolvimento  do  raciocínio  lógico   •   Aprender   as   técnicas   de   resolução   de   problemas   por   meio   de   algoritmos   •   U?lizar   os   conhecimentos   adquiridos   durante   as   aulas   para   desenvolver  programas  de  computadores.             Avaliação    Os  estudantes  serão  avaliados  nas  componentes  prá?cas  e  teóricas:   •  Avaliações  con.nuas   •  Prova  parcelares   •  Exame  final  escrito     •  Projecto  em  grupo  de  duas  (2)  pessoas  
  • 3. Metodologia   •    As  aulas  são  ministradas  de  forma  Teórica  /  Prá?ca,  com  algumas   imagens  ilustra?vas  relacionadas  ao  contexto  da  aula.   •    Assuntos  de  interesse  geral  deverão  ser  tratados  na  sala  de  aula.   •   Em   questão   de   dúvidas,   poderão   u?lizar   o   endereço   electrônico:   ccisptec@gmail.com  
  • 4. Programa  da  Disciplina   1.        Conceitos  sobre  a    informá?ca   • Definição  e  surgimento  da  Informá?ca   • Computador:   definição,   funcionamento,   gerações   de   computadores,   esquema  de  um  computador,  arquitectura,  classificação  dos  computadores   2.      Algoritmo   • Conceito  de  Algoritmo   • Técnicas  de  Resolução  de  problemas   • Formas  de  representação  dos  Algoritmos   • Tipos  de  Dados   • Variáveis   3.      Expressões   • Operadores  Aritmé?cos   • Expressões  Aritmé?cas   • Precedências  gerais  dos  operadores  aritmé?cos  
  • 5. Programa  da  Disciplina   3.      Expressões  (cont)   • Operadores  Lógicos   • Expressões  Lógicas     • Operadores  Relacionais   • Estrutura  Condicional   4.    Estruturas  de  Repe?ção   • Definição  e  ?pos  existentes   • Importância  das  Estruturas  de  Repe?ção  na  construção  de  um  Algoritmo   5.    Estrutura  de  Dados   • Variáveis   compostas   homogêneas   Unidimensional   e   Mul?dimensional (Definição,  declaração  e  manipulação)   6.   Projecto  Final  da  Disciplina   Nota:   Cada   capítulo   será   acompanhado   por   um   conjunto   de   Exercícios   a   serem   resolvidos  na  sala  de  aula  e/ou  Tarefa  para  Casa      
  • 6. Bibliografia   Barbosa,  Lisbete  Madsen.  Ensino  de  Algoritmos  em  cursos  de  Computação.  Educ.  2001   Boente,  Alfredo.  Construindo  Algoritmos  Computacionais:  Lógica  de  Programação.  Rio  de   Janeiro:  Basport,  2003   CORMEN,  Thomas  H  (et  al.).  Algoritmos:  Teoria  e  Prá?ca.  Rio  de  Janeiro:  Ed.  Campus,  2002   FARBELLONE,  André  Luiz  Villar,;  ERBERSPACHER,  Henri  Freederico.  Lógica  de  Programação:     A  construção  de  Algoritmo  e  Estrutura  de  Dados.  São  Paulo,  Editora  Pearson  Fren?ce  Hall,   2005   SOUZA,  Marco  António  Furlan  de.  Algoritmos  e  Lógica  de  Programação.  São  Paulo:   Thomson,  2005  
  • 7. CAP.  I:  Conceitos  sobre  a  Informá&ca   O   Termo   informá?ca   foi   criado   pelo   cien?sta   francês   Philips   Dreyfus   em   1962,   como   sendo   o   resultado  dos  termos:  Informação  +  Automá?ca   Informá?ca  é  definida  como  a  ciência  que  estuda  o   tratamento  automá?co  da  Informação  tendo  como   suporte  o  computador.   Informação:   define   o   conjunto   de   dados   bem   estruturados   que   geram   o   conhecimento   de   um   determinado  assunto  ou  temá?ca.   Ex:  Conjunto  de  dados  do  B.I  de  um  indivíduo   Automá?ca:  define  a  forma  de  como  a  informação   é  manipulada.  
  • 8. CAP.  I:  Conceitos  sobre  a  Informá&ca   Dados  consiste  em:   •    Factos  ob?dos  a  par?r  de  uma  observação,  levantamento  ou  ocorrência.   Ex:  temperatura,  nome,  idade.       Caracterís?cas  da  Informação   •  Intangibilidade  (não  possui  existência  nsica)   •  U&lidade  (deve  corresponder  aos  objec?vos  a  a?ngir)   •  Codificação  (Para  receber  a  informação,  o  receptor  deve  conhecer  o  código  em  que  foi   transmi?da)   •  Tempo  (a  informação  pode  variar  dependendo  do  tempo)    
  • 9. CAP.  I:  Conceitos  sobre  a  Informá&ca   Computador:   é   designado   ao   conjunto   de   disposi?vos   electrônicos   capazes   de   receber   dados,     processá-­‐los   de   forma  automá?ca  e  fornecer  resultados.   COMPUTADOR  =  HARDWARE  +  SOFTWARE   Hardware:  define  a  parte  nsica  de  um  computador.     Ex:  Monitor,  teclado,  mouse,  etc.   Sosware:  Define  a  parte  lógica  de  um  computador.     Ex:  Sistema  opera?vo,  programas  aplica?vos,  etc.   Funções  principais:   •  Receber  dados   •  Processar  dados   •  Armazenar  dados   •  Mostrar  resultado  
  • 10. CAP.  I:  Conceitos  sobre  a  Informá&ca   Os   soswares   são   dis?nguidos   em   Sosware   de   Sistema   e   Sosware  de  Aplicação.   Sosware  de  Sistema:  é  o  elo  de  ligação  entre  o  homem  e  o   computador.  Isto  é,  todo  o  programa  que  permite  dar  vida   ao  computador.  Ex:  Sistema  Opera?vo.     Sosware   de   Aplicação:   é   todo   o   programa   que   facilita   a   realização   das   nossas   tarefas.   Ex:   Office,   programas   de   jogos,  Autocad,  windows  media  player,  etc.   Para   podermos   u?lizar   os   soswares   de   aplicação,   é   necessário   a   existência   de   um   sistema   opera?vo   instalado   no  computador.  Caso  contrário,  consis?rá  em  uma  simples   máquina  que  não  sa?sfaz  as  nossas  necessidades.     Sistema  Opera?vo:  é  todo  o  programa  que  efectua  a  gestão   de  todas  as  tarefas  a  serem  executadas  no  computador  bem   como  a  gestão  de  recursos  (drive  de  CD,  Impressora,  etc).   São   exemplos   de   sistemas   opera?vos:   Windows   Vista,   Windows   8,   Mac   OS   x   ,   Linux   (Ubuntu,   Xubuntu,   Fedora),   etc.  
  • 11. CAP.  I:  Conceitos  sobre  a  Informá&ca       Arquitectura  do  Computador   Define   a   estrutura   de   um   computador,   bem   como   a   interação   entre   os   elementos   que   o   cons?tuem  para  obter  o  resultado  desejado.   A  Arquitectura  a  ser  estudada  é  denominada  Arquitectura  de  Von  Neumann.  É  representada   pelos  periféricos  de  Entrada,  Saída,  Memórias  e  a  Unidade  Central  de  Processamento.   Ver  a  figura  abaixo:   Fig.1  –  Arquitectura  de  Von  Neumann  
  • 12. CAP.  I:  Conceitos  sobre  a  Informá&ca       Arquitectura  do  Computador   Periférico  de  Entrada:  é  todo  o  disposi?vo  que  permite  a  inserção  de  dados  no  computador.  Ex:   Teclado,  leitor  de  código  de  barras,  rato,  Scanner,  etc.   Periférico  de  Saída:  é  todo  o  disposi?vo  que  permite  a  visualização  da  informação  após  o  seu   processamento.   Periférico  de  E/S:  permitem  a  comunicação  entre  o  homem  e  o  computador  ou  vice-­‐versa.  Ex:   Pendrives,  disco  rígido,  drive  de  CD,  drive  de  disquete,  etc.   CPU  (Unidade  Central  de  Processamento):     É  considerado  como  o  cérebro  do  computador,  pois  é  nela  em  que  os  dados  são  manipulados  e   os  cálculos  são  feitos.  É  cons?tuída  por  dois  (2)  componentes  principais:  Unidade  de  Controlo   (UC)  e  a  Unidade  Aritmé?ca  e  Lógica  (ULA).    A  unidade  de  Controlo,  carrega  as  instruções  na  Memória  principal,  interpreta  e  executa  e  a   ULA  é  responsável  pela  execução  de  cálculos  aritmé?cos  e  Lógicos.     Memória:  são  disposi?vos  capazes  de  armazenar  dados  e/ou  instruções.      
  • 13. CAP.  I:  Conceitos  sobre  a  Informá&ca       Funcionamento   Primeiramente   quando   ligamos   o   computador,   é   carregado   o   sosware   de   inicialização   (Boot),  que  verifica  o  estado  de  cada  hardware  e  se  está  pronto  para  ser  usado.  A  seguir,  é   carregado  o  sistema  opera?vo  junto  com  outros  os  programas  que  entram  em  execução  logo   que  o  computador  é  ligado.   É  necessário  ter  em  conta  que  toda  a  informação  que  circula  no  computador  não  é  passada   com  a  nossa  linguagem  (natural),  mas  sim  um  conjunto  de  códigos  binários  denominados   bits  (menor  unidade  de  representação  da  informação  no  computador).  Quando  digitamos   uma  letra  apar?r  do  teclado,  na  verdade  esta  letra  passa  por  uma  conversão  e  só  assim  é   que  ela  é  manipulada.   Após   o   envio   de   um   comando   (qualquer   acção   feita   pelo   disposi?vo   de   entrada),   o   processador   interpreta   este   comando   (responsabilidade   da   U.C),   e   carrega   as   instruções   con?das   na   memória   primária   para   a   sua   execução.   Caso   seja   necessário   efectuar   algum   cálculo  lógico  ou  aritmé?co,  a  U.C  trata  de  encaminhar  para  a  ULA  para  serem  executados.   Só  após  toda  a  operação  de  processamento  dos  dados  e  execução  de  instruções  é  que  são   a?vados  os  sinais  de  saída  para  podemos  obter  o  resultado  desejado.  
  • 14. CAP.  I:  Conceitos  sobre  a  Informá&ca       Gerações  de  Computadores   Tudo   começou   com   a   necessidade   do   ser   humano   efectuar   cálculos,   sendo   que   a   contagem   com   os   dedos,  pedras  e  paus    tornaram-­‐se  insuficiente  para   a?ngir  os  melhores  êxitos  nas  suas  ac?vidades.   Foi  a  par?r  desta  fase  que  surgiu  o  Ábaco  inventado   pelos  Chineses  a  aproximadamente  1.000  a.c  (placa   de  madeira  com  arames  e  pequenas  pedrinhas  que   podiam   ser   movidas)   para   auxiliar   nas   operações   aritmé?cas.  Esta  placa  era  fortemente  u?lizado  por   Egípcios  e  Babilônios.   Já  em  1612,  foi  desenvolvida  a  primeira  calculadora   portá?l   por   John   Napier   que   se   chamou   Ossos   de   Napier   que   eram   cons?tuidos   por   um   conjunto   de   bastões  para  realizar  as  mul?plicações  por  meio  de   adições.     Fig.2  –  Ábaco   Fig.3  –  Ossos  de  Napier  
  • 15. CAP.  I:  Conceitos  sobre  a  Informá&ca       Gerações  de  Computadores   Em  1642,  o  matemá?co  Blaise  Pascal  criou  uma  máquina   calculadora   mecânica   que   efectuava   as   operações   de   adição  e  subtração  denominada  Pascaline,  com  o  intuito   de   ajudar   nos   negócios   do   seu   pai.   Para   o   caso   das   mul?plicações  e  divisões,  efectuava  somas  e  subtrações   sucessivas.   Em  1801  na  França,  Joseph  Jacquard  criou  uma  máquina   de   tear   que   usava   cartões   perfurados   onde   con?nha   a   configuração   dos   modelos   de   tecidos   a   serem   produzidos,   com   intuito   de   subs?tuir   o   trabalho   humano.     Fig.1.4  –  Somador  Pascaline   Fig.  1.5  –  Tear  de  Jacquard  
  • 16. CAP.  I:  Conceitos  sobre  a  Informá&ca       Gerações  de  Computadores   Já   em   1822,   Charles   Babbage   começa   a   projectar   uma   máquina  a  vapor  programável  denominada  máquina  de   diferenças  que  efectuava  apenas  adições;  após  10  anos,   Babbage   pensou   em   criar   uma   máquina   que   pudesse   realizar   qualquer   ?po   de   cálculo   tendo   como   principio   básico   a   programação,   foi   denominada   como   máquina   analí?ca.   Esta   máquina   seria   alimentada   por   cartões,   usando     o   conceito   de   cartões   perfurados   de   Jacquard   mas   para   armazenar  instruções  e  dados.  Ela  não  foi  concluída  por   descrédito   dos   seus   financiadores,   mas   a   sua   colaboradora  Ada  King  (Ada  Lovelace)  propôs  programas   e   ainda   técnicas   de   programação   para   a   referida   máquina.   Ada   Lovelace   tornou-­‐se   a   primeira   programadora   do   mundo  e  Charles  Babbage  como  o  pai  da  Computação.   Fig.  1.6  –  Máquina  de  diferenças  de  Babbage  
  • 17. CAP.  I:  Conceitos  sobre  a  Informá&ca       Gerações  de  Computadores   Em   1890,   o   norte   americano   Hermann   Hollerith   projectou   um   tabulador   electromecânico,   que   processava  automa?camente  os  cartões  perfurados  que   era   um   instrumento   essencial   para   entrada   de   dados;   originando  assim  o  nome  de  processamento  de  dados.         Cartões   perfurados:   cartão   de   papel   perfurado   em   código   BCD   (Binary   Coded   Decimal),   era   usado   para   recolha  de  dados  no  censo  de  1890  nos  EUA.               Fig.  1.7  –  Tabulador  de  Hollerith   Fig.  1.8  –  Cartões  perfurados  de  Hollerith  
  • 18. CAP.  I:  Conceitos  sobre  a  Informá&ca       1ª  Geração  de  Computadores   Z1  de  Konrad  Zuse  projectado  em  1936  a  par?r  de  relés,  executavam  os  cálculos  e  dados  lidos  em   fitas  perfuradas.  Tornou-­‐se  assim  no  primeiro  computador  electro-­‐mecânico.       Em  1944  Howard  Aiken  concebeu  o  computador  eletromecânico  Harvard  Mark  1,  que  funcionava   sem   o   conceito   de   programa   armazenado   ou   seja   para   que   o   programa   fosse   executado,   era   necessário  carregá-­‐lo  a  par?r  de  uma  fita  perfurada  e  as  instruções  eram  executadas  durante  a   leitura  da  fita.   Em   1946   é   apresentado   o   ENIAC   (Electronic   Numeric   Integrator   and   Calculator   )   cujo   o   desenvolvimento  foi  liderado  por  John  Mauchly  e  J.  Presper  Eckert,  era  cons?tuído  por  18  mil   válvulas,  pesava  30  toneladas,  possuía  uma  memória  pequena  e  os  programas  eram  configurados   por  cabos.   John   Von   Neumann   juntou-­‐se   a   equipa   do   ENIAC   após   ter   proposto   o   conceito   de   programa   armazenado,   ou   seja   as   instruções   e   os   dados   deviam   ser   armazenados   segundo   uma   única   representação  este  conceito  foi  denominado  por  Arquitectura  de  Von  Neumann  e  implementado   no  computador  EDVAC  (Electronic  Discrete  Variable  Computer)            
  • 19. CAP.  I:  Conceitos  sobre  a  Informá&ca       COMPUTADORES  DA  1ª  GERAÇÃO  (1940  -­‐  1955)     Construídos  a  base  de  Válvulas  electrônicas     Aplicações  nos  campos  cien.fico  e  militar     Linguagem  Máquina     Uso  restrito     Cartões  perfurados  e  fitas  de  papel  como  memória     Grande  consumo  de  energia     Elevado  peso  e  processamento  na  ordem  dos  milissegundos     Grandes  problemas  de  aquecimento     Necessidade  de  reprogramação  para  cada  tarefa  a  executar         Fig.  1.9  –  ENIAC   Fig.  1.8  –  MARK  1   Fig.  1.10  –  Válvula  electrônica  
  • 20. CAP.  I:  Conceitos  sobre  a  Informá&ca       2ª  Geração  de  Computadores   Com  o  surgimento  do  transistor  em  1947,  reduziu  significa?vamente  as  dificuldades  apresentadas   pelas   válvulas   electrônicas.   A   velocidade   de   processamento   passou   a   ser   medida   em   microssegundos,  e  surgiram  as  linguagens  de  programação  de  alto  nível  como  a  FORTRAN  e  o   COBOL.   Primeiro   computador   transistorizado   foi   o   TX-­‐0,   construido   no   Massachuse~s   Ins?tute   of   Tecnology  em  1957.  Posteriormente  a  IBM  criou  o  primeiro  modelo  comercial  denominado  IBM   1401,  mais  barato  e  bastante  rápido.    Em  1964  a  CDC  (Control  Data  Corpora?ion)  criou  um  Supercomputador  denominado  CDC  –  6600   que   permi?a   descarregar   o   processamento   da   CPU   pelo   uso   de   pequenos   computadores   auxiliares  que  tratavam  da  entrada  e  saída  de  dados,  bem  como  o  gerenciamento  de  tarefas  de   forma  paralela.        
  • 21. CAP.  I:  Conceitos  sobre  a  Informá&ca       COMPUTADORES  DA  2ª  GERAÇÃO  (1955  -­‐  1963)     Subs?tuição  de  válvulas  pelo  transistor     Ocupavam  menos  espaço  e  consome  menos  energia     Construção  de  computadores  mais  baratos,  mais  potentes   e  mais  fiáveis     Uso  do  conceito  sobre  memória  auxiliar  (fitas  magné?cas   e  discos  magné?cos)     Uso  das  linguagens  de  programação  de  Alto  nível  (Cobol  e   Fortran)      Velocidade   de   processamento   na   ordem   dos   Microssegundos   Fig.  1.10  –  TRANSISTOR  
  • 22. CAP.  I:  Conceitos  sobre  a  Informá&ca       3ª  Geração  de  Computadores   A  principal  caracterís?ca  desta  geração  é  o  uso  dos  Circuitos  Integrados  criado  em  1958  por   Robert  Noyce.     O  Circuito  Integrado  é  cons?tuído  por  dezenas  de  Transistores,  que  executam  desde  funções   lógicas  simples  até  as  funções  mais  complexas.   Reduziu   bastante   o   espaço,   baixou   o   consumo   de   energia,   e   reduziu   a   velocidade   de   processamento  para  nanossegundos.   •IBM  360  é  um  exemplo  de  computadores  desta  geração.   COMPUTADORES  DA  3ª  GERAÇÃO  (1963  -­‐  1970)     Subs?tuição  dos  transistores  por  Circuitos  integrados     Velocidade  de  Processamento  em  nanossegundos       Generalização  das  linguagens  de  alto-­‐nível     Sistemas  opera?vos  mul?-­‐u?lizadores     Invenção  do  Mouse  (rato  em  1963  por  Douglas  Engelbart)   Fig.  1.10  –  CIRCUITO  INTEGRADO  
  • 23. CAP.  I:  Conceitos  sobre  a  Informá&ca       COMPUTADORES  DA  4ª  GERAÇÃO  (1971  -­‐  1990)   Esta   geração   é   marcada   pelos   microprocessadores.   Um   Microprocessador   consiste   em   um   disposi?vo   electrônico   encapsulado   em   um   chip   que   possui   internamente   uma   Unidade   de   controlo,  uma  unidade  lógico-­‐aritmé?ca  e  uma  memória  interna.   Primeiro   Microprocessador   que   surgiu   foi   o   Intel   4004   desenvolvido   para   uma   empresa   de   calculadoras.  Já  em  1981,  a  IBM  decidiu  inves?r  em  microprocessadores  lançando  assim  o  IBM  –PC   baseado  no  processador  Intel  8088  com  16  KB  de  memória  RAM.   CARACTERÍSTICAS     Computadores  com  Chips  VLSI  (Aperfeiçoamento  dos  Circuitos  Integrados)     Miniaturização  de  componentes     Velocidade  de  Processamento  em  picossegundos     Baixa  de  preços  
  • 24. CAP.  I:  Conceitos  sobre  a  Informá&ca       COMPUTADORES  DA  5ª  GERAÇÃO  (1991  –  até  hoje)   A  5ª  Geração  de  Computadores  é  marcada  pela  u?lização  dos  Circuitos  Integrados  em  grande   escala  de  Integração.  Isto  implica  a  integração  de  elevados  circuitos  electrônicos  na  ordem   dos  100.000  à  1.000.000  de  transistores.   Os  computadores  que  u?lizamos  hoje  ainda  podemos  enquadrá-­‐los  na  5ª  geração.         CARACTERÍSTICAS     Aumento  da  capacidade  de  processamento  de  dados,  armazenamento  e  transferência     Miniaturização  de  componentes     Processamento  paralelo  (várias  operações  a  serem  executadas  ao  mesmo  tempo)     Baixa  de  preços  
  • 25. CAP.  I:  Conceitos  sobre  a  Informá&ca       CLASSIFICAÇÃO  DOS  COMPUTADORES   Os   computadores   podem   ser   classificados   quanto   a   sua   função   que  exercem  ou  pelas  suas  dimensões  (porte).   Quanto  as  suas  funções:   Servidores:   são   computadores   que   servem   as   redes   de   computadores.   Disponibilizam   inúmeros   serviços,   como   por   exemplo:  internet,  base  de  dados,  ficheiros,  impressoras,  etc.   Consola   de   vídeo   games:   prove   ao   u?lizador   um   ambiente   de   entretenimento  (jogos).   Sistemas   Embarcados:   são   disposi?vos   que   incorporam   um   computador  no  seu  interior  para  realizar  uma  tarefa  específica.   Ex:  Computadores  de  bordo  de  um  automóvel     Quanto  ao  porte:   Grande  porte:  supercomputadores  e  mainframes.   Supercomputadores,   são   bastante   rápidos,   potentes   capazes   de   processar   informações   na   ordem   dos   Bilhões   de   instruções   por   segundo.   Mainframes,   processam   grandes   quan?dades   de   informação,   sendo   bastante   usados   pelos   bancos,   companhias   de   seguro   e   aéreas,  na  internet,  etc.   Fig.  1.11  –  Mainframe  
  • 26. CAP.  I:  Conceitos  sobre  a  Informá&ca       CLASSIFICAÇÃO  DOS  COMPUTADORES   Médio   Porte:   Denominadas   estações   de   trabalho,   correspondem   aos   computadores   com   grande   capacidade   de   processamento,   e   em   alguns   casos   permitem  o  ambiente  mul?  u?lizador.   Os  também  denominados  mini  computadores,   são  menores  que  os  mainframes,  e  maiores  em     relação  aos  computadores  pessoais.   Onde  são  u&lizados?   Hoje  em  dia,  os  minicomputadores  são  geral-­‐   mente  u?lizados  como  servidores  nas  redes  de   Computadores.     Fig.  1.12  –  Worksa&ons  
  • 27. CAP.  I:  Conceitos  sobre  a  Informá&ca       CLASSIFICAÇÃO  DOS  COMPUTADORES   Pequeno  porte:  Computadores  de  uso  pessoal.  Ex:  Desktop,  laptop,  tablet.   São  os  computadores  que  u?lizamos   no  nosso  dia  à  dia,  quer  os  que  se     mantém  em  nossas  casas,  bem  como   os  que  usamos  em  qualquer  parte   (laptops,  tablets).      
  • 28. CAPÍTULO  II   ALGORITMO   Ano  Lec?vo  2013  
  • 29. Algoritmo     Definição   Sequência finita de passos que visam a atingir um objectivo específico. Conjunto de passos com uma determinada ordem, que nos permitem resolver um problema. Para a solução de qualquer problema computacional, é necessário recorrer a técnica de algoritmo pelo facto de permitir extrair deste o conjunto de detalhes envolvidos, e encontrar a melhor solução para o devido problema. É importante saber que o computador não compreende a linguagem humana; então os programas quando são construídos, geralmente utiliza-se uma linguagem de alto nível (JAVA, C, C++, PASCAL) e posteriormente convertidos para linguagem máquina (zeros e uns) por intermédio de um compilador. Exemplos de algoritmos: receita de bolo, passos para trocar o pneu de um carro, passos para ligar um computador, passos para levantar dinheiro de um Multicaixa, etc.
  • 30. Algoritmo     Um algoritmo actua sobre um conjunto de entradas(ingredientes no caso do bolo), procedimentos para manipulação das entradas (preparação do bolo) de formas a gerar uma saída benéfica para o utilizador. os algoritmos uma vez concebidos, podem ser traduzidos para qualquer linguagem de programação (processo de codificação), ou seja precisamos projectar apenas uma vez e escrever para qualquer linguagem. Exemplo: a forma como cozinhamos o arroz, pode ser traduzida para o inglês, o francês, etc, tornando-se compreensível caso utilizamos as regras das respectivas línguas (sintaxe). Veja abaixo as etapas de um algoritmo CAP.  II   Fig.  2.1  –  Fases  de  um  Algoritmo  
  • 31. Algoritmo     CARACTERÍSTICAS   Todo  algoritmo  tem  as  seguintes  caracterís?cas  principais:   Finitude:  deve  possuir  um  número  finito  de  passos.   Definição:  as  acções  devem  ser  definidas  de  forma  rigorosa  e  sem  ambiguidades   Entradas:  um  algoritmo  deve  ter  zero  ou  mais  entradas  isto  é,  as  quan?dades  que  lhe  são   fornecidas  antes  do  seu  início.   Saídas:  um  algoritmo  deve  ter  uma  ou  mais  saídas,  isto  é,  quan?dades  relacionadas  com   as  entradas.   Efec?vidade:  as  operações  devem  ser  alcançáveis  em  um  tempo  finito.   Eficácia:  Deve  resolver  o  problema  proposto   Livre   de   linguagem:   a   construção   de   um   algoritmo   não   depende   de   uma   linguagem   específica,  mas  o  contrário  é  válido.    
  • 32. Algoritmo     Exemplo:  Algoritmo  para  tomar  banho   1º  Entre  em  baixo  do  chuveiro.   2º  Ligue  a  água  e  ajuste  a  temperatura.     3º  Pegue  o  champô  e  esfregue  no  cabelo.     4º  Molhe  o  cabelo.     5º  Pegue  o  sabonete  e  esfregue  por  todo  o  corpo.   6º  Molhe  o  corpo.   7º  Desligue  o  chuveiro.   8º  Pegue  uma  toalha.   9º  Enxugue  o  cabelo  e  o  corpo.  
  • 33. Algoritmo     RESOLUÇÃO  DE  PROBLEMAS   Acabamos   por   definir   o   conceito   sobre   algoritmos,   agora   sabemos   que   é   o   meio   que   possuímos  para  resolver  problemas  quer  computacionais  ou  não.  Mas  como  podemos   analisar  um  problema  e  chegar  ao  resultado  exacto?  Precisamos  de  antemão:    Compreender  o  problema:  geralmente  o  problema  é  proposto  por  um  enunciado,  ou   seja   um   texto   que   explica   o   problema   e   fornece   detalhes   para   a   solução.   Nesta   podemos   nos   ques?onar:   O   que   pede   o   problema?;     Quais   são   as   condições   do   problema?  Existe  alguma  informação  para  descobrir  ou  cálculo  a  efectuar?    Elabore  uma  estratégia  de  resolução:  Encontre  conexões  entre  os  dados,  use  teoremas   ou  formulas  para  ajudar,  verifique  se  está  a  levar  em  conta  todos  os  dados  e  condições.    Execute  a  estratégia:  nesta  fase  é  posta  em  prá?ca  todas  as  estratégias  elaboradas  para   a  resolução  do  problema.    Revise:  Examine  a  solução  ob?da  a  par?r  do  resultado  ob?do  executando  o  teste  de   mesa.          
  • 34. Algoritmo     Exercícios   1. Crie  um  algoritmo  que  recebe  dois  números  inteiros,  fornece  o  resultado  da  soma   dos  mesmos.   2. Três  músicos:  Damião,  Paulino  e  Emanuel,  tocam  guitarra,  bateria  e  baixo.  Contudo,   não  se  sabe  quem  toca  o  quê.  Sabe-­‐se  que  o  Damião  não  é  o  baixista.  Que  Paulino   ensaia   com   o   guitarrista   às   Quintas.   E   que   o   baixista   ensaia   sempre   sozinho   às   Terças.  Quem  toca  cada  um  dos  instrumentos?   3. Um   comboio   parte   de   Luanda   a   uma   velocidade   de   120   Km/h   em   direcção   a   Malange,   ao   mesmo   tempo   em   que   outro   comboio   parte   de   Malange   a   uma   velocidade  de  80km/h  em  direcção  a  Luanda.  Quando  os  comboios  se  encontram,   qual  deles  está  mais  próximo  de  Luanda?  Aquele  que  parte  de  Luanda  ou  o  que   parte  de  Malange?    
  • 35. Formas  de  Representação  de  um  Algoritmo     Um  algoritmo  pode  ser  representado  em  três  (3)  formas  principais:  Descrição  Narra?va,   Fluxograma  e  Pseudocódigo  (Portugol).   Descrição  Narra&va:  Representa-­‐se  pela  descrição  de  uma  sequência  de  passos  em  nossa   língua   natural   (português).   Este   método   ajuda   a   compreender   e   organizar   as   etapas   necessária   para   resolver   um   problema;   mas   esta   técnica   não   é   compreendida   pelo   computador,  pois  não  compreende  a  linguagem  humana.     Sendo  assim,  é  importante  construir  os  algoritmos  em  uma  linguagem  de  programação   específica;  normalmente  o  Pseudocódigo.   Regras  de  construção   • U?lizar  somente  um  verbo  em  cada  frase   • Construir  o  algoritmo  numa  visão  para  leigos  em  informá?ca   •  U?lizar  frases  curtas  e  simples   • Ser  objec?vo   • Não  u?lizar  palavras  que  tenham  mais  do  que  um  sen?do  de  compreensão  
  • 36. Exemplos  de  algoritmo  em  Descrição  Narra&va     SOLUÇÃO   1. Crie  um  algoritmo  que  recebe  dois  números  inteiros,  fornece  o  resultado  da  soma   dos  mesmos.   Algor?mo  “soma  de  dois  numeros”   Entrada:  dois  numeros   Inicio   Receber  primeiro  numero   Receber  segundo  numero   Somar  primeiro  e  segundo  numero   Saída:  Mostrar  resultado  da  soma   Fim  do  algoritmo  
  • 37. SOLUÇÃO   2. Três  músicos:  Damião,  Paulino  e  Emanuel,  tocam  guitarra,  bateria  e  baixo.  Contudo,   não  se  sabe  quem  toca  o  quê.  Sabe-­‐se  que  o  Damião  não  é  o  baixista.  Que  Paulino   ensaia   com   o   guitarrista   às   Quintas.   E   que   o   baixista   ensaia   sempre   sozinho   às   Terças.  Quem  toca  cada  um  dos  instrumentos?   Algoritmo  “instrumento  do  musico”   Entrada:  tres  musicos                                  tres  instrumentos   Inicio   Excluir  o  Damião  do  baixo   Excluir  o  Paulino  da  guitarra   Excluir  o  Paulino  do  Baixo   Associar  Damião  a  Guitarra   Associar  Emanuel  ao  Baixo   Associar  Paulino  a  Bateria   Saída:  Mostrar  resultado  da  associacao   Fim  do  algoritmo   Exemplos  de  algoritmo  em  Descrição  Narra&va    
  • 38. Formas  de  Representação  de  um  Algoritmo     Fluxograma:   Representa-­‐se   por   símbolos   gráficos   predefinidos,   que   ilustram   os   passos   individuais  e  suas  interligações  até  chegar  a  solução  do  problema;  é  como  se  es?vesse  a   juntar  um  quebra  cabeças.   As  instruções  a  serem  executadas  são  colocadas  no  interior  de  cada  figura.   Modo  de  representação   Indica  o  início  ou  fim  do  algoritmo   Processamento  de  dados  ou  execução  de  operações   Entrada  de  dados     Saída  de  dados  
  • 39. Exemplos  de  algoritmo  em  Fluxograma   1. Crie  um  algoritmo  que  recebe  dois  números  inteiros,  fornece  o  resultado  da  soma   dos  mesmos.   SOLUÇÃO   inicio   Primeiro  numero   Segundo  numero   Primeiro  +  Segundo     Primeiro  +  Segundo     fim   Nota:   Na   saída   o   resultado   é   representado   novamente   (Primeiro   +   Segundo)   para   ilustrar   o   conteúdo  que  sairá  no  ecrã.  O  uso  de  variáveis  simplifica  esta  operação.  Ver  nas  próximas  aulas.  
  • 40. Exemplos  de  algoritmo  em  Fluxograma   1. Crie  um  algoritmo  para  tomar  banho  no  chuveiro.   SOLUÇÃO   inicio   Entrar  no  chuveiro   Ligar  a  água   Pegar  no  champô  e   esfregar  na  cabeça   Molhar  o  cabelo   Pegar  no  sabonete  e   esfregar  no  corpo   Molhar  o  corpo   Desligar  o  chuveiro   Pegar  na  toalha  e  enxugar   o  corpo  e  o  cabelo   fim  
  • 41. Formas  de  Representação  de  um  Algoritmo     Pseudocódigo   (Portugol):   u?liza   palavras   escolhidas   e   bem   definidas.   É   um   método   bastante  aproximado  a  uma  linguagem  de  programação  de  alto  nível.   As  instruções  escritas  em  Pseudocódigo,  são  facilmente  traduzidas  em  outras  linguagens,   desde  a  definição  dos  ?pos  de  dados,  instruções  de  repe?ção,  selecção,  etc,  para  além  do   facto   destas   serem   escritas   em   português.   Mas,   é   importante   aprender   as   regras   de   representação  para  cada  instrução  (Sintaxe).   Regras  de  representação   programa  <nome_do_programa>   declaracoes<definicoes_de_constantes>   <declaracoes_de_variaveis>   Inicio   <instrucoes_do_programa>   fim  
  • 42. Formas  de  Representação  de  um  Algoritmo     Representação  de  instruções  principais   Entrada  de  dados:  u?lize  a  instrução  leia().  No  interior  do  parênteses  são  postos  os   elementos  que  deseja  de  entrada  do  algoritmo.  Por  ex:  uma  variável.     Saída  de  dados:  u?lize  a  instrução  escreva  ().  No  interior  do  parênteses  são  postos  os   elementos  que  deseja  mostrar.  Por  ex:  um  resultado.   Exemplo  1:   Crie  um  algoritmo  que  imprima  na  tela  a  seguinte  mensagem:  “Ola,  este  é  o  meu   primeiro  programa”   Solução   programa  “imprime_mensagem”     Inicio   Escreva(“Ola,  este  é  o  meu  primeiro  programa”)     fim  
  • 43. Crie  um  algoritmo  que  recebe  três  notas  de  um  aluno  (p1,p2,p3)  e  calcula  a  média   final  deste  aluno.   Resolução   Algoritmo  “media  do  aluno”   var   P1,p2,p3:inteiro   media:real   Inicio   Escreva(“digite  a  primeira  nota”)   Leia(p1)   Escreva(“digite  a  segunda  nota”)   Leia(p2)   Escreva(“digite  a  terceira  nota”)   Leia(p3)   media<-­‐(p1+p2+p3)/3   Escreva(“A  media  final  do  aluno  e”,media)   Fim  do  algoritmo   Exemplos  de  algoritmo  em  Pseudocódigo  
  • 44. Formas  de  Representação  de  um  Algoritmo     Conceitos  a  ter  em  conta  na  criação  dos  algoritmos  em  Pseudocódigo   Sintaxe:   define   o   conjunto   de   regras   grama?cais   de   formação   de   sentenças   válidas   ou   grama?calmente  correctas  segundo  determinada  linguagem.   Ex:  No  português  não  deve  escrever  a  palavra  Programação  como  Programacao.     Neste  caso  existe  um  erro  de  sintaxe.   Semân&ca:  indica  a  associação  das  sentenças,  permi?ndo  a  sua  correcta  interpretação.   Ex:  Belo  Angola  é  país  um.     Neste  caso,  em  termos  de  sintaxe  está  correcto  mas  não  se  consegue  interpretar  a  frase   pois   os   termos   não   estão   enquadrados   apropriadamente.   Considera-­‐se   um   erro   de   semân?ca.   Com   base   nas   definições,   conclui-­‐se   que   a   sintaxe   expressa   as   regras   que   devem   ser   obedecidas  para  a?ngir  determinado  resultado  e  a  semân?ca  representa  o  conteúdo  das   palavras   da   linguagens,   permi?ndo   assim   uma   interpretação   correcta   do   escrito   com   determinada  linguagem.  
  • 45. Tipos  de  Dados     Para  que  o  computador  consiga  armazenar  ou  manipular  um  dado,  necessita  saber  o  seu  ?po.   Sendo  assim,  um  ?po  de  dado  define  o  ?po  de  informação  que  entra  e  sai  do  computador.  Os   ?pos  de  dados  podem  ser:  inteiro,  real,  literal  ou  caracter,  booleano   Tipo  de  dado  Inteiro:  envolve  o  conjunto  de  números  inteiros  posi?vos  e  nega?vos.     Ex:  -­‐1,  3,  10,  12,  -­‐50.   Tipo   de   dado   Real:   envolve   o   conjunto   de   números   decimais   ou   fraccionários   posi?vos   e   nega?vos.  Ex:  0.5,  -­‐1.3,  -­‐11.3,  12.4.   Todo  o  ?po  de  dado  real  possui  envolvido  um  valor  inteiro;  ou  seja  os  inteiros  são  subconjuntos   dos  números  reias.     Tipo   de   dado   Literal:   representa   uma   sequência   de   caracteres   com   letras,   dígitos,   ou   ainda   símblos  especiais.  São  também  denominados  por  Strings(cadeia  de  caracteres)  Ex:  Nome  de  uma   pessoa,  morada,  nº  do  B.I,  etc.   Dentro  destes  existe  igualmente  o  ?po  Caractere  que  permite  armazenar  apenas  um  caractere   (uma  letra,  um  símbolo,  ou  um  dígito).  Ex:  Sexo  (M,F)   Tipo  Lógico  (Booleano):  é  representado  por  dois  valores  principais  (Verdadeiro  (V)  e  Falso  (F))       CAP.  II  
  • 46. Tipos  de  Dados     Quando  u?lizar  um  ou  outro  ?po  de  dado?   Imagine  que  precisas  armazenar  os  dados  de  uma  pessoa:  Nome,  idade,  morada,  sexo,  altura,  e   precisa  saber  se  esta  é  ou  não  casada?   Sugestão:   Nome  da  pessoa  -­‐>  Literal     Idade  -­‐>  Inteiro   Morada  -­‐>  Literal     Sexo-­‐>  caractere   Altura-­‐>  Real,  pois  possui  a  parte  inteira  e  faccionária.  Ex:  1,70  cm   A  condição  de  ser  casado  ou  não  dará  sempre  em  V  ou  F;  então  u?lize  o  lógico   CAP.  II  
  • 47. Variáveis   Uma   variável   corresponde   a   uma   posição   de   memória   por   onde   guardamos   os   dados,   cujo   conteúdo  pode  mudar  ao  longo  da  execução  do  programa.  Toda  variável  tem  um  nome  que  é   conhecido  como  iden&ficador.   É   importante   saber   que   quando   ocorre   uma   alteração   do   valor   con?do   na   variável,   o   valor   armazenado  anteriormente  é  perdido  na  mémória.  Isto  é,  supondo  que  tenho  o  nome  Sampaio   armazenado   em   memória;   se   por   algum   mo?vo   eu   alterar   o   nome   Sampaio   para   Lufialuiso,   o   nome  anterior  é  eliminado  da  memória  e  subs?tuido  pelo  novo.   CAP.  II      Necessidade  da  u&lização  de  variáveis   Vamos  supor  que  queremos  fazer  um  programa  que  solicita  para  um  u?lizador  digitar  a  sua   idade   e   exibe   a   este   quantos   anos   faltam   para   ele   a?ngir   100   anos   de   idade.   Precisaremos   armazenar  a  idade  do  u?lizador  para  depois  realizar  o  cálculo  100  -­‐  idade_u?lizador  e  depois   armazenar  também  o  resultado.   Usando  a  ideologia  acima  que  a  variável  é  um  espaço  na  memória  em  que  armazenamos  os   dados,   seria   necessário   dizer   o   endereço   que   o   mesmo   está   localizado.   Neste   contexto,   em   programação  é  usado  o  conceito  de  variável  para  representar  o  apelido  do  endereço.  
  • 48. Variáveis   Regras  de  uso  e  declaração  de  variáveis     Toda  a  variável  deve  ser  declarada  antes  de  ser  usada  (inclui  o  seu  ?po  e  o  iden?ficador);     Toda  a  variável  deve  ter  sempre  um  ?po  de  dado  associado       O  primeiro  caractere  deve  ser  uma  letra;     Uma  variável  deve  ter  sempre  um  valor  inicial  antes  de  ser  usada;     Nome  de  variáveis  escritas  com  letras  maiúsculas  serão  diferentes  de  letras  minúsculas  (case   sensi?ve);      Nenhuma   palavra   reservada   à   ferramenta   (COMPILADOR)   poderá   ser   usada   como   nome   da   variável;     U?lize  nomes  representa?vos  para  dar  uma  visão  do  conteúdo  con?do  nela;     Se  haver  mais  de  um  caractere,  este  só  poderá  ser:  letra  ou  algarismo;     O  nome  de  uma  variável  não  deve  conter  caracteres  especiais,  com  excepção  do  underline  (_).   CAP.  II   • São exemplo de variáveis os seguintes: Nome, aluno1, nome_completo, a, b, idade • Não representam identificadores válidos os seguintes: ~nome, 1aluno, nome?completo, idade-pessoa, filhação
  • 49. Variáveis   Atribuição:  é  um  termo  u?lizado  para  atribuir  um  valor  a  uma  variável,  ou  seja  armazenar  um   determinado  conteúdo  em  uma  variável.   Esta  operação  é  representada  em  Pseudocódigo  por  uma  seta  apontando  para  a  esquerda,  onde  a   direita  fica  o  valor  a  ser  atribuído  e  a  esquerda  a  variável  a  receber  o  valor.   Ex:  variável  <-­‐  constante              variável  <-­‐  variável                Variável  <-­‐  expressão   Para  o  1ª  linha  lê-­‐se:  variável  recebe  constante  (idem  para  os  outros  subs?tuindo  o  que  está  a  ser   atribuído).     CAP.  II   •  São  exemplo  de  variáveis  os  seguintes:  Nome,  aluno1,  nome_completo,  a,  b,  idade   •   Não   representam   iden?ficadores   válidos   os   seguintes:   ~nome,   1aluno,   nome?completo,   idade-­‐ pessoa,  filhação     Regras  de  uso  e  declaração  de  variáveis  
  • 50. Variáveis   Regra  de  declaração  de  variável   <nome_do_?po>  <nome_da_variavel>;    <nome_da_variavel>  :<nome_do_?po>   ou     <nome_do_?po>  <nome_da_variavel>,  ...  ,  <nome_da_variavel>;    <nome_da_variavel>,  ...  ,  <nome_da_variavel>:  <nome_do_?po>   Ex:  inteiro  idade  -­‐>  inteiro  representa  o  ?po  de  dado  e  idade  representa  o  nome  da  variável          Ano_nascimento  :  inteiro  -­‐>  Ano  nascimento  é  a  variável  e  o  inteiro  é  o  ?po  de  dado                real  peso  -­‐>  real  representa  o  ?po  de  dado  e  peso  representa  o  nome  da  variável   O   modo   de   declaração   de   variável   pode   variar   de   acordo   com   a   linguagem   de   programação   a   ser   u?lizada  ou  o  compilador  em  causa.  Para  algoritmos,  usando  o  compilador  VISUAL  G,  a  declaração  é   feita  da  seguinte  maneira:  idade:  inteiro   Isto  quer  dizer,  que  a  SINTAXE  (Regra  de  escrita)  do  compilador  define  a  declaração  de  variável  deste   modo.   CAP.  II  
  • 51. Variáveis   Exercício   Faça  um  algoritmo  que  recebe  três  notas  de  um  aluno  e  calcula  a  média  das  notas.   Solução   1-­‐  Compreenda  o  problema  e  elabore  a  estratégia  de  resolução   Questão:  O  que  o  problema  pede?     Preciso  de  alguma  variável  para  resolver  este  problema;  se  sim,  que  ?po  de  dado  vou  armazenar   nestas  variáveis?   O  resultado  de  que  ?po  será?   De  que  modo  vou  representar  o  algoritmo?  Fluxograma  ou  Pseudocódigo?   2-­‐  Execute  a  estratégia.   CAP.  II  
  • 52. Variáveis        Solução  do  exercício  u?lizando  pseudocódigo:     algoritmo  “media_de_tres_notas”     Var     nota1,  nota2,  nota3:  real     media  :  real     Inicio     escreva  (“Digite  as  tres  notas  do  aluno”)     leia  (nota1)     leia  (nota2)     leia  (nota3)     media<-­‐(nota1+nota2+nota3)/3     escreva  (“A  média  do  aluno  corresponde  a    ”,  media)       fimalgoritmo   CAP.  II  
  • 53. Constantes   Uma  constante  é  um  valor  fixo  que  não  é  alterado  durante  o  tempo  ou  durante  a  execução  do   algoritmo.   Ex1:  5,  2.4,  “OLA”,  V.   Nota:  A  constante  V  con?da  no  exemplo  é  do  ?po  lógico.   Ex2:  escreva(“estás  a  aprender”)  -­‐>  o  frase  con?da  no  parênteses  determina  uma  constante.     Para  diferenciar  os  dados  constantes  do  ?po  Caractere  dos  outros  ?pos  de  dados,  usa-­‐se  aspas         (“  ”)  para  delimitá-­‐los;  e  os  dados  do  ?po  lógico  u?lizam  as  constantes  V  -­‐>  Verdadeiro  e  F  -­‐>   Falso.     Possuem  um  nome  único  para  a  sua  iden?ficação  (iden?ficador)       Recomenda-­‐se  o  uso  de  nomes  suges?vos.  Ex:  pi=3.1415  ,  sexo=“feminino”     As  regras  para  a  declaração  de  constantes  são  as  mesmas  usadas  para  as  variáveis   CAP.  II  
  • 54. Constantes   Declaração  de  constantes   Sintaxe:   const  <nome_da_constante>  =  valor   Const  –  é  uma  palavra  reservada,  usada  sempre  que  declarar  uma  constante.   nome_da_constante  –  iden?ficador  da  constante   Valor  –  valor  fixo  atribuído  a  constante.   Ex:  const  pi=3,1415                  morada=“Sambizanga”   CAP.  II  
  • 55. Operadores  e  Expressões  aritmé&cas   CAP.  II   São  denominados  operadores  aritmé?cos  os  seguintes  elementos:     OPERADOR   DENOMINAÇÃO   PRIORIDADE  DE  EXECUÇÃO     (os  com  maior  prioridade  são  os   primeiros  a  serem  executados)   +   Adição   1   -­‐   Subtracção   1   *   Mul?plicação   2   /   Divisão   2   DIV   Divisão  inteira   2   MOD  ou  %   Resto  da  divisão  inteira   2   **  ou  ^   Potenciação   3   As  expressões  aritmé?cas  são  expressões  cujos  operadores  são  aritmé?cos  e  os  operandos  são   variáveis  ou  constantes  do  ?po  inteiro  ou  real.   Ex:  3+3/2  ,    X+Y,    2*K   Nota:  Caso  a  prioridade  for  igual,  a  expressão  aritmé?ca  é  resolvida  da  esquerda  para  a  direita.    
  • 56. Operadores  lógicos  e  relacionais   CAP.  II   São  denominados  operadores  lógicos  os  seguintes  elementos:     Operador   Tipo   PRIORIDADE  DE  EXECUÇÃO     (os  com  maior  prioridade  são  os   primeiros  a  serem  executados)   OU   Binário   1   E   Binário   2   NÃO   Unário   3   As  expressões  lógicas  são  cons?tuídas  por  operadores  lógicos  e  variáveis  ou  constantes  do   ?po  lógico  originando  resultados  do  ?po  verdadeiro  ou  falso.   Nota:       U?lizando  os  operadores  lógicos  é  necessário  saber  que:  uma  expressão  A  E  B  só  será   verdadeira  se  A  for  Verdadeira  e  B  for  Verdadeira.  Caso  contrário  será  falsa     Uma  expressão  A  OU  B  será  verdadeira  caso  pelo  menos  uma  delas  (A  OU  B)  forem   verdadeiras.  
  • 57. Operadores  Relacionais   CAP.  II   São  denominados  operadores  os  seguintes  elementos:     O   Resultado   ob?do   numa   relação   é   sempre   um   valor   lógico   (   V   ou   F).   Ex:   A+B=C,   é   uma   expressão  que  será  verdadeira  ou  falsa  a  medida  em  que  o  resultado  da  expressão  aritmé?ca   for  igual  ao  conteúdo  de  C.     Operador   Função   =   Igual   >   Maior  que   <   Menor  que   >=   Maior  ou  igual   <=   Menor  ou  igual   <  >   Diferente  de  
  • 58. CAPÍTULO  III   Estruturas  de  Selecção   Ano  Lec?vo  2013  
  • 59. Estrutura  de  Selecção  (Condicional)   A   estrutura   de   selecção   permite   a   execução   de   instruções   caso   determinadas   condições,   representadas   por   expressões   lógicas   ou   relacionais,   são   ou   não   verdadeiras.   Existem   as   seguintes  estruturas  de  selecção:     Estrutura  de  Selecção  Simples     Estrutura  de  Selecção  Composta     Estrutura  de  Selecção  encadeada     Escolha  múl?pla   Estrutura  de  Selecção  Simples:  É  u?lizada  quando  necessitamos  executar  uma  ou  várias  ins-­‐   truções  caso  uma  condição  seja  sa?sfeita.  Esta  estrutura  não  executa  nada  caso  a  condição   seja  falsa.         Sintaxe:                                  Se  <condição>  entao           Instrução             fimse;     SIM   NÃO   Representação  gráfica  de  uma  estrutura  condicional  (Fluxograma):       CAP.  III  
  • 60. Estrutura  de  Selecção   CAP.  III   Ex:   Faça   um   algoritmo   que   verifica   se   um   dado   número   é   par?   Resolva   u?lizando   Fluxograma  e  Pseudocódigo.   Solução  usando  Fluxograma:  
  • 61. Estrutura  de  Selecção   CAP.  III   Ex:   Faça   um   algoritmo   que   verifica   se   um   dado   número   é   par?   Resolva   u?lizando   Fluxograma  e  Pseudocódigo.   Solução  usando  Pseudocodigo:   algoritmo  "numero  par”   var   n:inteiro   Inicio   escreva("Insira  um  numero")   leia  (n)   se  (n  mod  2=0)  entao   escreva  (n,"  é  par  ")   fimse   fimalgoritmo  
  • 62. Estrutura  de  Selecção   CAP.  III   Estrutura  de  Selecção  Composta:  permite  a  execução  de  duas  alterna?vas  a  par?r  de  uma   única  condição;  isto  é  suponha  que  um  conjunto  de  acções  dependa  da  avaliação  verdadeira   e   apenas   uma   dependa   de   uma   falsa?   Usando   o   ?po   de   selecção   Simples   estudada   anteriormente,  isto  não  é  possível.  Mas  vejamos  como  a  composta  funciona:   Sintaxe:         se  <condição>  entao         <sequência  de  instruções>       senão         <instruções>         fimse;  
  • 63. Estrutura  de  Selecção   CAP.  III   Ex:  Crie  um  algoritmo  que  dado  a  idade  de  um  indivíduo,  determina  se  o  mesmo  é  Jovem  ou   não.  Admite  que  o  indivíduo  é  Jovem  caso  a  sua  idade  es?ver  entre  os  18  e  40  Anos.   Solução  em  pseudocódigo         algoritmo  "teste  se  é  jovem"   var   idade:inteiro            inicio            escreva("Digite  a  Idade  do  indivíduo")            leia(idade)               se  ((idade>=18)E  (idade<=40))  entao            escreva("Este  individuo  é  Jovem")            senao            escreva("O  individuo  não  Jovem.  Poderá  ser  um  Adolescente  ou  Idoso")            fimse     fimalgoritmo  
  • 64. Estrutura  de  Selecção   Estrutura   de   Selecção   Encadeada:   representa   o   agrupamento   de   várias   selecções.   Normalmente,  é  usada  quando  uma  determinada  ação  ou  bloco  deve  ser  executado  caso   um  grande  conjunto  de  possibilidades  forem  sa?sfeitas.   Sintaxe:         se  <condição>  entao         se  <condição>  entao           <conjunto  de  instruções>         fimse;       senao         <instrução>       fimse;   CAP.  III  
  • 65. Estrutura  de  Selecção   Ex:  Crie  um  algoritmo  em  que  dado  dois  números  inteiros,  verifique  se  os  dois  são  pares.   Caso  forem,  adicione  2  ao  maior.  Caso  forem  ímpares  some  os  dois  números  e  imprima  os   resultados.  Solucione  u?lizando  pseudocódigo   Solução       CAP.  III   algoritmo  "dois_pares”   var   n1:inteiro   n2:inteiro   inicio   escreva("Insira  o  primeiro  numero")   leia  (n1)   escreva("Insira  o  segundo  numero")   leia  (n2)   se  ((n1  mod  2=0)  e  (n2  mod  2=0))  entao   se  (n1>n2)  entao   n1<-­‐n1+2   escreva  ("O  primeiro  número  é  par  e  resulta  em  ",  n1)   senao   n2<-­‐n2+2          escreva  ("O  segundo  número  é  par  e  resulta  em  ",  n2)   fimse   senao   escreva  ("Condição  para  impares  e  a  soma  é  ",  n1+n2)   fimse   fimalgoritmo  
  • 66. Estrutura  de  Selecção   Selecção   de   múl&pla   escolha:   é   u?lizada   quando   necessitamos   testar   um   conjunto   de   valores,  e  quando  acções  diferentes  são  associadas  a  esses  valores.   Imagine  que  ?véssemos  mais  do  que  cinco  (5)  condições  para  serem  testadas  para  executar   determinadas  acções;  poderia-­‐mos  u?lizar  várias  selecções  encadeadas.  Mas  não  é  prá?co.     Sintaxe:         escolha  (expressão)         caso  <hipótese  1>:      <instrução1>         caso  <hipótese  2>:      <instrução2>         caso  <hipótese  3>:      <instrução3>         caso  contrário  :  <instrução  n>       fimescolha         CAP.  III  
  • 67. Estrutura  de  Selecção   Questões  a  levar  em  conta  na  Selecção  de  múl&pla  escolha:     A  expressão  é  avaliada,  e  o  valor  será  comparado  com  cada  uma  das  hipóteses.     A  opção  caso  contrário  (outrocaso  em  outros  compiladores)  é  opcional     A  hipótese  referida  na  sintaxe  é  definida  como  uma  constante  caractere,  uma  constante   numérica,  e  em  alguns  casos  literais     Esta  estrutura,  é  amplamente  u?lizada  em  algoritmos  com  menus  (P.e:  Calculadora)   Exemplo:  Crie  um  algoritmo  que  simule  a  execução  de  uma  máquina  calculadora.             CAP.  III  
  • 68. algoritmo  ”calculadora”   a,b:inteiro   soma,subtraccao,  mul&plicacao:inteiro   divisao:real   op:caractere   inicio   escreva  ("Digite  o  primeiro  numero")   leia(a)   escreva  ("Digite  o  segundo  numero")   leia(b)   escreval  ("Digite  a  operação  que  deseja:  +  (soma)  -­‐  (subtraccao)  *  (Mul&plicacao)  /  (Divisao)")   leia(op)   escolha  (op)    caso  "+"    soma<-­‐a+b    escreva  (soma)   caso  "-­‐"   subtraccao<-­‐a-­‐b   escreva  (subtraccao)   caso  "*"   mul&plicacao<-­‐  a*b   escreva  (mul&plicacao)   caso  "/"   divisao<-­‐a/b   escreva  (divisao)   outrocaso   escreva  ("Operacao  inexistente")   fimescolha   fimalgoritmo   CAP.  III  
  • 69. CAPÍTULO  IV   Estruturas  de  Repe?ção   Ano  Lec?vo  2013  
  • 70. Estruturas  de  Repe&ção   São  estruturas  que  permitem  a  execução  repe?da  de  um  certo  trecho  do  programa  por  um   determinado   número   de   vezes   ou   ainda   enquanto   uma   certa   condição   mantém-­‐se   verdadeira.  Existem  três  principais  ?pos  de  estruturas  de  repe?ção:     enquanto       repita     para   As  estruturas  de  repe?ção  diferem-­‐se  pelo  seu  modo  de  funcionamento,  algumas  precisam   que  uma  certa  condição  seja  verdadeira  para  que  execute  o  loop  (laço  de  repe?ção),  outras   dependem  do  valor    de  uma  variável  de  controlo  para  que  execute  as  instruções.   Imagine  que  deseja  mostrar  a  tabuada  de  um  número  inteiro  qualquer.  Até  o  momento,  com   o  que  foi  aprendido,  o  ideal  seria  mul?plicar  o  número  dado  com  cada  número  no  intervalo   de  1  à  n.  Isto  quer  dizer  que  teríamos  n  mul?plicações,  o  que  não  seria  viável.   Sendo  assim,  aplica-­‐se  o  conceito  sobre  laços  de  repe?ção  para  resolver  casos  similares.     CAP.  IV  
  • 71. Estruturas  de  Repe&ção   Enquanto:  é  uma  estrutura  que  efectua  um  teste  condicional  no  início  do  laço  e  a  execução   do   bloco   de   acções   ou   da   acção   necessita   que   a   condição   seja   verdadeira.   Quando   a   condição  for  falsa,  as  instruções  não  são  executadas  nenhuma  vez.   Sintaxe  (Pseudocódigo):               Representação  Fluxograma:       enquanto  (condição)  faca   /*  instruções  a  serem  executadas    enquanto  a  condição  for  verdadeira*/   fimenquanto     CAP.  IV  
  • 72. Estruturas  de  Repe&ção   Modo  de  funcionamento:   1. Na  estrutura  enquanto,  o  teste  lógico  permite  controlar  o  número  de  repe?ções  a  serem   realizadas  pelo  laço.     2. Ao   executarmos   o   algoritmo,   caso   o   resultado   do   teste   lógico   for   verdadeiro,   as   instruções   dentro   do   laço   serão   realizadas;   quando   o   algoritmo   encontra   o   “fimenquanto”   (ou   a   bolinha   do   fluxograma)   ele   retorna   para   o   teste   lógico   afim   de   avaliá-­‐lo  novamente  para  saber  se  deve  repe?r  mais  uma  vez.   3.  Se  o  teste  der  verdadeiro,  os  comandos  do  laço  são  novamente  executados,  mas  se  der   falso  o  algoritmo  sai  do  laço  e  segue  a  sua  execução  realizando  o  próximo  comando  que   es?ver  após  o  “fimenquanto”.   CAP.  IV  
  • 73. Estruturas  de  Repe&ção   Contadores  e  Somadores:   Em  laços  de  repe?ção,  necessitamos  de  contadores  para  contar  o  número  de  repe?ções  a   serem   efectuadas,   e   de   somadores   para   acumular   os   valores   de   entrada   em   uma   única   variável.   Imagine  que  deseja  mostrar  a  soma  dos  10  primeiros  números  naturais.  Como  vamos  saber   o   número   de   vezes   já   repe?das?   A   resposta   é   u?lizando   uma   variável   contadora   que   receberá  um  valor  inicial  (geralmente  zero)  e  em  cada  repe?ção  é  incrementada  em  uma   unidade  através  de  uma  atribuição  (Ex:  a<-­‐a+1).   Usando   esta   analogia,   podemos   dizer   que   incremento:   é   a   acção   de   acrescentar   uma   unidade  ao  valor  de  uma  variável;  e  decremento  é  a  acção  contrária.  E  como  obter  o  total  da   soma  dos  números?  Neste  caso  temos  de  u?lizar  um  acumulador  para  que  em  cada  laço,   acumule  numa  variável  os  valores  que  serão  fornecidos(neste  caso  1+2+3+.....10).         CAP.  IV  
  • 74. Estruturas  de  Repe&ção   Ex:  Crie  um  algoritmo  que  soma  a  quan?dade  de  números  pares  de  1  à  20.     Solução:     Algoritmo    "soma_pares"     var     soma:inteiro     cont:inteiro     inicio       cont  <-­‐  1       soma<-­‐  0       enquanto  (cont<=20)  faca         se  (cont  mod  2  =  0)  entao         soma<-­‐  soma+cont         fimse         cont<-­‐  cont+1       fimenquanto       escreva  ("A  soma  total  é  ",  soma)         fimalgoritmo   CAP.  IV  
  • 75. CAP.  IV   cont  <-­  cont+1   soma:inteiro   cont:inteiro   início   cont<-­1 soma<-­0   Cont<=20   Cont  mod  2  =  0   soma  <-­  soma+cont   7im   F   V V F  
  • 76. Estruturas  de  Repe&ção   Repita:  é  uma  estrutura  que  efectua  um  teste  condicional  no  final  do  laço.  Deste  modo,  o   bloco  de  instruções  do  laço  serão  executados  no  mínimo  uma  vez,  até  que  uma  determinada   condição  seja  verdadeira;  isto  quer  dizer  que  ela  executa  enquanto  for  falsa.     Sintaxe  (Pseudocódigo):               Representação  Fluxograma:       repita     /*  instruções  a  serem  executadas    enquanto  a  condição  for  falsa*/   até  (condição)       CAP.  IV  
  • 77. Estruturas  de  Repe&ção   Para:  é  uma  estrutura  que  repete  um  conjunto  de  operações  por  um  determinado  número   de  vezes  previamente  definido.  Esta  estrutura  não  prevê  uma  condição  tal  como  as  outras,   pois  possui  limites  fixos  (inicio  e  final).       Sintaxe  (Pseudocódigo):               Representação  Fluxograma:       para  V  de  vi  até  vf  passo  p  faca     /*  instruções  a  serem  executadas    enquanto  a  condição  for  verdadeira*/   fimpara   Ou  ainda   para  V  de  vi  até  vf    faca       /*  instruções  a  serem  executadas    enquanto  a  condição  for  verdadeira*/   fimpara   CAP.  IV  
  • 78. Estruturas  de  Repe&ção   Onde:   V  -­‐  é  a  variável  de  controlo   vi  –  é  o  valor  inicial  da  variável  V   vf  –  é  o  valor  final  da  variável  V   p  –  é  o  valor  do  incremento  à  variável  V   Nota:  tudo  o  que  es?ver  o  faça  e  o  fimpara  será  caracterizado  como  o  que  deve  ser  feito   para  cada  ocorrência.   CAP.  IV  
  • 79. CAPÍTULO  V   Estruturas  de  Dados   Ano  Lec?vo  2013  
  • 80. Estruturas  de  Dados   Definição:   As  estruturas  de  dados,  definem  a  forma  como  os  dados  estão  organizados  e  armazenados   na  memória  do  computador,  por  forma  a  facilitar  o  seu  acesso  e  manipulação.   Até  aqui,  estudamos  que  numa  variável  só  é  possível  armazenar  um  valor;  ou  seja,  caso  ?ver   um  valor    armazenado  numa  variável,  e  desejar  armazenar  outro  valor  na  mesma  variável,  o   que  poderá  acontecer  será  a  subs?tuição  do  an?go  pelo  novo.     Quando  precisamos  armazenar  um  conjunto  de  valores  são  u?lizadas  variáveis  compostas   que   podem   ser:   Homogêneas   e   Heterogêneas;   as   variáveis   compostas   Homogêneas   agregam   um   conjunto   de   dados   do   mesmo   ?po   e   as   variáveis   compostas   Heterogêneas,   agregam  um  conjunto  de  dados  de  ?pos  diferentes.   Nesta   primeira   secção,   estudaremos   as   variáveis   compostas   Homogêneas,   que   envolvem   Vectores  e  Matrizes,  também  conhecidas  como  Arrays.   CAP.  V  
  • 81. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Suponhamos  que  nos  é  proposto  o  seguinte  problema:   Crie  um  algoritmo  que  solicita  o  nome  de  10  estudantes  e  as  suas  respec?vas  notas,  calcula   as  suas  médias  e  imprime  o  nome  de  cada  um  e  a  média  do  final  do  semestre.   Possível  solução:       Algoritmo  “dados  escolares  de  10  alunos”       var         nome1,  nome2,....nome10:literal       media1,  media2,  media3,.....media10:real       inicio         leia(nome1)       leia(nome2)       ......       leia(nome10)       ..........         fimalgoritmo       CAP.  V  
  • 82. Variáveis  compostas  homogêneas  unidimensional   (vectores)     U?lizando   a   solução   apresentada   anteriormente,   seria   bastante   trabalhoso   solucionar   o   problema  proposto;  o  mais  fácil  seria  u?lizar  o  conceito  de  vectores.   Definição:   Vector  representa  um  conjunto  de  variáveis    capazes  de  armazenar  valores  do  mesmo  ?po   (literal,  inteiro,  real,  etc).  Um  vector  é  visto  como  uma  caixa  com  vários  compar?mentos   onde  podemos  guardar  documentos;  para  o  nosso  caso  específico  é  considerado  como  uma   variável  onde  podemos  armazenar  mais  de  um  dado.   Caracterís&cas  de  um  Vector     Possui  um  nome  (iden?ficador)     Possui  um  índice  (posição)     U?liza  colchetes  (dois  parênteses  rectos  )  para  representar  as  posições  do  vector     Armazena  apenas  dados  do  mesmo  ?po  (qualquer  ?po  de  dado)     Elementos  individuais  são  acessados  por  meio  da  sua  posição                 CAP.  V  
  • 83. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Sintaxe  para  declaração  de  um  vector   <nome  do  vector>:  vetor  [Li..Lf]  de  <&po  de  dado>   Ex:  nome:  vetor  [0..4]  de  literal   Representação  gráfica  de  um  Vector   A  figura  acima  representa  um  vector  de  cinco  (5)  posições  com  valores  do  ?po  literal.   Imagine  que  o  nome  da  variável  do  ?po  vector  seja  nome  tal  como  na  figura  acima:   Significa  o  seguinte:  nome[0]  =  “Maria”,  nome[1]=“Valdino”,  ...  ,  nome[4]=“Sandra”   CAP.  V   Maria   Valdino   Sónia     Eliana   Sandra   [0]   [1]   [2]   [3]   [4]   nome  
  • 84. Variáveis  compostas  homogêneas  unidimensional   (vectores)     OPERAÇÕES  COM  VECTORES     Não  é  possível  manipular  directamente  todos  os  elementos  do  vector;  apenas  um  de  cada   vez.     O  acesso  individual  a  cada  componente  do  vector  é  realizado  pela  especificação  do  nome  e   a  posição  do  mesmo  por  meio  de  índices.      O   índice   não   representa   o   valor   con?do   no   vector;   mas   sim   a   posição   em   que   um   determinado  valor  está  armazenado  no  vector.   ATRIBUIÇÃO  DE  VALORES   Ex:  Nome[2]  <-­‐  “Joaquim”  ,  quer  dizer  que  é  atribuído  a  constante  Joaquim  do  ?po  literal   para  a  segunda  posição  do  vector  Nome.   idade[10]  <-­‐  50,  quer  dizer  que  é  atribuído  o  valor  50  para  a  décima  posição  do  vector  idade     CAP.  V  
  • 85. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Nota:  É  necessário  levar  em  conta  que  o  valor  a  ser  atribuído  pode  ser  uma  constante,  uma   variável  ou  uma  expressão.   LEITURA  DE  VECTORES   A  leitura  dos  elementos  do  vector  é  feita  passo  a  passo;  ou  seja  um  elemento  de  cada  vez,   considerando  o  nome  do  vector  e  a  posição  correspondente.  Neste  caso  é:   Sintaxe   leia  (<lista  de  variáveis>).  Ex:  leia  (escola  [3])   ESCRITA  DE  VECTORES   Os  passos  são  os  mesmos  em  comparação  aos  referidos  acima.  Sendo  assim  teremos:   Sintaxe      escreva  (<lista  de  variáveis>).  Ex:  escreva  (escola  [3])   CAP.  V  
  • 86. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Para  a  manipulação  dos  vectores,  quer  para  a  leitura  como  para  a  escrita  de  valores  nele   con?dos,  ou  qualquer  operação  a  ser  efectuada  são  u?lizadas  estruturas  repe?ção.   Suponha   que   deseja   armazenar   em   um   vector   N,   5   valores   do   ?po   inteiro   e   imprimir   os   mesmos  valores.  Considerando  uma  leitura  e  escrita  normal  sem  estruturas  de  repe?ção,   teríamos  o  seguinte:   CAP.  V   leia  (N[0],  N[1],N[2],N[3],N[4])   escreval(N[0])   escreval(N[1])   escreval(N[2])   escreval(N[3])   escreval(N[4])  
  • 87. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Para   solucionar   esta   situação,   u?lizamos   estruturas   de   repe?ção   (enquanto   ...   faca,   repita...até  e  para  de...  até)  então  teremos:     CAP.  V   algoritmo  "vector  de  5  elementos”   Var   N:vetor  [0..4]  de  inteiro    i:inteiro   Inicio   para  i  de  0  ate  4  faca   leia  (N[i])   fimpara   para  i  de  0  ate  4  faca   escreval(N[i])   fimpara   fimalgoritmo  
  • 88. Variáveis  compostas  homogêneas  unidimensional   (vectores)     Exemplos:     1. Crie   um   algoritmo   que   dado   10   números   aleatórios,   imprima   os   mesmos   na   ordem   inversa  em  que  foram  inseridos.  Ex:  2,3,4,6  resultará  em:  6,4,3,2   2. Escreva   um   algoritmo   que   soma   todos   elementos   con?dos   no   vector   e   imprima   o   resultado  da  soma.   3. Faça  um  algoritmo  que  lê  uma  sequência  infinita  de  números  e  termina  apenas  quando   digitar  o  número  zero  (0)       CAP.  V  
  • 89. Variáveis  compostas  homogêneas  unidimensional   (vectores)     1.  Solução   CAP.  V   algoritmo  "vector  de  10  elementos"   var          N:vetor  [0..9]  de  inteiro          i:inteiro   inicio            i<-­‐0   escreva("Digite  10  números")   enquanto  (i<=9)  faca   leia  (N[i])   i<-­‐i+1   fimenquanto   escreval("O  inverso  dos  valores  inseridos  é:  ")   enquanto  (i>0)  faca   i<-­‐i-­‐1   escreval(N[i])   fimenquanto   fimalgoritmo  
  • 90. Variáveis  compostas  homogêneas  unidimensional   (vectores)     2.  Solução   CAP.  V   algoritmo  "soma  de  10  elementos"   var          N:vetor  [0..9]  de  inteiro          soma:inteiro          i:inteiro   inicio            i<-­‐0            soma<-­‐0   escreva("Digite  10  números")   enquanto  (i<=9)  faca   leia  (N[i])   i<-­‐i+1   fimenquanto   para  i  de  0  ate  9  faca   soma<-­‐soma+N[i]   fimpara   escreval("O  somatório  dos  valores  inseridos  é:  ",soma)   fimalgoritmo