Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila - Introdução A Computação PDF
Apostila - Introdução A Computação PDF
Maceió, 2009
SUMÁRIO
LISTA DE FIGURAS
LISTA DE TABELAS
INTRODUÇÃO À COMPUTAÇÃO
1 Introdução
Este primeiro capítulo tem por objetivo motivar o leitor para o estudo do tema
“Introdução à Ciência da Computação”, apresentar um breve histórico a respeito do
desenvolvimento dos computadores, a forma como esses são organizados e a
explicação de alguns termos técnicos.
1.1 Motivação
Pode-se dizer que o estudo da introdução à computação é o primeiro passo em
direção ao conhecimento do mundo da tecnologia e funcionamento dos computadores.
O uso de computadores no dia-a-dia tem sido cada vez mais freqüente. Em todas
as áreas de estudo, pesquisa e trabalho eles são essenciais. Veja um exemplo simples
que serve para ilustrar esta afirmação.
Considere que se deseja fazer um levantamento para avaliar qual o melhor aluno
do ano de 2005 em uma determinada universidade. Naturalmente, poderíamos pegar
as cadernetas escolares de todos os alunos, calcular a média de suas notas e verificar
qual aluno obteve a maior média. Isso representa um trabalho muito laborioso, pois a
quantidade de informações (dados) a serem levantados é extremamente grande.
Mas e se tivermos um computador? Como ele pode ser útil para resolver o nosso
problema? Simples. É necessário apenas garantir que todos os dados dos alunos
estejam armazenados em um computador e que se possa usar um programa
computacional para fazer os cálculos desejados. Em questão de segundos poderíamos
ter a resposta desejada.
Mas qual programa usar? Existem duas alternativas: uma é comprar um
programa comercial (e existem vários) que possa ser utilizado para resolver o
problema. A outra é desenvolvermos o nosso próprio programa.
O presente curso tem com objetivo fornecer uma base teórica e prática para
permitir o aprendizado, capacitando o leitor a desenvolver programas computacionais
para resolver os mais diversos problemas do nosso cotidiano, principalmente aqueles
relacionados à Engenharia.
8
Figura 1 – Stonehenge
9
Ábaco chinês
Ábaco russo
Ábaco japonês
Figura 2 – Exemplos de ábacos
1.3.1 Arquitetura
Esta seção trata da estrutura de um computador digital.
O esquema de um computador digital pode ser representado pela figura 4.
Memória
Unidade Lógica
e Aritmética
CPU
1.3.1.2 Memória
É o local físico capaz de armazenar os dados e também os programas que irão
manipulá-los. Também conhecida como memória RAM (Randon Access Memory).
14
2.2 Algoritmos
2.2.1 Conceituação
Algoritmo é uma seqüência ordenada e sem ambigüidades de passos finitos que
visam atingir um objetivo bem definido e, conseqüentemente, levam à solução de um
problema.
Algoritmo não é a solução do problema. Algoritmo é o conjunto de passos ou
ações (caminhos) que levam à solução de um dado problema.
Em um algoritmo é importante salientar que:
9 Deve descrever exatamente as instruções que devem ser executadas e em que
seqüência.
9 A ordem dos passos deve ser precisamente determinada.
9 Eficiente: resolve o problema com um mínimo de recursos.
9 Eficaz: consegue resolver o problema em qualquer situação. Todas as situações
de exceção que possam alterar o comportamento do algoritmo devem ser
especificadas e tratadas.
Exemplo 1:
1 – Ler a prova;
18
2 – Pegar a caneta;
3 – Enquanto houver questão em branco e enquanto o tempo não terminou
faça
4 – Entregar a prova.
Se um comando de um refinamento for um tanto vago, ele poderá, por sua vez,
ser desdobrado em novos comandos, produzindo-se o refinamento de um refinamento,
e assim sucessivamente.
Linguagem de Linguagem de
Programação Máquina
Compilador
Figura 5 – Compilador
Linguagem
Linguagem Ano Criador Objetivo
originária
FORTRAN 1954-57 J. Backus Computação numérica
ALGOL 60 1958-60 Comitê FORTRAN Computação numérica
Processamento
COBOL 1959-60 Comitê
de dados de negócios
LISP 1956-62 J. McCarthy Computação simbólica
J. Kemeny
BASIC 1964 FORTRAN Educacional
and T. Kurtz
SIMULA 67 1967 O. -J. Dahl ALGOL 60 Simulação
Algol 68 1963-68 Comitê ALGOL 60 Objetivos gerais
Pascal 1971 N. Wirth ALGOL 60 Educacional
PROLOG 1972 A. Colmerauer Inteligência artificial
C 1972 D. Ritchie Algol 68 Programação de sistemas
Pascal atual 1975 P. Brinch Hansen Pascal Programação concorrente
Pascal Objetivos gerais
Ada 1979 J. Ichbiah
SIMULA 67 Sistemas embutidos
SIMULA 67
Smalltalk 1971-80 A. Kay Computação pessoal
LISP
C
C++ 1984 B. Stroutrup Objetivos gerais
SIMULA 67
21
Linguagem
Linguagem Ano Criador Objetivo
originária
Eiffel 1988 B. Meyer SIMULA 67 Objetivos gerais
Java 1995 SUN Microsystems C++ Computação em rede
• >>
• <Enter>
Exemplo 01:
>> 5 * 3 + 4
ans = 19
Exemplo 02:
>> a = 5
>> b = 3
>> c = 4
>> a * b + c
ans = 19
>> a = 5;
>> b = 3;
>> c = 4;
>> a*b + c
ans = 19
Limpando a tela
>> clc
Verificação de variáveis
25
>> who
ans b
a c
Visualização de variáveis
>> a
a=5
Outros comandos
Comentários
• Usar o caractere %
Exemplo 08:
Configuração de Janelas
• Menu View
26
• Comando Clear
o Apagar uma variável específica;
o Apagar todas as variáveis.
Exemplo 9:
>> clear b
Erro
>> b
>> clear
Comandos Save/Open
Arquivos M de Comandos
% arquivo M – exemplo
a = 4;
b = 5;
c = 3;
a*b+c
Observações importantes:
Exemplo 11:
RUN
a = input(‘a: ’);
b = input(‘b: ’);
c = input(‘c: ’);
d = a*b + c;
disp(d);
3 Tópicos Preliminares
3.2 Constantes
Um dado é dito constante quando ele não sofre alterações durante o decorrer do
tempo, ou seja, seu valor é constante desde o início até o final da execução do
programa computacional.
Uma constante pode ser um número, um valor lógico ou uma seqüência de
caracteres quaisquer com algum significado para o problema em estudo. Conforme o
seu tipo, a constante é classificada como sendo numérica, lógica ou literal.
Nota-se que um numeral escrito como literal é considerado como uma seqüência
de dígitos, e não como uma constante numérica.
3.3 Variáveis
Variável é um espaço (endereço) na memória principal do computador usada
para armazenar um determinado tipo de dado. A uma variável, associa-se um nome
que serve como referência ao dado armazenado nesse espaço na memória.
O conteúdo de uma variável pode ser de diversos tipos: numérico (inteiro e real),
caractere, lógico, e outros. Normalmente, o estudo de algoritmos trabalha com os tipos
acima citados.
Na maioria das linguagens de programação, as variáveis precisam ser
explicitamente declaradas. Na declaração de uma variável, o seu tipo e seu nome
devem ser obrigatoriamente especificados.
Quando uma declaração de variável é encontrada no programa, reserva-se um
espaço na memória para armazenar um dado tipo da variável e associa-se o nome da
variável a este espaço.
Deve-se observar que na linguagem MATLAB, não existe uma diferença entre
números inteiros e reais. Eles são tratados de uma mesma forma como variáveis
numéricas. Além disso, o MATLAB não requer a declaração prévia dessas variáveis. Isso
é feito implicitamente quando a variável está sendo usada pela primeira vez no
programa computacional.
30
Exemplo 03:
Erro: function é uma palavra-chave
>> function = 8
adição subtração
multiplicação divisão
potenciação radiciação
Soma +
Subtração –
Multiplicação *
Divisão /
Além destes, existem outros operadores importantes que podem ser usados na
elaboração de programas computacionais.
Potenciação ^
Resto de divisão mod(x,y)
Radiciação sqrt(x)
Exemplo 06:
2^3
8
Exemplo 07:
mod(5,3)
2
Exemplo 08:
sqrt(9)
3
Exemplo 08:
>> c = 5 + 3;
Ou
>> a = 3;
>> b = 1;
>> c = 3 + a*b;
Exemplo 09:
>> a = ‘teste’
Erro: não é uma expressão
>> b = a + 2
3.4.2 Prioridades
Existe uma ordem que define a precedência (hierarquia) entre os operadores
aritméticos, como pode ser visto na tabela abaixo:
Exemplo 10:
5 + 9 + 7 + 8/4
5+9+7+2
23
Exemplo 11:
1 + 5 + (2 + 3) * 4
1+5+5*4
1 + 5 + 20
26
Cuidado!
Exemplo 12:
2 * 4 == 24 / 3
8 == 8
1
Exemplo 13:
>> vf = (4*5+3) + 4 == 20/4 + 15;
>> vf
vf = 0
Exemplo 14:
A = 3;
B = 2;
Expressão Relacional
(A + B) > 3
e – para a conjunção
ou – para a disjunção
não – para a negação
35
& e
| ou
~ não
Negação
A Não A
Falso Verdadeiro
Verdadeiro Falso
Conjunção
A B A&B
F F F
F V F
V F F
V V V
Disjunção Não-Exclusiva
A B A ou B
F F F
36
F V V
V F V
V V V
p q peq p ou q não p
F F F F V
F V F V V
V F F V F
V V V V F
Exemplo 15:
2 < 5 & 15/3 == 5
v&v
v
2 < 5 | 15/3 == 5
v|v
v
2 < 5 | (~(15/3==5))
v | (~v)
v| f
v
3.5.2 Prioridades
É possível ter mais de um operador lógico na mesma expressão. Em alguns
casos, conforme os valores envolvidos, a ordem em que são efetuadas as operações
lógicas afeta o resultado final. Assim, igualmente ao que acontece nas expressões
aritméticas, também existe uma relação de prioridade entre os operadores lógicos. A
37
Prioridade Operações
1a aritmético
2a relacional
3a não
4a e
5a ou
Exemplo 16:
>>txt=’Resultado’;
>>txt1=[txt ‘ da Prova’]; % Concatenação horizontal
>>txt1=strcat(txt,' da Prova')
txt1 =
Resultado da Prova
38
Exemplo 17:
>>txt=’Resultado’;
>>txt1=[txt; ‘ da Prova’] % Concatenação vertical
A concatenação vertical com sinal ‘;’só foi possível porque as duas cadeias de
caracteres possuem o mesmo tamanho.
Cadeias de caracteres com números diferentes de letras não podem ser
concatenadas com ‘;’:
Exemplo 18:
>> txt1=[txt; 'da Prova']
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
Exemplo 19:
>> txt1=strvcat(txt, 'da Prova')
txt1 =
Resultado
da Prova
Exemplo 20:
>> numel(txt)
ans =
9
39
Exemplo 21:
>> txt(1)
ans =
R
>> n=numel(txt);
>> txt(n)
ans =
o
Exemplo 22:
>> txt(1,1:2)
ans =
Re
>> txt(1,3:5)
ans =
sul
>> txt(1,6:7)
ans =
ta
>> txt(1,8:9)
ans =
do
Exemplo 24:
>> A = 5;
>> B = 4;
>> C = A+mod(A,B);
onde x1, x2, x3, ..., xn são variáveis, lidas na mesma linha.
Exemplo:
leia (A);
leia (altura, peso);
Exemplo 1
prova_escrita=8;
prova_pratica=9;
media=(prova_escrita+prova_pratica)/2
Exemplo 2
media=(prova_escrita+prova_pratica)/2
>> prova_escrita=8;
>> prova_pratica=9;
>> ex2
media =
8.5000
Exemplo 3
prova_escrita=input('Prova escrita= ');
prova_pratica=input('Prova pratica= ');
media=(prova_escrita+prova_pratica)/2
Para esse último caso, o comando “input” é utilizado para criar a variável. A
forma do comando “input” é:
No MATLAB, dois comandos são muito usados para a saída de dados: “disp” e
“fprintf”. O comando “disp” mostra a saída na tela, enquanto que o comando “fprintf”
pode ser usado para mostrar a saída na tela ou salvar a saída em um arquivo.
O comando “disp” é usado para mostrar os elementos de uma variável sem
mostrar o nome da variável, e para mostrar texto. O formato do comando “disp” é:
Exemplo 4
prova_escrita=input('Prova escrita= ');
prova_pratica=input('Prova pratica= ');
media=(prova_escrita+prova_pratica)/2;
disp(media);
O comando ‘fprintf’ pode ser usado para mostrar texto e dados na tela ou para
salva-los em um arquivo. Com esse comando (diferentemente do comando ‘disp’) a
saída pode ser formatada.
A utilização do comando ‘fprintf’ para mostrar texto tem a seguinte forma:
fprintf (‘texto’)
43
Exemplo 5
prova_escrita=input('Prova escrita= ');
prova_pratica=input('Prova pratica= ');
media=(prova_escrita+prova_pratica)/2;
fprintf('Media= ');
disp(media);
onde o símbolo ‘%’ marca onde o número entra no texto; no exemplo, ‘5.2f’ é a
formatação da variável, no caso, são 5 dígitos, com 2 casas decimais e formatação com
ponto fixo. Outros exemplos são:
Exemplo 6
prova_escrita=input('Prova escrita= ');
prova_pratica=input('Prova pratica= ');
media=(prova_escrita+prova_pratica)/2;
fprintf('\nMedia=%6.2f',media);
44
3.9 Blocos
Um bloco pode ser definido como um conjunto delimitado de ações a serem
executadas.
Para delimitar um bloco em um algoritmo, são utilizados delimitadores:
início
fim
4 Estruturas de Controle
Para que esse conjunto de ações se torne viável, é necessário estabelecer o fluxo
de execução do algoritmo.
Isso é possível a partir do uso das estruturas básicas de controle do fluxo de
execução e das combinações entre elas, permitindo a criação de algoritmos e
programas computacionais usados na solução dos problemas. Essas estruturas são
apresentadas na presente seção.
Neste exemplo, deve-se observar que o fluxo de execução é de cima para baixo,
da esquerda para a direita.
Exemplo 03: O cálculo do ponto de interseção entre duas retas pode ser
obtido igualando-se as suas equações. Baseado nessa informação, fazer um
programa que leia os coeficientes das equações das retas e calcule o ponto
de interseção. As retas são definidas pelas equações y = Ax+B e y = Cx + D.
Imprimir o resultado.
A = input(‘Coeficiente A: ‘);
B = input(‘Coeficiente B: ‘);
C = input(‘Coeficiente C: ‘);
D = input(‘Coeficiente D: ‘); Ax+B = Cx + D; (A-C)x=(D-B)
x = (D-B)/(A-C);
y = Ax + B;
x=(D-B)/(A-C)
disp(‘Coordenada X: ‘);
disp(x);
disp(‘Coordenada Y: ‘); y=Ax+B
disp(y);
Exemplo 04: Fazer um programa para calcular a norma do vetor x = (x1, x2,
x3), onde os coeficientes devem ser lidos.
x1 = input(‘Coeficiente 1: ‘);
x2 = input(‘Coeficiente 2: ‘);
x3 = input(‘Coeficiente 3: ‘);
n = sqrt(x1*x1 + x2*x2 + x3*x3);
disp(‘A norma e: ‘);
disp(n);
46
Expressão Lógica
if < condição >
e/ou relacional
comando 1;
comando 2;
comando n;
end
Expressão
if < condição é verdadeira >
Ló i /
comando a-1;
comando a-2;
comando a-n;
else
comando b-1;
comando b-2;
comando b-n;
end
switch( variavel )
case v1:
comandos 1;
case v2:
comandos 2;
case vn:
comandos n;
otherwise:
comandos;
end
Exemplo 04:
disp(‘digite 1: primeira opcao’);
disp(‘digite 2: segunda opcao’);
disp(‘digite 3: terceira opcao’);
case 1:
disp( ‘Foi digitada a primeira opcao’);
case 2:
disp( ‘Foi digitada a segunda opcao’);
case 3:
disp( ‘Foi digitada a terceira opcao’);
Otherwise:
disp( ‘Opcao nao existente’);
End
4.2.1.5 Exercícios
Exercício 01: Escrever um algoritmo que leia 3 valores numéricos e mostre-os
em ordem crescente.
A = input(‘Valor 1: ’);
B = input(‘Valor 2: ’);
C = input(‘Valor 3: ’);
if( A < B )
if( B < C )
disp(A); disp(B); disp(C);
else
if( A < C )
disp(A); disp(C); disp(B);
else
50
Exemplo 07:
P1 = input(‘Nota do trabalho: ’);
P2 = input(‘Nota da prova: ’);
Media = 0.3*P1 + 0.7*P2;
disp(Media);
i = variável de controle;
vi = valor inicial atribuído a i;
vf = valor final atribuído a i (condição de parada);
p = incremento/decremento dado à variável i.
i m s
1 10 10
2 5 15
3 5 20
4 8 28
5 7 35
6 10 45
7 5 50
8 6 56
9 4 60
10 3 63
53
Ou
soma = 0;
for i = 0:1:5
soma = soma + 2*i;
end
disp(soma);
No Matlab,
Exemplo 01: Calcular o valor de f(x) = x2 + 2 até que f(x) seja maior que 20.
f = 0;
while f <= 20
x = input(‘Entre com x: ’);
f = x^2 + 2;
disp(f);
end
4.3.2.1 Exercícios
Exercício 01: Jogo do Adivinha: Escolher um número de 0 a 100. Tente
adivinhar o número gerado. A cada tentativa, deve-se informar mais baixo,
mais alto ou acertou. Quando acertar, mostrar o número de tentativas.
Obs.: O comando randint(1,1,[0,100]) deve ser usado para gerar um
número inteiro aleatório.
teste = 0;
soma = 0;
segredo = randint(1,1,[0,100]);
while teste == 0
chute = input(‘Entre com um numero: ‘);
soma = soma + 1;
if chute == segredo
teste = 1;
disp(‘Acertou’);
disp(‘Tentativas: ‘);
disp(soma);
elseif chute < segredo
disp( ‘Mais alto...’);
else
disp(‘Mais baixo…’);
end
end
soma = soma + 1;
disp(‘Numero Chutado: ‘);
disp(chute);
if chute == segredo
teste = 1;
disp(‘Acertou’);
disp(‘Tentativas: ‘);
disp(soma);
elseif chute < segredo
disp( ‘Mais alto...’);
Min = chute;
else
disp(‘Mais baixo…’);
Max = chute;
end
end
end
5 Estruturas de Dados
5.1 Introdução
Nas seções anteriores, foi feita uma divisão imaginária (numérico, caractere e
lógico) com o objetivo de tornar mais simples a classificação das informações (dados)
de um programa.
No entanto, em muitas situações, esses recursos são escassos. Esta seção
descreve novos tipos de dados que são construídos e organizados a partir da
composição dos tipos primitivos vistos anteriormente. Esses novos tipos são conhecidos
como Estrutura de Dados e são classificados da seguinte forma:
• Estrutura de Dados
o Variáveis Compostas Homogêneas;
Unidimensionais (Vetores);
Multidimensionais (Matrizes).
o Variáveis Compostas Heterogêneas
Registros
3
Caractere
8.5
7
5
C A R R O
58
1 0 4
5 2 1
7.5 3 1
C 3 5 1 L
Exemplo 01:
>> A=(0:2:10)
>> B=ones(2,3)
>> C=zeros(3,2)
A=
0 2 4 6 8 10
59
B=
1 1 1
1 1 1
C=
0 0
0 0
0 0
Exemplo 02:
>> % imprime o segundo elemento do vetor. 2 é o índice do vetor.
>> disp(A(2));
>> % Alterando o terceiro elemento do vetor.
>> A(3) = 10;
for i = 1:10
1, 3, 5, 7, 9, …,
A(i) = 2*i – 1;
end
disp(A);
Mas para que servem os vetores? Os exemplos abaixo servirão para responder
tal questão.
Exemplo 03:
% a) Cálculo da média aritmética de 10 notas
soma = 0;
for i = 1:10
x = input(‘Entre com a nota: ’);
soma = soma + x;
end
media = soma / 10;
% b) Quais notas são maiores que a média?
A1 = input(‘Nota 1: ’);
A2 = input(‘Nota 2: ’);
A3 = input(‘Nota 3: ’);
.
.
.
A10 = input(‘Nota 10: ’);
media = (A1 + A2 + ... + A10) / 10;
if A1 > media
disp( A1 );
60
end
if A2 > media
disp( A2 );
end
.
.
.
Exemplo 07: Seja o vetor V = {2, 6, 8, 3, 10, 9, 1, 21, 33, 14}. Seja também x = 2 e y
= 4.
V(x+1) V(3) = 8
V(x+2) V(4) = 3
V(x*4) V(8) = 21
V(V(x+y)) V(V(6)) = V(9) = 33
V(x+y) V(6) = 9
V(V(1)*V(4)) V(2*3) = V(6) = 9
• Vetores
o Um índice (unidimensional) para endereçamento
A(1) = 3;
A(2) = 7;
• Matrizes
o Dois índices (bidimensional) para endereçamento
A(1,1) = 1;
A(2,1) = 5;
A(1,2) = 4;
A(2,2) = 3;
1 4
5 3
Nesse exemplo,
>> A(3,4) = 2;
1 2 3 4
1
2
3 2
Exemplo 09: Construir um programa para ler duas matrizes, efetuar a sua
soma e imprimir o resultado.
for i = 1:5
disp(‘linha’);
disp(i);
for j = 1:5
a(i,j) = input(‘a: ’);
b(i,j) = input(‘b: ’);
c(i,j) = a(i,j) + b(i,j);
end
end
disp(c);
64
Exercícios
Exercício 01: Construir um programa para ler uma matriz e calcular a sua
transposta.
for i = 1:5
for j = 1:5
A(i,j) = input(‘A: ‘);
end
end
for i = 1:5
for j = 1:5
B(i,j) = A(j,i);
end
end
disp(B);
Exercício 02: Fazer um programa que leia os elementos de uma matriz 5x5 e
calcule o seu traço (soma dos elementos da diagonal principal).
for i = 1:5
for j = 1:5
A(i,j) = input(‘A: ‘);
end
end
traco = 0;
for i = 1:5
traco = traco + A(i,i);
end
disp(traco);
Exemplo:
Passagem de ônibus – Formada por um conjunto de informações logicamente
relacionadas, mas de tipos diferentes.
• Número da passagem (numérico);
• Origem e Destino (caracteres);
• Data (caracteres);
• Horário (numérico); Campos
• Poltrona (numérico);
d
• Distância (numérico);
• Fumante (lógico: verdadeiro ou falso).
Exemplo 01:
% criando um registro (variável) chamado de B
B = { };
% criando os campos da variável B e atribuindo valores a eles
B.marca = ‘Fiat’;
B.tipo = ‘Palio’;
B.cor = ‘Preto’;
B.ano = 2004;
B.placa = ‘xyw1030’;
disp(B);
E se nós desejarmos armazenar informações sobre vários alunos? Isso pode ser
feito a partir da composição (combinação) entre variáveis compostas homogêneas e
heterogêneas.
registro 1
registro 2
registro 3
registro 4
Exemplo 03:
for i = 1:4
aux = { };
aux.nome = input(‘Nome: ’,’s’);
aux.idade = input(‘Idade: ’);
aux.matri = input(‘Matricula: ’);
aux.serie = input(‘Serie: ’);
aluno(i) = aux;
end
for i = 1:4
disp(aluno(i));
end
1 registro 1
2 registro 2
3 registro 3
4 registro 4
Exercícios
end
% nao existe multiplos de 3
if j == 0
disp(‘Nao existe multiplos de 3!’);
else
disp(w);
end
Exercício 03: Fazer um programa que leia 2 matrizes 2x3 e calcule uma
terceira matriz dada pela expressão R = 2*At-Bt.
for i = 1:2
for j = 1:3
A(i,j) = input(‘A: ’);
end
end
for i = 1:2
for j = 1:3
B(i,j) = input(‘B: ’);
end
end
for i = 1:2
for j = 1:3
AT(j,i) = A(i,j);
BT(j,i) = B(i,j);
end
end
for i = 1:3
for j = 1:2
R(i,j) = 2*AT(i,j) – BT(i,j);
end
end
disp( R );
68
6 Modularização
6.1 Introdução
Uma técnica para resolver problemas complexos é a decomposição do problema
em vários subproblemas.
Problemas Complexos
Técnicas
Decomposição em subproblemas
Problema
Os exemplos são equivalentes. Apenas no caso 2 foi criada uma função para ler
os dados do problema.
Alguns detalhes que devem ser observados no MATLAB:
Resumindo:
71
Nome da função
function entrada
Palavra-chave
- obrigatória
• Linha 1 – comentário
• Linha 2 – chama (executa) a função entrada
o Executa todos os comandos dessa função
• Linha 3 – chama a função imprime
o Executa todos os comandos dessa função
72
c = a*b;
disp(c);
x = input(‘X: ‘);
y = input(‘Y: ‘);
produto(x,y);
Resumindo,
Notas:
a. a, b e c são variáveis locais;
b. Na primeira chamada da função produto, o valor 3 é copiado para a variável
local a e o valor 5 para b;
c. As variáveis x e y são validas apenas no módulo principal. Elas não podem ser
acessadas dentro da função produto;
d. Uma função pode ser chamada n vezes;
e. O número de argumentos de uma função deve ser compatível entre a sua
definição e a sua execução.
Mas é desejável que exista uma função especifica para imprimir separadamente
o valor do produto.
Se fizermos,
% arquivo ‘produto.m’
function produto(a,b)
c = a*b;
% arquivo ‘imprime.m’
function imprime
disp(c);
% arquivo ‘imprime.m’
function imprime(a,b,c)
disp(a);
disp(b);
disp(c);
Resumindo,
Notas:
a. x, y e z são variáveis locais no módulo principal;
b. z armazena uma cópia do valor de retorno da função produto;
75
Exercícios
Exercício 01 – Implemente uma função para calcular a área de um triângulo.
Essa função recebe como argumentos a base e a altura do triângulo
correspondente. Escreva o módulo principal.
% arquivo ‘area.m’
function a = area(b, h)
a = 0.5 * b * h;
% modulo 2 – ‘fatorial.m’
function f = fatorial( v )
for i = 1:3
fat = 1;
for j = 1:v(i)
fat = fat * j;
end
f(i) = fat;
end
% modulo 3 – ‘saida.m’
function saida( v, f )
for I = 1:3
disp(v(i));
disp(‘factorial :’)
disp(f(i));
end
y = fatorial(x);
saida(x,y);
% arquivo ‘area.m’
function a = area( b, h )
a = 0.5 * b * h;
% arquivo ‘saida.m’
function saida( b, h, area )
disp( ‘Base: ‘);
disp( b );
disp( ‘Altura: ‘);
disp( h );
disp( ‘Area: ‘);
disp( area );
% arquivo ‘menor.m’
function m = menor(a,n)
m = a(1);
for I = 1:n
if(a(i) < m )
m = a(i);
end
end
% arquivo ‘imprime.m’
function imprime(m)
77
% arquivo ‘media.m’
function m = media(v,n)
soma = 0;
cont = 0;
for i = 1:n
if v(i) > 0
soma = soma + v(i);
cont = cont + 1;
end
end Cuidado: tratar o caso onde a
m = soma / cont; variável cont é igual a zero.
% arquivo ‘imprime.m’
function imprime(v, n, m)
disp(n);
disp(v);
disp(m);
Exercício 06
a) Fazer uma função para criar um registro e armazenar o nome e as
quatros notas de um aluno. A função deve retornar o registro criado;
b) Criar uma função que calcule a média das notas, armazenando-a no
mesmo registro. Note que a função recebe como argumento o registro;
c) Escrever o módulo principal.
% arquivo ‘ler.m’
function r = ler
r = { };
r.nome = input(‘Nome: ‘, ‘s’);
r.p1 = input(‘P1: ‘);
r.p2 = input(‘P2: ‘);
r.p3 = input(‘P3: ‘);
r.p4 = input(‘P4: ‘);
% arquivo ‘media.m’
function media(r)
m = (r.p1 + r.p2 + r.p3 + r.p4)/4;
r.media = m;
% arquivo ‘media.m’
function r = media(r)
m = (r.p1 + r.p2 + r.p3 + r.p4)/4;
r.media = m;
% Modulo Principal
A = entrada;
A = calc0(A);
A = calc1(A);
A = calc2(A);
A = calc3(A);
imprime(A);
80
Referências Bibliográficas