Mudanças entre as edições de "PR1022804 2022 2 AULA01"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 5: Linha 5:
  
 
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.
 
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.
</blockquote>
 
 
<blockquote style="background:#FFF5EE; border: 2px solid red; margin-left: 100px; margin-right: 100px; padding: 2em;">
 
Olá Alunos,
 
 
Os resultados finais de notas e faltas já estão no SIGAA. Parabéns aos aprovados! Para o pessoal que não conseguiu, faz parte do jogo e semestre que vem estejam mais fortes!
 
 
Grande abraço e boas férias!
 
 
Prof. Douglas A.
 
 
 
</blockquote>
 
</blockquote>
  

Edição das 16h51min de 18 de agosto de 2022

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