PR1022804 2022 2 AULA01

De MediaWiki do Campus São José
Revisão de 13h19min de 25 de agosto de 2022 por Douglas (discussão | contribs) (→‎Representando o algoritmo (pseudo-código))
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Algoritmos

APRESENTAÇÃO
O curso de Engenharia Elétrica permite ao egresso desempenhar funções dentro da resolução 1010/2005 do CONFEA/CREA na modalidade Elétrica, nos setores de: Eletricidade Aplicada e Equipamentos Eletroeletrônicos; Eletrônica; Programação; Hardware; Informação e Comunicação. Com sólidos conhecimentos científicos e tecnológicos, o Engenheiro Eletricista tem como competências gerais: projetar, especificar, adaptar, e desenvolver sistemas elétricos e eletroeletrônicos, bem como realizar a integração dos recursos físicos, lógicos e de programação necessários para a execução dessas atividades.
Esta Unidade Curricular (UC) está dividida em duas partes, na primeira etapa, mais preparativa, vamos realizar um estudo introdutório a lógica de programação e algoritmos, passando pelas definições de constantes, variáveis e tipos de dados. Também vamos conhecer os operadores aritméticos, relacionais e lógicos e aprender sobre fluxograma e pseudocódigo. Vamos também investigar o funcionamento das estruturas de decisão e repetição. Na segunda etapa, mais prática, partiremos para a linguagem de programação C, e vamos tratar de vetores de caracteres e multidimensionais, ponteiros e aritmética de ponteiros, funções, tipos de dados e operação com arquivos. Tudo isso através de pequenos programas em linguagem C.
OBJETIVOS
O aluno será capaz nesta aula de:
  • Saber o que é um algoritmo e como representá-lo;
  • Conhecer as estruturas utilizadas para fluxogramas;
  • Saber utilizar os operadores e expressões aritiméticas; e
  • Representar os algoritmos na forma de pseudocódigo.


METODOLOGIA
A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos testados programas no microcomputador do laboratório de informática.


Como fazer um churrasco

Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:

O que tem o churrasco com a nossa aula?

– Trata-se de uma sequência de passos para execução de um objetivo.
EXERCÍCIO
Na forma textual, descrever as etapas para fazer um bom churrasco.

O que é um algoritmo?

Um algoritmo pode ser visto como uma sequência de instruções ou operações que resolvem um dado problema.
– A receita de um bom churrasco corresponde a um algoritmo.

Como representar um algoritmo?

Uma forma é representar na forma textual ordenada:

  1. Comprar a carne
  2. Colocar carvão na churrasqueira
  3. Acender o carvão
  4. Cortar a carne (picanha)
  5. Espetar a carne
  6. Salgar a carne
  7. Colocar a carne na churrasqueira
  8. Aguardar a carne ficar no ponto desejado
  9. Bater a carne
  10. Servir a carne


Outras formas são mais apropriadas para o uso no meio computacional:

PSEUDOCÓDIGO
É uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação.
FLUXOGRAMA
Veremos a seguir.


A PENSAR
É possível mudar a ordem das instruções?
É possível paralelizar algumas instruções?

Para que servem os algoritmos?

Uma receita de bolo é apropriada para ser executada por um ser humano.

Um procedimento de como trocar um pneu também.

Mas muitas vezes queremos que o algoritmo seja executado por uma máquina! O computador é perfeito para isto!

Neste curso vamos nos concentrar no desenvolvimento de algoritmos simples, desde a sua concepção até a sua implementação através de uma LINGUAGEM DE PROGRAMAÇÃO – a linguagem C, por exemplo.


PROGRAMA
Implementa um algoritmo que é materializado na forma de uma sequência de instruções.
Neste sentido, vamos entender minimamente o funcionamento de um computador.

Roteiro para construção de algoritmos

A construção de um algoritmo parte sempre de um determinado problema. A montagem da solução depende da prática e da criatividade do programador, que podem ser alcançadas exercitando estes conceitos. Para um mesmo problema, programadores podem ter soluções diferentes e corretas.

Um roteiro básico para a construção de um algoritmo inclui as seguintes etapas:

  1. ENTENDA O PROBLEMA! Esta é a etapa mais importante. Você deve ser capaz de compreender o que está sendo solicitado; se não entender, pode acabar construindo uma solução errada, ou uma solução correta para o problema errado;
  2. Identifique no problema as saídas do algoritmo, pois são nelas aonde se quer chegar. Atente para o que deve ser calculado, impresso e processado;
  3. Identifique no problema as entradas do algoritmo, isto é, de quais dados você necessidade que o usuário forneça para fazer os cálculos;
  4. Atente para o processamento em si. Identifique quais cálculos são requisitados sempre a partir dos valores de entrada para chegar aos de saída. Faça cálculos imaginando quais as operações serão utilizadas;
  5. Tente separar dentro do possível, as etapas de entrada, processamento e saída, dentro do algoritmo;
  6. Coloque os comando seguindo a estrutura sequencial básica do algoritmo. Não esqueça que a máquina executa o algoritmo exatamente na sequencia definida por você.

A descrição de algoritmos usando fluxogramas

Um fluxograma é uma linguagem semigráfica que pode ser utilizada para descrição de algoritmos.

EXEMPLO
O algoritmo de cálculo da média de dois números.
FluxogramaMediaDoisNumeros.jpg
PONTO FORTE
Permite fácil entendimento do algoritmo, mesmo para pessoas leigas.
PONTO FRACO
A descrição das estrutura dos dados inexiste e o usuário deve descrevê-las a parte.

Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA.

Símbolos de um fluxograma

TabelaSimbolosFluxograma.jpg

Teste de mesa

TesteMesaMediaDoisNumeros.jpg

Constantes e variáveis

Algoritmos operam sobre dados. O que podem ser estes dados?
Podem ser: Variáveis e Constantes
No exemplo anterior podemos identificar três variáveis NUM1, NUM2 e MEDIA
Também podemos identificar uma CONSTANTE. O número 2.
TIPO DE VARIÁVEIS
Numéricas: reais e inteiras
Ex.: NUM1 = 5.5 /* NUM1 é uma variável real */
Booleanas: true ou false
Ex.: RES = TRUE /* RES é uma variável booleana */
Caracter:
Ex.: LETRA = 'A'
Alfanumérica:
Ex.: FRASE = "ALO MUNDO"
E como estas variáveis armazenam os dados?? Depende da linguagem usada.
Vamos passar uma primeira noção do C.

Expressões

Expressões sentenças que relacionam variáveis e constantes através de operadores matemáticos
e que RESULTAM em um valor.
A instrução do algoritmo:
MEDIA = (NUM1 + NUM2) / 2
será considerada como uma expressão, que usa os operadores '+', '/' e '='
O operador '=' é um OPERADOR DE ATRIBUIÇÃO e indica que a expressão do lado direito
do '=' será atribuída a variável do lado esquerdo.
Neste curso, para mantermos coerência com a Linguagem C, consideraremos que a expressão
como um todo resulta no valor que é atribuído a variável.

Operadores aritméticos

Os operadores aritméticos que usaremos neste curso serão os disponíveis no C:


Operador Significado
+ adição
- subtração
* multiplicação
/ divisão
% módulo
++ incremento
-- decremento


Os operadores desconhecidos aqui são o módulo (resto), cujo significado é o resto da divisão entre dois números inteiros.
Exemplo, se B possui o valor 9, então o resultado da atribuição na expressão:
A = B%2
será 1.
Incremento ++:
B = 0
B++
B será igual a 1.
Decremento --:
C = 10
C--
C será igual a 9.

Representando o algoritmo (pseudocódigo)

ALGORITMO MEDIA
VARIAVEIS
   NUM1: INTEIRO
   NUM2: INTEIRO
   MEDIA: REAL
INICIO
   LER NUM1
   LER NUM2
   MEDIA = (NUM1+NUM2)/2
   MOSTRAR MEDIA
FIM

Implementado o algoritmo em linguagem C

#include <stdio.h>

void main()
{
  int num1,num2;
  float media;

  scanf("%d",&num1);
  scanf("%d",&num2);
  media = (num1+num2)/2.0;
  printf("media = %f\n", media);
}

Exercícios

1. Fazer um algoritmo na forma de fluxograma para calcular o valor y de uma função de uma reta dado x. Identifique quem são as variáveis e constantes do problema.

2. Fazer um algoritmo na forma de fluxograma para:

a) Calcular o DELTA de uma equação do segundo grau, dados os coeficientes a, b e c. OBS: .
b) Apresente uma variação de solução do exercício (2.a) usando apenas duas variáveis para armazenamento de dados.
Solução 2.a
PR1022804 Diagrama1.png

3. Implementar um algoritmo na forma de fluxograma para calcular o ponto de intersecção de duas retas dados os pontos: a1, b1, a2 e b2.

Solução 3
PR1022804 Diagrama2.png

* É preciso conferir as equações.


4. Implementar um algoritmo na forma de pseudocódigo para calcular a conversão de Celsius para Farenheit.

5. Implementar um algoritmo na forma de pseudo-código para calcular a corrente sobre um resistor, dado a tensão V aplicada sobre ele. Considere um resistor com R constante de 1kΩ.

6. Incremente o exercício 5 para computar também a potência dissipada sobre o resistor.

7. Implementar um algoritmo na forma de pseudo-código para converter um ângulo em radianos para graus.

8. O problema da raposa, do milho e da galinha:



a) Descrever na forma de etapas um solução para o problema da raposa, do milho e da galinha.
Note que somente é possível escrever o algoritmo se tivermos uma solução para o problema.
b) Descrever na forma de etapas uma solução para o problema dos canibais e padres.


9. Torres de Hanoi

Veja este jogo:



a) Escrever na forma de etapas numeradas a solução para o problema
das torres de Hanói usando 3 discos.
b) Escrever na forma de etapas numeradas a solução para o problema
das torres de Hanói usando 4 discos.

10. Implementar um fluxograma para computar a área e o comprimento de uma circunferência dado o RAIO.

11. Implementar um fluxograma para ler um número complexo (ler por partes) no formato retangular e apresentar o módulo e o ângulo EM GRAUS do mesmo (formato polar).

Suponha que você dispõe de uma função ATG() que calcula o arco em radianos de uma dada tangente.

12. Implementar um fluxograma para apresentar o cálculo da potência dissipada num resistor 250Ω, quando uma corrente (I) e tensão V (a serem fornecidas) estão ligadas num circuito elétrico em série com esta resistência.

V=? (fornecido)
I=? (fornecido)
R=250Ω (dado)
P--> (calculado)

Referências

[1] Apostila de C - UFMG

[2] C Reference Card (ANSI) - Guia rápido

[3] Introdução à programação C - Os primeiros passos de um desenvolvedor



Icone menu.png Icone prox.png