Mudanças entre as edições de "PRG1-2014-1-Engenharia Programação 1 - Engenharia"
(→AULAS) |
|||
Linha 295: | Linha 295: | ||
O--> | O--> | ||
m=1Kg F=1N | m=1Kg F=1N | ||
+ | {{collapse top|AULA 2 DIA 14/02/2014}} | ||
+ | == AULA 2 DIA 14/02/2014== | ||
+ | |||
+ | ===Objetivos === | ||
+ | |||
+ | O aluno deverá saber utilizar expressões com: | ||
+ | |||
+ | *Operadores Relacionais e Lógicos | ||
+ | *Comandos de Decisão | ||
+ | *Comandos de decisão com aninhamento | ||
+ | |||
+ | ===Operadores relacionais=== | ||
+ | |||
+ | Os operadores relacionais permitem realizar comparações entre dois operandos. Os operadores são os seguintes: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Operador | ||
+ | !Significado | ||
+ | |- | ||
+ | |> | ||
+ | |maior que | ||
+ | |- | ||
+ | |>= | ||
+ | |maior ou igual que | ||
+ | |- | ||
+ | |< | ||
+ | |menor que | ||
+ | |- | ||
+ | |<= | ||
+ | |menor ou igual que | ||
+ | |- | ||
+ | |== | ||
+ | |igual a (se o operando a esquerda é maior que o da direita) | ||
+ | |- | ||
+ | |!= | ||
+ | |diferente de (se o operando a esquerda é diferente do da direita) | ||
+ | |} | ||
+ | |||
+ | Note que com operadores lógicos podemos construir expressões tais como indicado no exemplo abaixo: | ||
+ | |||
+ | Exemplo: O algoritmo abaixo lê dois número inteiros para dentro das variáveis A e B e atribue a variável X o resultado da comparação do primeiro com o segundo. Se | ||
+ | |||
+ | |||
+ | <code> | ||
+ | ALGORITMO exemplo | ||
+ | VARIÁVEIS: | ||
+ | A: inteiro | ||
+ | B: inteiro | ||
+ | X: booleana | ||
+ | INÍCIO | ||
+ | LER A | ||
+ | LER B | ||
+ | X = A>B | ||
+ | MOSTRAR "A expressão A>B é ", X | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Exercício: Fazer um fluxograma para o algoritmo acima. | ||
+ | |||
+ | ===Operadores Lógicos=== | ||
+ | |||
+ | É possível construir expressões ainda mais completas usando os operadores lógicos, apresentados abaixo: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Operador | ||
+ | !Significado | ||
+ | |- | ||
+ | |&& | ||
+ | |AND (E) | ||
+ | |- | ||
+ | |<nowiki>||</nowiki> | ||
+ | |OR (OU) | ||
+ | |- | ||
+ | |! | ||
+ | |NOT (NÃO) | ||
+ | |} | ||
+ | |||
+ | |||
+ | Uma expressão lógica tem como resultado da sua avaliação um valor VERDADEIRO ou FALSO. Para manter a coerência com a linguagem C qualquer expressão que resultar em 0 será considerada FALSA e se resultar em algo diferente de 0 será considerada verdadeira. | ||
+ | |||
+ | Exemplo: Considere uma variação do exercício anterior onde se compara 3 números inteiros: o primeiro com o segundo e o primeiro com o terceiro. | ||
+ | |||
+ | <code> | ||
+ | ALGORITMO exemplo | ||
+ | VARIÁVEIS: | ||
+ | A: inteiro | ||
+ | B: inteiro | ||
+ | C: inteiro | ||
+ | X: booleana | ||
+ | INÍCIO | ||
+ | LER A | ||
+ | LER B | ||
+ | LER C | ||
+ | X = A>B E A < C | ||
+ | MOSTRAR "A expressão A>B E A<C é ", X | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Sheldon e o fluxograma da amizade=== | ||
+ | |||
+ | Vamos observar o fluxograma da amizade do Sheldom da série de TV "Big Bang Theory" | ||
+ | |||
+ | <center>{{#ev:youtube|VAX4jLlNo-Q#!}} </center> | ||
+ | |||
+ | Observe que a caixa no formato de LOSANGO permite testar uma condição: é uma caixa de decisão. | ||
+ | |||
+ | ===Controle do Fluxo de Execução: Estruturas de Decisão=== | ||
+ | |||
+ | Você deve ter observado que instruções simples (retângulo) possuem uma entrada e uma saída indicando que o fluxo de saída está claramente determinado. | ||
+ | |||
+ | Em algumas situações é necessário realizar algum teste sobre uma expressão e neste caso a execução é condicional. O teste da expressão pode resultar em VERDADEIRO e neste caso uma sequência de ações é realizada. Se o resultado for FALSO, uma outra sequência é realizada. | ||
+ | |||
+ | Seja o problema: | ||
+ | |||
+ | ====Problema do Controle de Acesso==== | ||
+ | |||
+ | PROBLEMA: Controlar o acesso a uma porta usando uma senha pré-configurada no sistema. | ||
+ | |||
+ | DADO DE ENTRADA: SENHA (variável alfanumérica) | ||
+ | |||
+ | DADO DE SAÌDA: porta aberta (simulado com msg "PORTA ABERTA") ou mensagem de "SENHA NAO CONFERE" | ||
+ | |||
+ | VARIÁVEIS: SENHA (tiipo alfanumérica) | ||
+ | |||
+ | =====Algoritmo usando Fluxograma===== | ||
+ | |||
+ | [[imagem:FluxogramaControleAcessoI.jpg|450px]] | ||
+ | |||
+ | =====Algoritmo usando Pseudo-código===== | ||
+ | |||
+ | <code> | ||
+ | ALGORITMO ControleAcesso | ||
+ | VARIÁVEIS | ||
+ | SENHA: alfanumérica | ||
+ | INICIO | ||
+ | LER SENHA | ||
+ | SE SENHA=="alfa" ENTÃO | ||
+ | "Abrir a porta" | ||
+ | SENÃO | ||
+ | "Senha não confere" | ||
+ | FIMSE | ||
+ | IR PARA INICIO | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Aninhamento de estruturas de decisão=== | ||
+ | |||
+ | Note que é possível aninhar estruturas de decisão. Seja o exemplo ebaico que lê três lados de um possível triângulo e imprime se NÂO é um triângulo, ou, caso seja, imprime se é EQUILÁTERO, ISÓSCELES ou ESCALENO. | ||
+ | |||
+ | <code> | ||
+ | ALGORITMO trangulo | ||
+ | VARIAVEIS | ||
+ | lado1,lado2,lado3: real | ||
+ | INICIO | ||
+ | SE lado1>(lado2+lado3) OU lado2>(lado1+lado3) OU lado3>(lado1+lado2) ENTÃO | ||
+ | MOSTRAR "não é triângulo" | ||
+ | SENÃO | ||
+ | SE lado1==lado2 E lado1==lado3 ENTÃO | ||
+ | MOSTRAR "equilatero" | ||
+ | SENAO | ||
+ | SE lado1==lado2 OU lado1==lado3 OU lado2==lado3 ENTÃO | ||
+ | MOSTRAR "isósceles" | ||
+ | SENÃO | ||
+ | MOSTRAR "escaleno" | ||
+ | FIMSE | ||
+ | FIMSE | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Exercícios=== | ||
+ | |||
+ | EXERCÍCIO 1: | ||
+ | |||
+ | Elaborar um fluxograma para o o problema de controle de acesso prevendo um procedimento para modificar a senha de acesso. Neste caso a senha deverá ser armazenada em uma variável. | ||
+ | Para tanto, assuma a existência de uma senha de administrador fixa (por exemplo, "ADMIN"). Se a senha do administrador for fornecida, mostrar uma mensagem de ENTRE COM A NOVA SENHA de senha. | ||
+ | |||
+ | [[imagem:Prg1-ControleAcessoEx1.jpg|450px]] | ||
+ | |||
+ | EXERCÍCIO 2: | ||
+ | |||
+ | Inserir a noção de UserID. Para abrir a porta o usuário entra com o UserId e com | ||
+ | a senha. De fábrica o UserId é "alfa" e a senha "alfa". O UserId do admin é "admin" e a senha "beta". | ||
+ | |||
+ | EXERCÍCIO 3: | ||
+ | |||
+ | Inserir a noção de bloqueio do usuário. Se o usuário comum tentar 3 vezes e errar ele é bloqueado. | ||
+ | A mudança de UserId deve desbloquear o usuário. | ||
+ | |||
+ | {{collapse bottom}} |
Edição das 10h18min de 14 de fevereiro de 2014
PRG1 - PROGRAMAÇÃO I
DADOS DA DISCIPLINA
CARGA HORÁRIA
TOTAL: 72 HORAS (4 HORAS/SEMANA)
TEÓRICA: 36 HORAS
LABORATÓRIO: 36 HORAS
DIAS COM AULA: 36 (18 semanas)
AVALIAÇÂO
Avaliações Semanais
Toda semana nas quinta feiras (aproximadamente 16 avaliações) - conceito se possível na hora
- meses de avaliação (março a junho)
- a última avaliação do mês terá caráter de recuperação
- não será permitida a consulta na avaliação
PROJETO FINAL
- grupos com 3 alunos;
- avaliação individual.
RECUPERAÇÃO FiNAL
- Ficará para recuperação o aluno que não conseguiu obter o conceito mínimo para passar em pelo menos uma das etapas avaliadas (mês) OU não obteve o sucesso no PROJETO FINAL
- última aula do semestre
- recuperação toda matéria
PRÉ REQUISITOS: LÓGICA
EMENTA
Introdução a lógica de programação e algoritmos. Constantes, variáveis e tipos de dados. Operadores aritméticos, relacionais e lógicos. Concepção de fluxograma e pseudocódigo. Estruturas de decisão e estruturas de repetição. Introdução a linguagem de programação c. Vetores de caracteres e multidimensionais. Ponteiros e aritmética de ponteiros. Funções: chamada por valor e por referência. Chamada recursiva de funções. Tipos de dados compostos. Operação com arquivos textos e binários.
Bibliografia Básica
- SCHILDT, Herbert. C Completo e Total - 3.ed. [S.l.]: Makron, 1997. 830p. ISBN 978-8534605953
Referências Complementares
- Apostila adotada: Curso de Linguagem C - Engenharia Elétrica - UFMG
AULAS
AULA 1 DIA 15/08/2013 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AULA 1 DIA 15/08/2013Como fazer um churrascoVamos 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 algoritmoUm 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:
A PENSAR: É possível mudar a ordem das instruções? É possível paralelizar algumas instruções?
E para quem são 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 (próxima aula) A Descrição de Algoritmos usando FluxogramasUm 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:
Ponto fraco:
Observe no exemplo anterior que nada é dito sobre as variáveis NUM1, NUM2 e MEDIA. Símbolos de um FluxogramaTeste de MesaConstantes, VariáveisAlgoritmos operam sobre dados. O que podem ser estes dados? 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.
Ex: NUM1 = 5.5 /* NUM1 é uma variável real */
Ex: RES = TRUE /* RES é uma variável booleana */
Ex: LETRA = 'A'
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õesExpressõ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éticosOs operadores aritméticos que usaremos neste curso serão os disponíveis no C:
O único operador desconhecido aqui é o resto, cujo significado é o resto entre dois númerosinteiros. Exemplo, se B possui o valor 9, então o resultado da atribuição na expressão: A = B%2 será 1. Representando o algoritmo com pseudo-código
|