Mudanças entre as edições de "PRG122804 2017 2 AULA01"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(23 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
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.
  
 +
= Como fazer um churrasco =
  
 +
Vamos observar atentamente este vídeo para iniciarmos o nosso curso de programação:
  
 +
 +
<center>{{#ev:youtube|U0xSYIXE9vo#!}} </center>
 +
 +
 +
 +
 +
<b>O que tem o churrasco com a nossa aula?</b>
 +
:-Trata-se de uma sequência de passos para execução de um objetivo.
 +
 +
:<b>Exercício</b>: Na forma textual, descrever as etapas para fazer um bom churrasco.
 +
 +
= O que é um algoritmo? =
 +
 +
 +
:Um [http://pt.wikipedia.org/wiki/Algoritmo 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:
 +
 +
# Comprar a carne
 +
# Colocar carvão na churrasqueira
 +
# Acender o carvão
 +
# Cortar a carne (picanha)
 +
# Espetar a carne
 +
# Salgar a carne
 +
# Colocar a carne na churrasqueira
 +
# Aguardar a carne ficar no ponto desejado
 +
# Bater a carne
 +
# Servir a carne
 +
 +
 +
:Outras formas são mais apropriadas para o uso no meio computacional:
 +
 +
:<b>Pseudo-código:</b> é 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.
 +
 +
:<b>Fluxogramas:</b> veremos a seguir.
 +
 +
 +
:<b>A PENSAR</b>: É 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 <b>PROGRAMA</b> implementa um algoritmo. É o algoritmo materializado na forma de uma sequência de instruções.
 +
 +
 +
:<i>Neste sentido, vamos entender minimamente o funcionamento de um computador.</i>
 +
 +
=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:
 +
 +
[[imagem:FluxogramaMediaDoisNumeros.jpg|150px|center]]
 +
 +
:<b>Pontos fortes:</b> permite fácil entendimento do algoritmo, mesmo para pessoas leigas.
 +
 +
:<b>Ponto fraco:</b> 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==
 +
 +
[[imagem:TabelaSimbolosFluxograma.jpg|450px]]
 +
 +
==Teste de Mesa==
 +
 +
[[imagem:TesteMesaMediaDoisNumeros.jpg|650px]]
 +
 +
=Constantes e Variáveis=
 +
 +
 +
:Algoritmos operam sobre dados. O que podem ser estes dados?
 +
 +
:Podem ser: <b>Variáveis e Constantes</b>
 +
 +
:No exemplo anterior podemos identificar três variáveis NUM1, NUM2 e MEDIA
 +
:Também podemos identificar uma CONSTANTE. O número 2.
 +
 +
:<b>Tipo de Variáveis:</b>
 +
 +
::'''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.
 +
 +
:<b>A instrução do algoritmo:</b>
 +
 +
::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:
 +
 +
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="background: #FFD700;" | Operador
 +
! style="background: #FFD700;" | Significado
 +
|-
 +
! style="text-align: center;" | +
 +
|adição
 +
|-
 +
! style="text-align: center;" | -
 +
|subtração
 +
|-
 +
! style="text-align: center;" | *
 +
|multiplicação
 +
|-
 +
! style="text-align: center;" | /
 +
|divisão
 +
|-
 +
! style="text-align: center;" | %
 +
|módulo
 +
|-
 +
! style="text-align: center;" | ++
 +
|incremento
 +
|-
 +
! style="text-align: center;" | --
 +
|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)=
 +
 +
<code>
 +
ALGORITMO MEDIA
 +
VARIAVEIS
 +
  NUM1: INTEIRO
 +
  NUM2: INTEIRO
 +
  MEDIA: REAL
 +
INICIO
 +
  LER NUM1
 +
  LER NUM2
 +
  MEDIA = (NUM1+NUM2)/2
 +
  MOSTRAR MEDIA
 +
FIM
 +
</syntaxhighlight>
 +
 +
=Implementado o algoritmo em linguagem C=
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
main()
 +
{
 +
  int num1,num2;
 +
  float media;
 +
 +
  scanf("%d",&num1);
 +
  scanf("%d",&num2);
 +
  media = (num1+num2)/2.0;
 +
  printf("media = %f\n", media);
 +
}
 +
</syntaxhighlight>
 +
 +
=Exercícios=
 +
 +
 +
1. Fazer um algoritmo na forma de fluxograma para calcular o valor y de uma função de uma reta <math> y = 5x+2 </math> dado x. Identifique quem são as variáveis e constantes do problema.
 +
 +
2.
 +
:a) Fazer um algoritmo na forma de fluxograma para calcular o DELTA de uma equação do segundo grau, dados os coeficientes ''a'' e ''b''. OBS: <math>DELTA=b^2-4ac</math>.
 +
 +
:b) Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados.
 +
 +
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.
 +
 +
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&Omega;.
 +
 +
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:
 +
 +
 +
<center>{{#ev:youtube|yifW9XueSaI#!}} </center>
 +
 +
 +
 +
: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:
 +
 +
 +
<center>{{#ev:youtube|hLnuMXO95f8#!}} </center>
 +
 +
 +
 +
: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&Omega;, 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&Omega; (dado)
 +
:P--> (calculado)
 +
 +
=Guia Referência do C=
 +
 +
[1] http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/materiais/resumo_c.pdf
  
  

Edição atual tal como às 16h15min de 12 de setembro de 2017

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:


EmbedVideo received the bad id "U0xSYIXE9vo#!" for the service "youtube".



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.

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 </syntaxhighlight>

Implementado o algoritmo em linguagem C

#include <stdio.h>

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.

a) Fazer um algoritmo na forma de fluxograma para calcular o DELTA de uma equação do segundo grau, dados os coeficientes a e b. OBS: .
b) Apresente uma variação de solução do exercício (2) usando apenas duas variáveis para armazenamento de dados.

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.

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:


EmbedVideo received the bad id "yifW9XueSaI#!" for the service "youtube".


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:


EmbedVideo received the bad id "hLnuMXO95f8#!" for the service "youtube".


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] http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/materiais/resumo_c.pdf




Icone voltar.png Icone menu.png Icone prox.png