Prévia do material em texto
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 1/12
PR1022804 2023 2 AULA01
Algoritmos
O que é um algoritmo?
Como representar um algoritmo?
Para que servem os algoritmos?
Roteiro para construção de algoritmos
A descrição de algoritmos usando fluxogramas
Símbolos de um fluxograma
Teste de mesa
Constantes e variáveis
Expressões
Operadores aritméticos
Representando o algoritmo (pseudocódigo)
Implementado o algoritmo em linguagem C
Exercícios
Referências
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;
Índice
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 2/12
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.
INTRODUÇÃO
– Você sabe como fazer um churrasco? Vamos observar atentamente vídeo abaixo para
iniciarmos o nosso curso de programação:
Como preparar um churrasco de picanha no espeto.Como preparar um churrasco de picanha no espeto.
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.
Um algoritmo (http://pt.wikipedia.org/wiki/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.
Segundo o Google (dicionário):
algoritmo
substantivo masculino
1. matemática
O que é um algoritmo?
https://www.youtube.com/watch?v=U0xSYIXE9vo
http://pt.wikipedia.org/wiki/Algoritmo
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 3/12
sequência finita de regras, raciocínios ou operações que, aplicada a um número finito de
dados, permite solucionar classes semelhantes de problemas.
2. informática
conjunto das regras e procedimentos lógicos perfeitamente definidos que levam à solução
de um problema em um número finito de etapas.
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?
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.
Como representar um algoritmo?
Para que servem os algoritmos?
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 4/12
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.
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.
Roteiro para construção de algoritmos
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 5/12
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.
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:FluxogramaMediaDoisNumeros.jpg
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:FluxogramaMediaDoisNumeros.jpg
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 6/12
Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA.
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
Símbolos de um fluxograma
Teste de mesa
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:TabelaSimbolosFluxograma.jpghttps://wiki.sj.ifsc.edu.br/index.php/Arquivo:TabelaSimbolosFluxograma.jpg
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:TesteMesaMediaDoisNumeros.jpg
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:TesteMesaMediaDoisNumeros.jpg
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 7/12
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.
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:
Operadores aritméticos
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 8/12
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:
.
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 9/12
[Ocultar]
[Ocultar]
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
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
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:PR1022804_Diagrama1.png
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:PR1022804_Diagrama1.png
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 10/12
* É 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:
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:PR1022804_Diagrama2.png
https://wiki.sj.ifsc.edu.br/index.php/Arquivo:PR1022804_Diagrama2.png
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 11/12
TRAVESSIA LÓGICATRAVESSIA LÓGICA
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:
Torre de HanoiTorre de Hanoi
https://www.youtube.com/watch?v=yifW9XueSaI
https://www.youtube.com/watch?v=hLnuMXO95f8
28/11/2023, 08:16 PR1022804 2023 2 AULA01 - MediaWiki do Campus São José
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA01#Algoritmos 12/12
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 (http://wiki.sj.ifsc.edu.br/images/8/82/Curso_de_linguagem_C_UFMG.p
df)
[2] C Reference Card (ANSI) - Guia rápido (http://wiki.sj.ifsc.edu.br/images/5/50/C-refcard.pdf)
[3] Introdução à programação C - Os primeiros passos de um desenvolvedor (https://wiki.sj.ifsc.edu.
br/images/4/4a/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o_em_C_-_Os_
primeiros_passos_de_um_desenvolvedor.pdf)
[4] https://www.tudogostoso.com.br/receita/29124-bolo-simples.html
Disponível em “https://wiki.sj.ifsc.edu.br/index.php?title=PR1022804_2023_2_AULA01&oldid=191061”
Esta página foi modificada pela última vez em 12 de setembro de 2023, às 16h58min.
http://wiki.sj.ifsc.edu.br/images/8/82/Curso_de_linguagem_C_UFMG.pdf
http://wiki.sj.ifsc.edu.br/images/8/82/Curso_de_linguagem_C_UFMG.pdf
http://wiki.sj.ifsc.edu.br/images/5/50/C-refcard.pdf
https://wiki.sj.ifsc.edu.br/images/4/4a/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o_em_C_-_Os_primeiros_passos_de_um_desenvolvedor.pdf
https://wiki.sj.ifsc.edu.br/images/4/4a/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o_em_C_-_Os_primeiros_passos_de_um_desenvolvedor.pdf
https://wiki.sj.ifsc.edu.br/images/4/4a/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o_em_C_-_Os_primeiros_passos_de_um_desenvolvedor.pdf
https://www.tudogostoso.com.br/receita/29124-bolo-simples.html
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2#Aulas
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2#Aulas
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA02
https://wiki.sj.ifsc.edu.br/index.php/PR1022804_2023_2_AULA02
https://wiki.sj.ifsc.edu.br/index.php?title=PR1022804_2023_2_AULA01&oldid=191061