GEM03: Algoritmos e Programação de Computadores
Introdução a Informática
Software
Eduardo Figueiredo
12 de Março de 2010
Aula 03
Monitor CRT vs. LCD
Monitores CRT
Monitores LCD
O Problema da Radiação

Monitores CRT emitem radiação

Problemas causados a saúde
humana ainda não estão
comprovados

Usuários mais
preocupados com a
saúde usam filtros
anti-radiação
Filtros Anti-Radiação em LCD

Também existem filtros
para monitores LCD
Sistema Computacional
Pessoas
Sistema Computacional
Pessoas
Sistema Computacional: Software

Componente lógico de um sistema
computacional




Ponte entre os usuários e a máquina
Séries de instruções
Indicam passo a passo o que o computador deve
fazer
Importância



Realizam tarefas rotineiras e/ou periódicas
Aumentam a produtividade
Reduzem os custos de uma organização
O que é software?

Programa de computador +
Documentação

Classificação fundamental


Produtos genéricos
(ex. Microsoft Office)
Produtos encomendados
(ex. Locadora do Zé)
Crise do Software (1968)


Custos de hardware caindo
Custos do software subindo
Avanços em hardware


Permitem desenvolvimento de sistemas
cada vez mais complexos
Resultado (software)

Custos altos, projetos atrasados,
sistemas não confiáveis,
desempenho insatisfatório, etc...
Software está em todo lugar
Sistemas Críticos

Equipamentos médicos



Extremamente críticos
Lidam com vidas
Caixas eletrônicos

Prejuízos financeiros
Confiabilidade de Software

Exemplo: Vôo Air France Rio - Paris
1. Dados conflitantes (falha nos sensores)
2. Sistema assume o controle (piloto automático)
3. Piloto tenta reiniciar o sistema (boot)
4. Em 4 minutos o avião mergulha no oceano

The Last Four Minutes of Air France Flight 447.
http://www.spiegel.de/international/world/0,1518,679980,00.html
Preço e Desempenho

Celular

Pouco espaço na memória
Grande variação em
características de aparelhos
Alguns Tipos de Software
Classificação de Software
Quanto a Função

Infra-estrutura Básica do Sistema



Sistema Operacional
Utilitários de controle (BIOS, firmwares, drivers...)
Aplicativos




Software Comercial
Software Científico ou de Engenharia
Software de Tempo Real
Software de Inteligência Artificial, etc.
Sistema Operacional

Software Básico de um computador

Não existiam nos computadores antigos



Exemplo: computadores construídos com
válvulas e painéis
Os programadores deviam considerar as
características do hardware
Atualmente, estão presentes em todos os
computadores pessoais

E também em muitos computadores
pertencentes a outras categorias
Sistema Operacional

Cria um ambiente no qual os usuários
podem construir e executar programas

Executam programas internos de controle
do computador de forma transparente


Sem que o usuário saiba ou precise se
preocupar em saber
Exemplos de Sistemas Operacionais

Windows, Linux, Solaris, Mac OS
Tarefas do Sistema Operacional



Gerenciamento da memória do
computador
Administração dos dados
Acionamento dos dispositivos de
entrada e saída


Teclado, mouse, disquetes, CDs, DVDs,
etc.
Execução de programas utilitários ou
construídos pelo usuário
Aplicações Específicas

Negócios e Comércio


Comércio eletrônico, bolsa de valores,
planejamento de gastos, etc.
Medicina



Análise de imagens médicas como ultra-som
Acompanhamento de atletas e pacientes
Detecção de anomalias genéticas
Aplicações Específicas

Exército




Simula estratégias de ataque/defesa
Treinamento de soldados
Calcula trajetórias de projéteis
E muito mais...




Usinas nucleares e hidrelétricas
Portos e aeroportos
Previsões meteorológicas
Atividades geológicas
Desenvolvimento de Software
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Especificação de Requisitos

Um sistema de programação deve
satisfazer as necessidades de seus
usuários


Tais necessidades são expressas na
forma de requisitos
Requisito = ação que deve ser
executada pelo sistema

Ex: registrar as notas dos alunos,
calcular a média final, etc.
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Da Análise ao Projeto

A partir do documento de análise de
requisitos, projeta-se o sistema
1ª Fase: Resolução do Problema
PROBLEMA
Encontrar
Solução
Programa de
Computador
2ª Fase: Implementação (codificação)
Projeto do Sistema
Dividido em duas etapas

Projeto Preliminar define a estrutura
modular do software, as interfaces e as
estruturas de dados utilizadas


Saída: Diagramas
Projeto Detalhado descreve
detalhadamente cada módulo definido no
projeto preliminar

Saída: algoritmos
Projeto de uma Casa
Projeto Preliminar de Software
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Implementação do Sistema

A implementação segue as definições
do projeto preliminar

Transcreve as instruções do
algoritmo para uma linguagem de
programação

Exemplo: Linguagem C
Fases do Desenvolvimento

Modelo Cascata


Especificação
de Requisitos
Define atividades seqüenciais
Outras abordagens são
baseadas nesta idéia
Projeto
Implementação
Testes
Manutenção
Teste e Validação

Tem por objetivo garantir que o
sistema satisfaça os requisitos

Consiste da realização de alguns tipos
de testes para encontrar erros

A inexistência de erros não representa
a adequação operacional do sistema

Deve ser feita a validação com o cliente
Linguagem C
Um Pouco de História
Evolução das Linguagens

Linguagens de Máquina


Linguagens Assembly


+1300042774
(traduzido depois para 0 e 1)
load basepay / add overpay / store grosspay
Linguagens de Alto Nível

grosspay = basepay + overpay
Linguagens de Máquina

Definem instruções a serem executadas
pelo computador


Código de máquina: uma seqüência de
números significa uma instrução a ser
executada


São especificas para o hardware
“+1300042774” significa “load basepay”
Atualmente, programar em linguagens de
máquina é pouco comum

São usadas linguagens de alto nível como C
Linguagens de Alto Nível

Programadores geralmente utilizam
linguagens de alto nível


Programas de alto nível são traduzidos para
a linguagem da máquina por compiladores


Mais próximo da compreensão humana
Arquivo .EXE é gerado
O programa compilado pode então ser
executado pelo computador
De onde veio C?

BCLP (1967) por Martin Richards

Linguagem C (1972) por Dennis Ritchie

C++ (1980) por Bjarne Stroustrup

Bell Labs
Sistema de Numeração
Conceitos Básicos
O Sistemas de Numeração

Objetivos



Prover símbolos e convenções para
representar quantidades
Registrar processar informação
quantitativa
Tradicionalmente feita com números
Método Tradicional

Chamado numeração posicional

Inventado pelos chineses

O valor representado pelo algarismo no
número depende da posição em que ele
aparece na representação
Sistema Decimal (base 10)

A posição à esquerda altera seu valor de
uma potência de 10

Exemplo 125




1 representa 100 (102)
2 representa 20 (2x101)
5 representa 5 (5x100)
125 = 1x102 + 2x101 + 5x100
Base em Sistemas de Numeração


Define a quantidade de algarismos disponível
na representação
A base 10 é usualmente empregada



Mas, não é a única
Outros exemplos: pedimos uma dúzia de ovos (12),
marcamos o tempo em minutos e segundos (60),
etc.
Computadores utilizam a base 2

Sistema binário
Exemplos de Bases

Algumas bases importantes na computação





Em geral, uma base b terá b algarismos


Base 2  0 e 1
Base 8  0 a 7
Base 10  0, 1, 2, 3, 4, 5, 6, 7, 8 e 9
Base 16  0 a 9, A, B, C, D, E e F
Variando entre 0 e (b - 1)
A representação 125,38 (base 10)

1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2
Identificando a Base

Em qual base está o número 9B3?


Em qual base está o número 11?



Resposta óbvia, pois o algarismo B só existe na
base 16 (hexadecimal)
Pode estar em qualquer base conhecida
Portanto, a base deve ser especificada
Para diferenciar as bases, utiliza-se um número
situado à direita inferior

Exemplo: 112
Representação de um Número

Representamos um número N (de n casas),
numa dada base b, como segue


Parte inteira


Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 +
a-2.b-2 + .... + a-n.b-n
an.bn + .... + a2.b2 + a1.b1 + a0.b0
Parte fracionária

a-1.b-1 + a-2.b-2 + .... + a-n.b-n
Quantidade de Algarismos

O maior número que pode ser representado
na base 10 usando 3 algarismos é 999


O maior número que pode ser representado
na base 2 usando 8 algarismos é 255


103 - 1 = 999
28 - 1 = 255
Generalizando, o maior número inteiro N
que pode ser representado em uma dada
base b com n algarismos é N = bn – 1
Resumo:
Regras do Sistemas de Numeração

A base B indica à quantidade de algarismos
distintos que podem ser utilizados

O algarismo mais a direita tem peso um



O algarismo imediatamente a sua esquerda tem
peso B
O seguinte B2, depois B3 ...
O valor de um número é determinado pela
soma dos valores de cada algarismo
multiplicado com seu peso
Representação Binária
Linguagem do Computador

Os computadores utilizam o sistema
binário


Dígito binário são chamados bit


Todas as informações armazenadas ou
processadas no computador são
representadas por 0 e 1
Do inglês, binary digit
Um bit pode assumir os valores 0 ou 1

Analogia à tensões elétricas / sinais
eletrônicos
Sistema do Computador

Um Byte é um conjunto de oito bits

Dados são armazenados na base binária,
não na decimal





0 = 00000000
1 = 00000001
2 = 00000010
255 = 11111111
Na base 2, o número "10" vale dois

102 = 210
Representação Binária
Referências



Joseana Macêdo Fechine, Introdução à
Computação, Departamento de Sistemas e
Computação, Universidade Federal de Campina
Grande
INFOWESTER, Mouses: funcionamento, tipos e
principais características, disponível em
http://www.infowester.com/mouse.php
Rui Mano, Organização de Computadores
http://wwwusers.rdc.puc-rio.br/rmano/index.html
Download

Aula 03