PUBLICADA A SOLUÇÃO DOS EXERCÍCIOS
Apresentação
Disciplina ministrada na Universidade do Estado de Santa Catarina (Udesc), no Departamento de Ciência da Computação (DCC) do Centro de Ciências Tecnológicas (CCT), campus Joinville/SC, para o curso de Engenharia Mecânica, durante os semestres de 2008 e 2009.
Objetivo
A disciplina tem como objetivo capacitar os estudantes a interagirem com sistemas de computação algébrica/simbólica com o intuito de ampliar as possibilidades de ensino de Matemática no curso, difundindo-o com maior facilidade.
Ementa
Histórico da Computação Algébrica/Simbólica; Sistemas de Computação Algébrica/Simbólica – Reduce, Maple, Mathematica, MatLab, Máxima e SciLab; Sintaxe básica dos sistemas Maxima ou SciLab; Construção de programas através das ferramentas Maxima ou SciLab. Manipulação de Matrizes e Números Complexos; Resolução de Sistemas de Equações Lineares; Resolução de Funções Polinomiais; Plotagem de Gráficos; Resolução de Limite e Derivada.
Horário
- Turma A: Sexta-feira, 09:20 às 11:50
Softwares Utilizados
Notas de Aula
Apresentação da disciplina
Temos como objetivo apresentar o conceito de algoritmo e computação.
A computação provém da necessidade de calcular, contar, automatizar. O ser humano sempre teve a necessidade de contar. Para isso, recorreu a modelos que lhe auxiliavam. Um pastor de ovelhas por exemplo, recorria a um conjunto de pedras em uma tijela para representar as ovelhas que estavam dentro do cercado. A matemática formalizou este conceito de número, e daí vieram os tantos formalismos que utilizamos atualmente.
Porém, assim como o pastor de ovelhas não poderia utilizar pedras para contar milhares de ovelhas, também existem cálculos que não podemos nós mesmos resolvermos, não em tempo hábil. Para isso os computadores foram criados, para nos auxiliar nesta atividade.
Um computador então é um instrumento que, baseado em uma instrução, ou um conjunto dessas, realiza-as, processando uma entrada em uma saída final.
Todo computador possui uma arquitetura padrão que compreende:
- Processador
- Memória Primária ou Principal
- Memória Secundária
- Dispositivos de Entrada e Saída
Esta arquitetura está presente em qualquer computador, do nosso Personal Computer, até o menor computador embarcado em nossos celulares, por exemplo.
Como dito, o computador não opera por conta própria, é necessário que este seja instruído. Usuários de um computador fazem isso através da utilização de programas. Porém, nosso interesse é aproveitar mais dos recursos oferecidos, de maneira a usar o computador como uma ferramenta para a solução de problema em Engenharia Mecânica. Portanto, instruiremos o computador utilizando algoritmos ou programas, objetivo real da disciplina.
Algoritmos
Algoritmos são uma sequência de operações bem definidas expressas em uma linguagem.
Encontramos algoritmos no nosso dia-a-dia. Se pensarmos nas ações que tomamos quando dirigimos um carro por exemplo, estas ações irão compor um algoritmo, algo como:
- Abra a porta do carro;
- Se a porta estiver trancada, use a chave para abrí-la, senão entre no carro;
- Coloque a chave na ignição;
- Se a marcha estiver em ponto-morto, gire a chave na ignição, senão coloque em ponto-morto;
- ...
Ora, esta nada mais é do que uma sequência de operações expressas em uma linguagem. Portanto, é um algoritmo!
Podemos notar já neste exemplo de algoritmo empírico algumas estruturas presentes na linguagem que usaremos para instruir nosso computador. Isso mostra que estas estruturas serviram de base para a criação de seus operadores. O operador condicional SE é um exemplo de estrutura presente na expressão "SE a porta…".
Embora fosse muito interessante e proveitoso, não podemos instruir um computador com nosso algoritmo de dirigir carros, que acabamos de iniciar a escrita. A linguagem que usamos para escrever nosso algoritmo empírico é muito complexa, e desta forma, instruir um computador a interpretá-la por si só seria de grande complexidade. Assim, usaremos uma linguagem menor que o nosso Português. Usaremos uma linguagem de programação.
Vamos então construir esta linguagem. Basicamente, precisamos dos seguintes elementos:
- Variáveis
- Operadores Aritméticos (+ * - / ^)
- Operadores Lógicos (or and not < > <= >= == ~=)
- Operadores Literais/Comandos
- Operador de Atribuição (=)
- Operador Condicional (se … então … senão … fim)
- Operador de Repetição (para … faça … fim, enquanto … faça … fim)
- Operadores de Entrada/Saída (escreva(x), leia(x))
Agora sim, com esta linguagem podemos instruir nosso computador através de programas, que nada mais são que implementações de algoritmos. Portanto, as seguintes instruções são perfeitamente válidas:
2 + 3
1 and (0 or 1)
x = 10
2 / (x^(x - 2))
se x == 10 faça
escreva("x é igual a 10!")
senão
escreva("x não é igual a 10!")
fim
i = 0
enquanto (i < 10) faça
escreva("olá!");
i = i + 1;
fim
Em qualquer linguagem de programação (C, Pascal, Java, Perl, Python, Ruby, Delphi, JavaScript, etc.) sempre teremos presentes estes mesmos conceitos! O que irá mudar basicamente é a sintaxe, ou seja, a forma como a linguagem expressa seus operadores. Alguns exemplos de um operador de repetição expressão na nossa linguagem e em várias outras, a seguir.
Em nossa linguagem:
i = 0
enquanto (i < 10) faça
escreva("olá!");
i = i + 1;
fim
Em C e Java teríamos:
int i = 0;
while (i < 10) {
printf("olá!");
i = i + 1;
}
Em Python:
i = 0
while i<10:
print("olá")
i = i + 1
Em Ruby:
i = 0
while i<10
print("olá!")
i = i + 1
end
Recomendo a leitura de 1 como complemento a esta aula.
Introdução ao SciLab
Assim como qualquer linguagem de programação apresenta os elementos básicos discutidos (operadores aritméticos, lógicos, de atribuição, etc), isto não é diferente para a linguagem utilizada em softwares como Scilab. Uma linguagem que automatiza um software qualquer recebe o nome de linguagem de scripting.
Desta forma, temos os seguintes operadores e estruturas em Scilab:
Variáveis e Operador de Atribuição
x = 2 x^2 + 5*x - 10
Operadores Aritméticos
2 + 3 10 * 56 89 / 100 34 - 90 2 * (3 * 10) / 2^(2*x + 1) 10 < 0 0 == 0 1 ~= 10
Operadores Booleanos ou Lógicos
0 & 0 1 & 0 1 & 1 0 | 0 1 | 0 1 | 1 ~0 ~1 1 & (0 | 1)
Operadores Condicionais
if (x < 10) then
x = x + 1
else
x = x - 1
end
Operadores de Repetição
while (x < 100) then
y = y + x;
x = x + 1;
end
for i = 1:200 do
y = y + i
end
Operadores de Entrada e Saída
x = input("Digite um número: ");
printf("O número digitado foi: %d\n", x);
Funções e Procedimentos
function y = media(a, b, c)
y = (a + b + c) / 3
endfunction
media(2, 10, 1)
É recomendável a leitura de 7, 8 e principalmente 13 como complemento a esta aula.
Exercícios
- Lista de Exercícios III. Vetores, Matrizes e Funções.
- Solução da Lista de Exercícios III
Referências
- CRUZ, Adriano Joaquim de Oliveira. Algoritmos. Disponível on-line em: http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm
- AMUASI, Henri. Octave Tutorial. Disponível on-line em: http://www.aims.ac.za/resources/tutorials/octave/
- CLAUDIO, D. M.; MARINS, J. M. Cálculo Numérico Computacional - Teoria e Prática. Editora Atlas. 1989.
- CUNHA, C. Métodos Numéricos para as Engenharias e Ciências Aplicadas. Editora da Unicamp. 1993.
- YAKOWITZ, S.; SZIDAROVSZKY, F. An Introduction to Numerical Computations. MacMillan. 1989.
- LAGES, E. N. Introdução ao MatLab. Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC Departamento de Engenharia Estrutural – EES. Disponível on-line em: http://www.ctec.ufal.br/professor/enl/metnum/Bibliografia/Introducao%20ao%20MATLAB.pdf
- SCILAB, Group. Introduction to Scilab. Disponível on-line em: http://www.saphir-control.fr/articles/intro/index.html
- PIRES, P. S. M. Introdução ao Scilab. Disponível on-line em: http://www.dca.ufrn.br/~pmotta/sciport.pdf
- http://www.rau-tu.unicamp.br/scilab/
- http://www-irma.u-strasbg.fr/~sonnen/SCILAB_HELP/frame.html
- http://siptoolbox.sourceforge.net/
- http://www.felipesampaio.com/2007/08/14/calculo-de-integrais-definidas-no-scilab/
- LACERDA, E. G. M. Programando com Scilab. Disponível on-line em: http://www.dca.ufrn.br/~estefane/academica/progsci.pdf