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:

  1. Abra a porta do carro;
  2. Se a porta estiver trancada, use a chave para abrí-la, senão entre no carro;
  3. Coloque a chave na ignição;
  4. Se a marcha estiver em ponto-morto, gire a chave na ignição, senão coloque em ponto-morto;
  5. ...

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

Referências


Page last modified on December 03, 2009, at 09:12 PM