PR1022804 2022 1 AULA01

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

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 e Comunicação; 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.

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:
Pseudo-có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.
Fluxogramas: 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.


Um PROGRAMA implementa um algoritmo. É o algoritmo 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

Mesmo com todos os conceitos vistos até agora, 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 exercitanto 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 semi-grá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
Pontos fortes: permite fácil entendimento do algoritmo, mesmo para pessoas leigas.
Ponto fraco: a descrição das estrutura dos dados inexiste. O usuário deve descrevê-los 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 (pseudo-có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)

Guia referência do C

[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 voltar.png Icone prox.png