Prof. Yandre Maldonado
Fundamentos da Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA
Prof. Yandre Maldonado -1
Prof. Yandre Maldonado e Gomes da Costa
yandre@din.uem.br
Prof. Yandre Maldonado
O Computador
• Evolução tecnológica:
– Válvulas → primeira geração – Transistor → segunda geração
– Circuitos integrados (vários transistores)
Prof. Yandre Maldonado -2
– Circuitos integrados (vários transistores)
→ terceira geração – Integração em alta escala (VLSI)
→ quarta geração
Prof. Yandre Maldonado
O Computador
Prof. Yandre Maldonado -3
Prof. Yandre Maldonado
O Computador
• Estrutura:
Unidade Lógica e Aritmética
Prof. Yandre Maldonado -4
Unidade de Entrada
UCP
Memória (Principal) Unidade de
Controle
Unidade de Saída
Prof. Yandre Maldonado
O Computador
• Unidade de Entrada: codifica informações
introduzidas por dispositivos de entrada para que a UCP possa entender;
• Memória: armazena dados e o programa em execução;
Prof. Yandre Maldonado -5
execução;
• Unidade Lógica e Aritmética: realiza cálculos aritméticos e manipulação de dados;
• Unidade de Controle: responsável pelo trafego dos dados:
• UE → MEM
• MEM → ULA → MEM
• MEM US
Prof. Yandre Maldonado
O Computador
• Unidade de Saída: converte os dados processados
para um formato que possa ser exibido em dispositivos de saída.
• Hardware: parte física do computador. Formada pelos
Prof. Yandre Maldonado -6
• Hardware: parte física do computador. Formada pelos circuitos eletrônicos, dispositivos mecânicos, magnéticos e etc.
• Software: os programas que executam sobre o hardware.
HARDWARE + SOFTWARE = COMPUTADOR
Prof. Yandre Maldonado
Software
• Programa em processamento no computador (Fedeli et al., 2003);
• Softwares básicos:
Hardware Software Usuário
Prof. Yandre Maldonado -7
• Softwares básicos:
• Programas que definem o padrão do equipamento, sendo necessários para o funcionamento do computador.
– Tipos:
• sistema operacional
• ambiente operacional
• linguagens de programação (tradutores)
Prof. Yandre Maldonado
• Sistema operacional: programa ou conjunto de programas cuja função é gerenciar os recursos do sistema;
Software
Prof. Yandre Maldonado -8
Prof. Yandre Maldonado
• Sistemas operacionais: programa, em geral, fornecidos pelo fabricante do equipamento.;
• Constituição do sistema operacional: programas escritos em linguagem de programação de baixo nível;
Software
Prof. Yandre Maldonado -9
• Exemplos de sistemas operacionais:
• Linux;
• Windows;
• Mac-OS;
• Android...
Prof. Yandre Maldonado
• Ambiente operacional:
• ambientes que adicionam recursos ao sistema operacional para permitir uma interface gráfica com o usuário, ou seja, é um sistema operacional com recursos gráficos.
Software
Prof. Yandre Maldonado -10
• Exemplo: todas as versões do Windows e Linux incluem um ambiente operacional.
• Linguagens de programação:
• conjunto de símbolos (vocabulário) e regras (gramática) que especificam um padrão sintático para estabelecer a comunicação entre usuários (programadores) e computador.
– Divisão:
• linguagem de baixo nível
• linguagem de alto nível
linguagem de máquina linguagem simbólica
Prof. Yandre Maldonado
• Linguagem de máquina:
• baseada em código binário, em 0s e 1s. Interpretada diretamente pelo computador.
– Exemplo:
Software
Prof. Yandre Maldonado -11
– Exemplo:
Linguagem de máquina Significado
0010 0001 1110 carrega no registrador 1 o conteúdo da posição de memória 14 0010 0010 1111 carrega no registrador 2 o conteúdo da posição de memória 15 0001 0001 0010 soma o conteúdo do registrador 1 com o conteúdo do registrador
2 e coloca no registrador 1
0011 0001 1111 armazena o conteúdo do registrador 1 na posição de memória 15
Prof. Yandre Maldonado
• Linguagem de baixo nível simbólica:
• simplificação da linguagem de máquina. Faz uso de códigos mnemônicos para expressar as instruções.
Software
Prof. Yandre Maldonado -12
– Exemplo: Assembly
Linguagem de máquina Linguagem simbólica
0010 0001 1110 LOAD R1, val1
0010 0010 1111 LOAD R2, val2
0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
Prof. Yandre Maldonado
• Linguagem de alto nível:
• combinação de um conjunto de símbolos de acordo com certas regras de sintaxe para expressar uma seqüência de operações de máquina. Linguagem que não exige conhecimento do código de máquina.
Software
Prof. Yandre Maldonado -13
– Exemplos: FORTRAN, ALGOL, COBOL, BASIC, PASCAL, LOGO, C, LISP, PROLOG, Phyton etc.
Linguagem de máquina Linguagem simbólica Linguagem de alto nível 0010 0001 1110 LOAD R1, val1 val2 = val1 + val2
0010 0010 1111 LOAD R2, val2 0001 0001 0010 ADD R1, R2
Prof. Yandre Maldonado
Algoritmos
• Definições:
“Redação que descreve de forma lógica e sem
ambigüidades, uma seqüência de passos (ações) para se resolver um problema que tenha um
Prof. Yandre Maldonado -14
para se resolver um problema que tenha um comportamento padrão.”
Franco e Polidório
“Uma seqüência de passos que visam atingir um objetivo bem definido.”
Forbellone e Eberspächer
Prof. Yandre Maldonado
Algoritmos
“É a descrição de um padrão de comportamento,
expressado em termos de um repertório bem definido e finito de ações primitivas, das quais damos por certo que elas podem ser executadas.”
Prof. Yandre Maldonado -15
Guimarães e Lages
“Descrição de um conjunto de comandos que,
obedecidos, resultam numa sucessão finita de ações.”
Farrer e outros
Prof. Yandre Maldonado
Algoritmos
• O algoritmo deve ensinar a resolver o problema, e não trazer a solução.
– Exemplo: receita de bolo;
• Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito,
Prof. Yandre Maldonado -16
estado inicial, após um período de tempo finito, produz um resultado final previsível e bem
definido.
• Objetivo: solução do problema.
Prof. Yandre Maldonado
Algoritmos
• Aspecto lógico: ordenar o pensamento.
– Organização seqüencial das ações pertinentes à solução de um problema;
• Exemplo: o bolo só pode ser levado ao forno depois que a massa estiver pronta.
Prof. Yandre Maldonado -17
massa estiver pronta.
– Lógica no dia-a-dia:
• Todo mamífero é animal.
• Todo cavalo é mamífero.
• Portanto, todo cavalo é animal.
Prof. Yandre Maldonado
Algoritmos
• Padrão de comportamento: uma seqüência de ações para resolver um problema.
– Exemplos:
• Trocar uma lâmpada (problema cotidiano):
– pegue uma escada;
– posicione-a sob a lâmpada;
Prof. Yandre Maldonado -18
– posicione-a sob a lâmpada;
– busque uma lâmpada nova;
– suba na escada;
– retire a lâmpada velha;
– coloque a lâmpada nova.
• Calcular a área de um retângulo (problema matemático):
– obtenha a medida da base do retângulo;
– obtenha a medida da altura do retângulo;
– multiplique a medida da base pela medida da altura.
Prof. Yandre Maldonado
Algoritmos
• Aspecto estático e aspecto dinâmico:
– Estático: não depende do tempo, mas do espaço físico onde o algoritmo está sendo escrito;
– Dinâmico: como se comporta a execução de cada ação do algoritmo com o passar do tempo.
Prof. Yandre Maldonado -19
ação do algoritmo com o passar do tempo.
“Todo algoritmo deve produzir resultados corretos, e ser finito tanto estática quanto dinamicamente.”
Prof. Yandre Maldonado
Algoritmos
• Ambigüidade: relacionada à sintaxe e semântica de linguagens naturais.
– “O artista produz formas perfeitas.”
• Linguagens naturais são muito extensas,
Prof. Yandre Maldonado -20
• Linguagens naturais são muito extensas, possuindo ambigüidade;
– Linguagem Natural X Linguagem Computacional
Prof. Yandre Maldonado
Algoritmos
• Nos algoritmos, devemos utilizar construções
Linguagem Computacional
Linguagem Algorítmica
Prof. Yandre Maldonado -21
• Nos algoritmos, devemos utilizar construções que executarão uma ação específica bem
definida;
• Uma linguagem algorítmica deve ter sintaxe rígida e semântica bem definida;
• Toda linguagem possui sintaxe e semântica
.
Prof. Yandre Maldonado
Algoritmos
• Sintaxe: dita as regras de como as
sentenças e cada um de seus elementos devem ser construídos corretamente;
• Semântica: se preocupa com o significa
Prof. Yandre Maldonado -22
• Semântica: se preocupa com o significa
de uma sentença construída.
Prof. Yandre Maldonado
Algoritmos
• A sintaxe por si só não define completamente uma linguagem.
– Exemplo:
• “Descoloridas idéias verdes sonham furiosamente”
Prof. Yandre Maldonado -23
• “Descoloridas idéias verdes sonham furiosamente”
(Chomsky)
– Por outro lado:
• “Nóis foi, mais já vortemo”
Prof. Yandre Maldonado
• Todo algoritmo deve ser descrito em alguma linguagem;
• Assim, o algoritmo deve respeitar um padrão sintático;
Algoritmos
Prof. Yandre Maldonado -24
padrão sintático;
• Primeira linguagem: Pascal;
– Compilador a ser utilizado: Pascalzim
Prof. Yandre Maldonado
• Estrutura básica do algoritmo em Pascal:
Algoritmos
program teste;
var
x: integer;
Identificação do algoritmo Bloco de declarações: variáveis
Prof. Yandre Maldonado -25
x: integer;
const
nome = ‘Fulano’;
begin
instruções...
end.
Bloco de declarações: variáveis
Bloco de declarações: constantes
Bloco de comandos
Prof. Yandre Maldonado
• Um primeiro algoritmo em Pascal:
Algoritmos
Program Primeiro_programa;
Begin
Prof. Yandre Maldonado -26
Begin
write('Engenharia de Produção');
End.
Prof. Yandre Maldonado
• Algoritmos geralmente descrevem algum processamento de dados:
Algoritmos
Dados de Processamento Dados de
Prof. Yandre Maldonado -27
• Estes dados precisam ser representados (descritos) nos algoritmos;
Dados de Entrada
Dados de Saída Processamento
(Computador)
Prof. Yandre Maldonado
Algoritmos
• Um algoritmo para fins computacionais é a descrição de ações que manipulam objetos em função do tempo.
– Objetos descrevem o estado computacional;
Prof. Yandre Maldonado -28
– Objetos descrevem o estado computacional;
– Objetos têm função específica;
– Ações são direcionadas aos objetos;
– Objetos são definidos como parte do programa;
– Estados diferentes requerem objetos diferentes.
* Objetos frequentemente serão chamados de variáveis.
Prof. Yandre Maldonado
Algoritmos
• A cada objeto é associado um nome que
identifica este objeto ao longo da programação.
Este nome é chamado identificador.
• De forma geral, podemos dizer que um
Prof. Yandre Maldonado -29
• De forma geral, podemos dizer que um
identificador está associado à uma célula de memória.
• O termo variável é freqüentemente utilizado como sinônimo de identificador.
Prof. Yandre Maldonado
Algoritmos
• Em geral, as linguagens de programação exigem nomes de identificadores com as seguintes característica:
– Use somente letras e números;
Prof. Yandre Maldonado -30
– O primeiro caracter do nome deve ser uma letra;
– Não é permitido o uso de caracteres especiais.
• Exemplos válidos: ImpostoDeRenda, F1, soma, produto, desconto, SalarioHora.
• Exemplos inválidos: 1f, Imposto-renda, salario hora.
Prof. Yandre Maldonado
Algoritmos
• Atributos (características) de um objeto:
– Nome;
– Célula de memória;
– Valor associado;
Prof. Yandre Maldonado -31
– Tipo: define a categoria dos dados que podem ser armazenados no objeto.
conteúdo (valor armazenado na célula de memória)
Nome identificador do objeto
célula de memória
Prof. Yandre Maldonado
Algoritmos
• O tipo:
– especifica uma classe de valores que podem ser armazenados na célula de memória
associada ao identificador;
Prof. Yandre Maldonado -32
associada ao identificador;
– define as operações válidas sobre o identificador;
Prof. Yandre Maldonado
Algoritmos
• Tipo de Dado
– Um identificador armazena um único dado num instante, mas este dado não pode ser qualquer um;
Prof. Yandre Maldonado -33
– Os objetos serão classificados segundo um tipo;
– Os dados podem ter estruturas físicas diferentes;
– As células de memória do computador
precisam ser compatíveis com o tipo de dado que vão armazenar;
Prof. Yandre Maldonado
Algoritmos
• Devemos informar ao computador qual o tipo de dado que vamos armazenar;
• Esta informação determina quantas células de memória serão necessárias para
Prof. Yandre Maldonado -34
de memória serão necessárias para armazenar o dado;
• Esta informação define quais serão as
operações possíveis de se aplicar sobre os dados;
– Exemplo: em um dado numérico pode-se aplicar uma operação aritmética.
Prof. Yandre Maldonado
Algoritmos
• Os tipos de dados podem variar de uma linguagem para outra. No entanto, existem dois tipos básicos:
– Tipos simples;
Prof. Yandre Maldonado -35
– Tipos simples;
– Tipos estruturados (estudados mais adiante);
Tipos de Dados Simples
Numérico Caracter Lógico
Prof. Yandre Maldonado
Algoritmos
• Os Tipos de Dados Numéricos são
divididos basicamente em dois grandes conjuntos:
– Inteiros;
Prof. Yandre Maldonado -36
– Inteiros;
– Reais;
• Os inteiros podem ser positivos,
negativos ou nulos, mas não possuem um
componente decimal;
Prof. Yandre Maldonado
Algoritmos
• Os inteiros são compatíveis com os reais, mas os reais não são compatíveis com os inteiros;
• Assim, um objeto real pode receber um valor
Prof. Yandre Maldonado -37
• Assim, um objeto real pode receber um valor inteiro, mas um objeto inteiro não pode
receber um valor real;
• Declaração:
– Pascal: integer;
– C: int;
Prof. Yandre Maldonado
Algoritmos
• Os reais podem ser positivos,
negativos ou nulos, e possuem sempre um componente decimal;
• Exemplos: 2,34; 0,0; -214,123;
Prof. Yandre Maldonado -38
• Exemplos: 2,34; 0,0; -214,123;
• Computacionalmente, existem muitas
diferenças entre o armazenamento de
números inteiros e números reais;
Prof. Yandre Maldonado
Algoritmos
• Os números inteiros consomem menos espaço de armazenamento em memória;
• Declaração do tipo real:
– Pascal: real;
Prof. Yandre Maldonado -39
– Pascal: real;
– C: float;
Prof. Yandre Maldonado
Algoritmos
• Os tipos de dados não numéricos:
– Caracter: formado pelas letras (de A a Z, e de a a z), dígitos (de 0 a 9) e caracteres
especiais (~, ., ?, >, <, ...);
Prof. Yandre Maldonado -40
especiais (~, ., ?, >, <, ...);
– A diferença entre caracteres e dados numéricos estão na forma de
armazenamento, e nas operações legais permitidas sobre os mesmos;
• Exemplo: operações aritméticas sobre os dados numéricos.
Prof. Yandre Maldonado
Algoritmos
• Para diferenciar um caracter de um
identificador ou de um dado numérico, utilizaremos apóstrofes. Assim:
Prof. Yandre Maldonado -41
– 8 é um dado numérico;
– ‘8’ é um caracter;
– A é um identificador;
– ‘A’ é um caracter
Prof. Yandre Maldonado
Algoritmos
• Objetos declarados como do tipo caracter poderão armazenar um único caracter;
• Para armazenar uma seqüência de caracteres será utilizada a estrutura cadeia de caracteres,
Prof. Yandre Maldonado -42
será utilizada a estrutura cadeia de caracteres, que consiste num tipo de dado estruturado;
– Exemplo:
• ‘Z’ é um caracter;
• ‘ANA’ é uma cadeia de caracteres;
• Declaração do tipo caracter:
– Pascal e C: char;
Prof. Yandre Maldonado
Algoritmos
• Tipo Lógico: os valores lógicos podem assumir uma entre duas possibilidades (verdadeiro ou falso);
– Só poderá armazenar um destes dois valores;
Prof. Yandre Maldonado -43
– Só poderá armazenar um destes dois valores;
• Muito utilizados em controle do fluxo lógico do algoritmo;
– Pascal: boolean;
– C: não definido;
Prof. Yandre Maldonado
Algoritmos
• Declaração do tipo do identificador (objeto): em Pascal.
var
Prof. Yandre Maldonado -44
var
identificador: tipo;
Prof. Yandre Maldonado
Algoritmos
• Caso haja mais de uma variável do mesmo tipo:
var
identificador1, identificador2: tipo;
Prof. Yandre Maldonado -45
• Se houver identificadores de tipos diferentes (inteiro,real, lógico):
var
i1, i2, i3: integer;
r1, r2: real;
l1: boolean;
Prof. Yandre Maldonado
Algoritmos
• Escolha do tipo de um identificador: deve-se conhecer bem a solução do problema.
– Exemplos de inteiros:
• número de pessoas;
• um número par ou ímpar;
Prof. Yandre Maldonado -46
• um número par ou ímpar;
• idade de uma pessoa;
• quantidade de objetos;
– Exemplos de reais:
• o peso de uma pessoa;
• um percentual;
• nota de uma avaliação;
• média;
• preço de um produto;
Prof. Yandre Maldonado
Algoritmos
• Situações de dúvida
– Exemplos:
• raíz quadrada de um número;
• divisão entre dois números inteiros;
Prof. Yandre Maldonado -47
• divisão entre dois números inteiros;
• Quando houver alguma possibilidade de um identificador numérico receber um valor não inteiro, deve ser declarado como real.
Inteiros Reais
Prof. Yandre Maldonado
• Valores dos dados
– os dados são valores que são armazenados em células de memória e que são acessados (ao longo do algoritmo) por referêcia aos
identificadores;
Algoritmos
Prof. Yandre Maldonado -48
– assim, se tivermos os identificadores i, r e l, para objetos do tipo inteiro, real e lógico
respectivamente, e atribuírmos os valores 100;
3,14; e falso, teríamos a seguinte configuração:
– Estes são os valores exibidos quando se utiliza a instrução escreva.
100 3,14 falso
i r l
Prof. Yandre Maldonado
Algoritmos
• Argumentos de Entrada e Saída
– Entrada: objetos cujos valores são conhecidos em tempo de execução;
• permitem um comportamento mais genérico
Prof. Yandre Maldonado -49
• permitem um comportamento mais genérico
dentro do caráter específico do comportamento padrão;
– Saída: objetos que armazenam a solução objetivo de um problema;
Prof. Yandre Maldonado
Algoritmos
• Exemplo:considerando a figura mostrada acima (um retângulo), faça um algoritmo que calcule a área da
h
b
Prof. Yandre Maldonado -50
retângulo), faça um algoritmo que calcule a área da mesma.
• Neste problema existem três valores (estados) a serem representados:
– Altura do retângulo (h);
– Largura (ou base) do retângulo (b);
– Área do retângulo.
Dados de Entrada Dados de Saída
Prof. Yandre Maldonado
• Solução em Pascal:
Algoritmos
program retangulo;
var
h, b, area: real;
Prof. Yandre Maldonado -51
h, b, area: real;
begin
write ('Digite um valor para a altura do retângulo: ');
read (h);
write ('Digite um valor para a base do retângulo: ');
read (b);
area := h*b;
write ('Valor da área: ', area);
end.
Prof. Yandre Maldonado
Algoritmos
• Nesta solução, os valores de a e de h só serão
conhecidos em tempo de execução, e deverão ser fornecidos pela pessoa que executa o algoritmo.
• Assim, a preocupação não é com o valor do resultado produzido, e sim com a produção de resultados corretos.
Prof. Yandre Maldonado -52
produzido, e sim com a produção de resultados corretos.
• Questão 01: Qual é o valor final do objeto área
informado pelo descrito algoritmo no slide anterior?
Prof. Yandre Maldonado
Algoritmos
• Exemplo: no algoritmo para calcular a área de um triângulo retângulo, descrito abaixo, os objetos base e altura são
argumentos de entrada, enquanto o objeto area é argumento de saída.
program triangulo;
var 1
2 3
Prof. Yandre Maldonado -53
var
base, altura, area: real;
begin
write ('Digite um valor para a altura do retângulo: ');
read (altura);
write ('Digite um valor para a base do retângulo: ');
read (base);
area := altura*base/2;
write ('Valor da área: ', area);
3 4 5 6 7 8 9 10 11 12
Prof. Yandre Maldonado
Algoritmos
• Teste de mesa: tabela que demonstra os
resultados obtidos ao longo da execução de um algoritmo.
– Exemplo: execução do algoritmo do slide 26 para entrada dos valores 3 para o objeto base e 5 para o objeto altura;
Prof. Yandre Maldonado -54
dos valores 3 para o objeto base e 5 para o objeto altura;
Linha Base Altura Area
8 - 5 -
10 3 5 -
11 3 5 7.5
12 3 5 7.5
Prof. Yandre Maldonado
Algoritmos
• Escreva um algoritmo que calcule o diâmetro, a área e a circunferência de um círculo, sabendo que o único dado disponível é o seu raio.
– Diâmetro = 2 * Raio – Área = Pi * Raio * Raio
– Circunferência= 2 * Pi * Raio
Prof. Yandre Maldonado -55
– Circunferência= 2 * Pi * Raio
• Ler dois números inteiros e imprimir a soma.
• Entrar com dois números inteiros e imprimir a média aritmética.
• Criar um algoritmo que solicite e imprima os valores da diagonal maior, diagonal menor e calcule a área de um losango.
– Fórmula: (diagonal maior * diagonal menor) dividido por 2
• Elaborar um algoritmo para calcular e apresentar o volume de uma lata de óleo, utilizando a fórmula: VOLUME = 3.14159 * (R*R) * ALTURA.
Prof. Yandre Maldonado
Algoritmos
• Escreva um programa em Pascal que
pergunte o nome a altura (em metros) e a massa (em Kg) do usuário. Em seguida o programa deverá exibir uma mensagem
Prof. Yandre Maldonado -56
programa deverá exibir uma mensagem dizendo o nome do usuário e a sua
densidade corporal.
– Densidade = peso / altura2
Prof. Yandre Maldonado
Algritmos
• Operadores Aritméticos
I
*
Operador Significado Prioridade
multiplicação
Prof. Yandre Maldonado -57
• As operações são realizadas em uma expressão de acordo com a ordem de prioridade. Quando houver empate entre operações, elas serão realizadas da esquerda para a direita.
+
divisão adição
- subtração II
II I I
* /
multiplicação
Prof. Yandre Maldonado
Algoritmos
Expressão Matemática Expressão Algoritmica
2.a+b 2*a+b
a*x^2 a.x2
Expressões Aritméticas
Prof. Yandre Maldonado -58
• Os parênteses quebram o ordem de prioridade natural.
a a/2+b
2 +b
2+ba
a/2+b a/(2+b)
errado certo
Prof. Yandre Maldonado
Algoritmos
• Quando houverem parênteses aninhados, a prioridade será do mais interno.
a / (a + b) - (2 * (b + c))
Prof. Yandre Maldonado -59
a / (a + b) - (2 * (b + c))
1 2
3 4
5
Prof. Yandre Maldonado
Algoritmos
• Operadores Relacionais
– Comparação entre objetos (ou entre um objeto e um valor) do mesmo tipo;
– O resultado será sempre do tipo lógico (V ou F);
Operador Significado Exemplo de uso
Prof. Yandre Maldonado -60
Operador Significado Exemplo de uso
> A>B, 4>3, C>3
=
Diferente de Igual a
<= Menor ou igual a B*A<=0 A=0 A+B<>C
Menor que 2*A<B
Maior que
<
<>
>= Maior ou igual a ‘a’>=‘b'
Prof. Yandre Maldonado
Algoritmos
• O operador relacional perde em prioridade para os operadores aritméticos;
• O operador relacional é binário, isto é, ele deve envolver um operando a sua esquerda e um a
Prof. Yandre Maldonado -61
envolver um operando a sua esquerda e um a sua direita.
• Assim, a expressão -3 < X <=2 não é válida, pois nela X está relacionando-se com outros dois operandos. Para isto, teremos que utilizar um operador lógico.