Mudanças entre as edições de "PRG122804 2017 2 AULA01"
(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Ω. | ||
+ | |||
+ | 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Ω, 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 | ||
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:
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:
- 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:
- 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:
- 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
Teste de Mesa
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