Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0672 - Introdução à Programação Aula 01: Introdução à Lógica de Programação Introdução à Programação AULA 01: Introdução à Lógica de Programação Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 01: Introdução à Lógica de Programação Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Conceitos iniciais O que é lógica? O que é um algoritmo? Exercícios para resolução Dicas para se construir bons algoritmos O que é um programa? Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica ANTES DE COMEÇAR Façam: - uma lista de etapas necessárias para se fazer um bolo - um passo a passo para se fazer um suco - uma sequência de passos para se trocar o pneu de um carro Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica ANTES DE COMEÇAR Façam: - uma lista de etapas necessárias para se fazer um bolo 1. Pegar todos os ingredientes 2. Misturar na batedeira 3. Acrescentar fermento em pó 4. Reservar 5. Untar a forma com manteiga e trigo 6. Despejar a massa do bolo na forma 7. Por no forno durante 1h Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica PERGUNTA-SE 1. Quais as dificuldades encontradas no desenvolvimento de cada um dos exercícios? 2. A sequência de passos funciona para qualquer situação? 3. A ordem das atividades foi feita na sua melhor sequência? Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica ALGUMAS DICAS PARA SE CONSTRUIR BONS ALGORITMOS 1. Utilizar frases curtas 2. Usar um verbo em cada frase (sempre no infinitivo) 3. Evite palavras ambíguas 4. Detalhar todas as etapas Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica O QUE É LÓGICA? ”A lógica é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar” É um conjunto de leis, princípios ou métodos que determinam um raciocínio coerente, induzindo a uma solução prática para um problema. É o ato de pensar corretamente! Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica EXERCÍCIO II Existem 3 garrafas, uma de 8 litros, outra de 5 e outra de 3 litros. Inicialmente a garrafa de 8 litros está cheia. Queremos colocar 4 litros na garrafa de 5 litros e deixar os outros 4 litros na garrafa de 8 litros EXERCÍCIO I Como medir exatamente 2 litros utilizando apenas um balde de 4 litros e outro de 3 litros? Nos baldes não há indicação da quantidade de água dentro deles, pode-se encher, esvaziar e a passar água de um para outro. Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Balde de 4 litros Balde de 3 litros 4 0 1 3 0 3 3 0 3 3 4 2 0 2 EXERCÍCIO I Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Balde de 4 litros Balde de 3 litros 4 0 1 3 0 3 3 0 3 3 4 2 0 2 EXERCÍCIO I Encher o balde de 4L Encher o balde de 3L Secar o balde de 4L Passar 3L para o de 4L Encher o balde de 3L Passar 1L para o de 4L Sobra 2L no balde de 3L Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Balde de 8 litros Balde de 5 litros Balde de 3 litros 8 0 0 0 5 3 3 5 0 3 2 3 6 2 0 6 0 2 1 5 2 1 4 3 4 4 0 EXERCÍCIO II Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica LÓGICA DE PROGRAMAÇÃO É a técnica de desenvolver sequências lógicas para uma determinada tarefa (algoritmo) PROGRAMA É um algoritmo codificado em uma linguagem de programação, isto é, um conjunto de instruções/funções que representam tarefas que serão interpretadas e executadas por um computador Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Algoritmos • Uma sequência de passos (instruções) bem definidas • Um algoritmo não representa necessariamente um programa de computador, mas os passos necessários para realização de um tarefa • Podem haver repetição de passos, comparações ou necessitar de decisões • Diferentes algoritmos podem realizar a mesma tarefa. Por exemplo, de quantas formas posso me vestir? Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Etapas para construção de um algoritmo • Entender o enunciado • Identificar operações necessárias • Organizar em sequência • Refletir sobre a solução Introdução à Programação AULA 01: Introdução à Lógica de Programação Conceitos de Lógica Formas de representação de um algoritmo Um algoritmo pode ser representado de diversas formas, respeitando- se padrões para que sejam reconhecidos e utilizados por quem conhece esses padrões. 1. Linguagem natural 2. Fluxograma 3. Pseudocódigo Introdução à Programação AULA 01: Introdução à Lógica de Programação Exercício Linguagem Natural Exemplo: uma sequência de passos para se trocar o pneu de um carro 1. Afrouxe um pouco os parafusos 2. Levante o carro 3. Retire os parafusos 4. Retire o pneu 5. Coloque o pneu reserva 6. Aperte os parafusos 7. Abaixe o carro 8. Aperte os parafusos completamente CCT0672 - Introdução à Programação Aula 02: Formas de representação Introdução à Programação AULA 01: Introdução à Lógica de Programação Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 01: Introdução à Lógica de Programação Roteiro Unidade 1 - Introdução à lógica de programação Conceitos iniciais O que é lógica? O que é um algoritmo? Exercícios para resolução Dicas para se construir bons algoritmos O que é um programa? Introdução à Programação AULA 01: Introdução à Lógica de Programação Roteiro Unidade 1 - Introdução à lógica de programação Formas de representação de um algoritmo 1. linguagem natural 2. fluxograma 3. pseudocódigo Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo Um algoritmo pode ser representado de diversas formas, respeitando-se padrões para que sejam reconhecidos e utilizados por quem conhece esses padrões. 1. Linguagem natural 2. Fluxograma 3. Pseudocódigo Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 1. Linguagem Natural • Com base na linguagem natural do ser humano • As palavras e termos usados dependem unicamente de quem escreve • É preciso ter um cuidado ao utilizar as palavras, para evitar ambiguidade. Algumas dicas para construção: - Utilizar frases curtas - Usar somente um verbo em cada frase - Evitar palavras ambíguas - Detalhar todas as etapas Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 1. Linguagem Natural Exemplo 1: passo a passo para fazer um bolo 1. Pegar todos os ingredientes 2. Misturar na batedeira 3. Acrescentar fermento em pó 4. Reservar 5. Ligar o forno em 180 graus 6. Untar a forma com manteiga e trigo 7. Despejar a massa do bolo na forma 8. Por no forno durante 1h Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 1. Linguagem Natural Exemplo 2: sequência de passos para trocar um pneu 1. Afrouxe um pouco os parafusos 2. Levante o carro 3. Retire os parafusos 4. Retire o pneu 5. Coloque o pneu reserva 6. Aperte os parafusos 7. Abaixe o carro 8. Aperte os parafusos completamente Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representaçãode um algoritmo 1. Linguagem Natural Exemplo 3: sequência de passos para somar duas notas e mostrar a média 1. Ler duas notas 2. Somar as duas notas 3. Dividir o resultado da soma por 2 4. Mostrar o resultado (média) Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 2. Fluxograma • É uma representação gráfica baseada em figuras e esquemas • Busca facilitar a visualização e o entendimento das etapas e processos • As principais figuras utilizadas são: Inicio/fim saída de dados entrada de dados ponto de decisão processamento seta direcional Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo Início Afrouxar os parafusos da roda, um a um Com o macaco, levante o carro Termine de afrouxar os parafusos da roda e os retire Pegue o macaco Substitua o pneu Coloque e aperte os parafusos Com o macaco, abaixe o carro Aperte os parafusos definitivamente Fim 2. Fluxograma Exemplo 4: sequência de passos para trocar um pneu Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 2. Fluxograma Exemplo 5: sequência de passos para s o m a r d u a s n o t a s e mostrar a média ler duas notas somar o resultado mostrar o resultado dividir por dois Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 2. Fluxograma Exemplo 6: ler dois números, A e B, informar qual deles é o maior ler A e B “A é maior!” se (A > B) “B é maior!” V F Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 3. Pseudocódigo • É uma forma de abstrair problemas existentes em formas anteriores • Facilita o aprendizado da lógica de programação • Utiliza notações padronizadas para representar cada etapa de um algoritmo, sem necessidade de conhecer a sintaxe de uma linguagem de programação Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 3. Pseudocódigo inicio num1, num2, soma, sub : inteiro leia (num1, num2); soma <- num1 + num2; sub <- num1 – num2; escreva(soma); escreva(sub); fim Exemplo 7: a l g o r i t m o l e r d o i s números e apresentar o resultado da soma e da subtração entre esses dois números. Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo 3. Pseudocódigo inicio num1, num2, soma : inteiro media : real leia (num1, num2); soma <- num1 + num2; media <- soma / 2; se (media > 7) então escreva(“Aprovado”); fimse fim Exemplo 8: algoritmo ler duas notas, calcular a média e exibir “Aprovado” se a média for maior do que 7 Introdução à Programação AULA 01: Introdução à Lógica de Programação Formas de representação de um algoritmo As formas de representação de um a lgor i tmo acabam sendo representações formais de cada forma anterior! Linguagem Natural Fluxograma Pseudocódigo ler dois números somar os números verificar se é maior que 7 >> mostrar o resultado >> inicio inteiro: num1, num2; leia (num1, num2) soma = num1 + num2 se (soma > 7) então escreva (soma) fimse fim Introdução à Programação AULA 01: Introdução à Lógica de Programação Exercícios Faça os algoritmos abaixo na forma de fluxograma e pseudocódigo 1. Entrar com dois números reais e imprimir a média aritmética com a mensagem “média” antes do resultado 2. Entrar com um número e imprimir a seguinte saída: o número, o quadrado do número e, a raiz quadrada desse número 3. Entrar com dois números e dizer se eles são iguais ou diferentes 4. Entrar com um número e imprimir se ele é positivo, negativo ou nulo 5. Entrar com um número e exibir uma mensagem se ele for múltiplo de 3 6. Ler dois números, A e B e imprimir uma mensagem informando se A é múltiplo de B CCT0672 - Introdução à Programação Aula 03: Manipulação de dados Introdução à Programação AULA 03: Entrada e Saida Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 03: Entrada e Saida Roteiro Unidade 1 - Introdução à lógica de programação Conceitos iniciais O que é lógica? O que é um algoritmo? Exercícios para resolução Dicas para se construir bons algoritmos O que é um programa? Introdução à Programação AULA 03: Entrada e Saida Roteiro Unidade 1 - Introdução à lógica de programação Formas de representação de um algoritmo 1. linguagem natural 2. fluxograma 3. pseudocódigo Manipulação de dados 1. Tipos de dados 2. Variáveis e constantes 3. Operadores aritméticos 4. Operadores relacionais Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Tipos de Dados inteiro Todo e qualquer valor numérico pertencente ao conjunto dos números inteiros (positivo, negativo, nulo) Ex: 27, 0, -10 real Todo e qualquer valor numérico pertencente ao conjunto dos números reais (inteiros e fracionários) Ex: 27, 0, -15, 7.5 caractere (alfanumérico) Sequência contendo letras, números e símbolos especiais Ex: “BETA”, “12376-8” lógico (booleano) Todo e qualquer dado que pode apenas assumir dois valores, verdadeiro ou falso Introdução à Programação AULA 03: Entrada e Saida Exercícios Indique com um X quais os tipos de dados abaixo são do tipo real: a. ( ) 376 b. ( ) - 2.35 c. ( ) false d. ( ) “1.85” e. ( ) - 554 Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Tipos de Dados TIPO DESCRIÇÃO C inteiro números inteiros int real números inteiros e fracionários float caractere (alfanumérico) um ou mais caracteres char lógico (booleano) verdadeiro ou falso Bool Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Variáveis e Constantes • Para que possamos utilizar uma variável, precisamos primeiro declará-la • É nesse momento que o computador reserva um espaço de memória necessário para a variável • Define-se o tipo seguido do nome da variável tipo <nome_da_variavel> int numero; Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Variáveis e Constantes • Para criar o nome das variáveis é preciso se atentar para algumas regras • É formado por um ou mais caracteres (letras ou números) • O primeiro deve ser uma letra • Não é permitido o uso de caracteres especiais, tais como: “”, \, /, -, +, *, %, $, #, @, !, ‘, (, ), = • Letras maiúsculas e minúsculas são consideradas diferentes! Ex: nota é diferente de NOTA Introdução à Programação AULA 03: Entrada e Saida Exercícios Assinale com um X os identificadores válidos: a. ( ) M(1) b. ( ) “NOTA” c. ( ) NOTA1 d. ( ) A3 e. ( ) #BTM f. ( ) salario-liquido g. ( ) salario_liquido h. ( ) f1GHT7 Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Variáveis e Constantes Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Tipos de Dados TIPO BITS INTERVALO char 8 -128 a 127 int 16 -32768 a 32767 float 32 3,4E-38 a 3,4E+38 double 64 1,7E-308 a 1,7E+308 Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Tipos de Dados O tipo de uma variável deve ser muito bem pensado, pois, tem impacto direto no banco de dados de uma aplicação já que mexe com áreas de memória e alocação de espaço! Exemplo • Em 21 de dezembro de 2012, a música “Gangnam Style”, tornou-se o vídeo mais visto do Youtube, atingindo a marca de 1 bilhão de visualizações. Resultado: Foi preciso alterar o tipo da variável que guardava o valor da quantidadede visitas no site Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Tipos de Dados Para saber mais! As falha numéricas que podem causar desastres https://www.bbc.com/portuguese/noticias/2015/05/150513_vert_fut_bug_digital_ ml Erros de cálculo na engenharia https://www.aedb.br/seget/arquivos/artigos18/23226187.pdf Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Palavras reservadas auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores aritméticos • Os computadores podem ser encarados como máquinas capazes de realizar uma quantidade imensa de operações por segundo. • Para se realizar qualquer tipo de cálculo precisamos utilizar sinais gráficos e expressões (aritméticas, relacionais ou lógicas) Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores aritméticos OPERADOR C OPERADOR C soma + resto da divisão % subtração - quociente / multiplicação * incremento ++ divisão / decremento -- potência ** ou função pot() raiz quadrada função sqrt() Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores aritméticos PRIORIDADES N a r e s o l u ç ã o d e e x p r e s s õ e s aritméticas, as operações e funções matemáticas obedecem a uma h i e rarq u i a p ara a s u a co r reta resolução. Introdução à Programação AULA 03: Entrada e Saida Exercícios Supondo que A, B e Y são variáveis do tipo numérico, quais os resultados fornecidos por cada uma das seguintes funções, onde A = 6, B = 7, X = 2.5 e Y = -4 a. ( ) ((B * X - A) + A) b. ( ) (((A - B) * Y) + X) c. ( ) ((A - Y) mod A) d. ( ) (((A + B * 2) div 2) ** 2 mod 10) – abs(X * 3 – A * 4 + 5.75) Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores relacionais Utilizados para realizar comparações entre dois valores do mesmo tipo OPERADOR C igual a == maior que > menor que < diferente de != ou <> maior ou igual a >= menor ou igual a <= Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores relacionais O resultado obtido dessa relação é um valor lógico (V ou F) Exemplo 6 * 3 = 48 / 3 18 = 16 F Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores lógicos Utilizados para realizar comparações entre dois valores quaisquer, tendo como resultado um valor lógico (V ou F) OPERADOR C negação (não) ! conjunção (e) && disjunção (ou) || Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores lógicos Para um melhor entendimento e visualização das possíveis relações, fazemos uso da Tabela Verdade, que contém o conjunto de todas as possibilidades lógicas das situações e seus valores A B A e B A ou B não A não B V V V V F F V F F V F V F V F V V F F F F F V V Introdução à Programação AULA 03: Entrada e Saida Manipulação de dados Operadores lógicos PRIORIDADES Introdução à Programação AULA 03: Entrada e Saida Exercícios Seja A = 1.5, B = 4, C = 6, NOME = “ANA”, COR = “VERDE” e TESTE = V. Determine os resultados obtidos em cada uma das seguintes expressões. a. NOME = “ANA” e A = 1 ou C = 6 e COR = “VERMELHO” b. NOME = "PEDRO" ou COR = "VERDE" e B >= C – A c. NOME = "ANA" e A = 1.5 ou C = 6 e COR = "BRANCO CCT0672 - Introdução à Programação Aula 04: Estrutura Sequencial Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 02: Linguagens e estrutura de um programa Roteiro Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Estrutura básica de um programa Leitura de dados Atribuição ou processamento Saída de dados Caracteres de controle Formatação de campos Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Características Estrutura básica de um programa • É possível visualizar que nosso algoritmo/sistema precisará obter dados de algum lugar, processar esses dados e fornecê-los processados para algum lugar Para a entrada de dados é necessário que as variáveis a serem utilizadas estejam corretamente declaradas! Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Características Estrutura básica de um programa • Após a declaração, é possível realizar a leitura de dados • Com os dados lidos, é possível realizar o devido processamento • Para então exibir os dados para o usuário na tela Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Estrutura básica PSEUDOCÓDIGO C inicio inteiro: nota1, nota2, soma, media; leia (nota1, nota2); soma <- nota1 + nota2; media <- soma / 2; escreva (media); fim #include<stdio.h> int main () { int nota1, nota2, soma; float media; scanf(“%d %d”, nota1, nota2); soma = nota1 + nota2; media = soma / 2; printf(“%f”, media); return 0; } Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Estrutura básica Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Entrada de dados Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Entrada de dados ESPECIFICADOR REPRESENTA %c um único caractere %d número inteiro decimal %f número real de precisão simples %s cadeia de caracteres (string) %% sinal de porcentagem ESPECIFICADORES DE FORMATO Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Saída de dados Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Caracteres de controle CARACTERE EFEITO \a soa o alarme \b o cursor retrocede uma coluna \f alimenta a página da impressora \n o cursor retrocede a primeira coluna \r sinal de porcentagem \” exibe uma aspa Introdução à Programação AULA 02: Linguagens e estrutura de um programa Estrutura sequencial Formatação de campos Introdução à Programação AULA 02: Linguagens e estrutura de um programa Exercícios Nos itens abaixo, acompanhe a execução do algoritmo mostrando os valores das variáveis após cada instrução. a. A 5 B A + 3 C A + B D A + B – C a. X 10 Y X div 4 Z (X - Y) * 2 X X + Y - Z Introdução à Programação AULA 02: Linguagens e estrutura de um programa Exercícios Para as questões a seguir construa o algoritmo necessário. 1. Ler dois valores e imprimir o quadrado da diferença do primeiro valor pelo segundo 2. Construa um algoritmo que calcule a média aritmética entre 3 notas fornecidas pelo usuário 3. Ler dois valores e imprimir o quadrado diferença do primeiro valor pelo segundo 4. Ler uma temperatura em fahreinheit e apresentá-la convertida em graus celsius. A fórmula de conversão é: C (F - 32) * (5 / 9) CCT0672 - Introdução à Programação Aula 05: Estrutura de decisão Introdução à Programação AULA 4: Estruturas de decisão Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 4: Estruturas de decisão Roteiro Unidade 1 - Introdução àlógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Características Formato Representação Tipos Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Características • Utilizada quando o nosso processamento depende de uma decisão a ser tomada • essa estrutura de decisão divide o fluxo de execução do código - se a condição for verdadeira, faz uma coisa - se a condição for falsa, faz outra Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Chegou a hora da decisão, vamos fazer nossas escolhas! Vamos apresentar a estrutura de decisão: SE condição ENTÃO faça isso se condição for Verdadeira SENÃO ou faça isso se a condição for Falsa Formato Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão SE fizer sol ENTÃO vou a praia SE NÃO chover ENTÃO vou a praia SE chover ENTÃO vou ao cinema SENÃO vou a praia SE NÃO chover E eu acordar cedo ENTÃO vou a praia SE chover OU eu acordar tarde ENTÃO vou ao cinema Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão if (condição) { <bloco de comandos> // true } else { <bloco de comandos> // false } FLUXOGRAMA Representação se (condição) então <bloco de comandos> // V senão <bloco de comandos> // F fimse PSEUDOCÓDIGO LINGUAGEM C Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Representação Exemplo 1: faça um algoritmo que verifique se um número é par ou ímpar FLUXOGRAMA NUM “PAR” “IMPAR!” V F (NUM % 2 == 0) ? Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão inicio inteiro: num; leia (num); se (num mod 2 == 0) então escreva (“Par”); senão escreva (“Impar”); fimse fim Representação Exemplo 1: faça um algoritmo que verifique se um número é par ou ímpar PSEUDOCÓDIGO Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão #include<stdio.h> int main() { int num; scanf(“%d”, &num); if (num % 2 == 0) { printf (“%d é par”, num); } else { printf (“%d é impar”, num); } return 0; } Representação Exemplo 1: faça um algoritmo que verifique se um número é par ou ímpar LINGUAGEM C Introdução à Programação AULA 4: Estruturas de decisão Exercícios 1. Faça um algoritmo que leia dois números, faça a soma entre eles, compare o resultado com o número 20 e imprima se a “soma é menor ou igual a 20” ou “a soma é maior que 20” 2. Construa um programa em C que leia o salário bruto de uma pessoa. Se o salário for maior do que R$ 2.000,00, então o desconto do IR será de 20%, caso contrário não haverá desconto. Mostre o salário liquido. 3. Construa um programa em C que leia duas notas de um aluno, calcule a média e mostre se o aluno foi ou não aprovado (média maior ou igual a 5 para aprovação). Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Tipos • Simples • Composta • Aninhado Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Tipos 1. Simples 2. Composta 3. Aninhado #include<stdio.h> int main() { int num; scanf(“%d”, &num); if (num > 0) { printf (“é positivo”); } return 0; } Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Tipos 1. Simples 2. Composta 3. Aninhado #include<stdio.h> int main() { int num; scanf(“%d”, &num); if (num % 2 == 0) { printf (“%d é par”, num); } else { printf (“%d é impar”, num); } return 0; } Introdução à Programação AULA 4: Estruturas de decisão Estrutura de decisão Tipos 1. Simples 2. Composta 3. Aninhado #include<stdio.h> int main() { int num; scanf(“%d”, &num); if (num > 0) { printf (“é positivo”); } else if (num < 0) { printf (“é negativo”); } else { printf (“é nulo”); } return 0; } CCT0672 - Introdução à Programação Aula 06: Estrutura de Decisão (switch-case) Introdução à Programação AULA 6: Seleção Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 6: Seleção Roteiro Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Características Formato Representação Tipos Instrução escolha (switch – case) Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) Motivação • Quando temos uma única variável podendo assumir diversos valores diferentes, em que, para cada valor, teremos uma ação associada, geralmente pensamos na utilização de diversos ifs aninhados • Essa escrita deixa o código poluído, difícil de dar manutenção • Gera erros simples, porém difíceis de serem detectados Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) Quando temos muitas condições encadeadas, a complexidade do código é aumentada! Usando i f an inhados acaba ficando custoso, em termos de processo. MotivaçãoMotivação Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) Motivação • Para resolver essa situação, utilizamos a estrutura condicional múltipla (switch-case) • Permite estruturar melhor e de maneira mais eficiente problemas como o apresentado anteriormente • Permite a elaboração de condicionais mutuamente exclusivas, ou seja, uma estrutura que seleciona e executa apenas uma condição por vez Introdução à Programação AULA 6: Seleção Expressão bloco de código 1 bloco de código 2 bloco de código 3 bloco de código N Case 1 Case 2 Case 3 Default Motivação: muitas condições encadeadas Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) #include<stdio.h> int main() { int num; scanf(“%d”, &num); switch (num) { case 1: printf (“domingo”); break; case 2: printf (“segunda”); break; case 3: printf(“terça”); break; case 4: printf(“quarta”); break; case 5: printf (“quinta”); break; case 6: printf (“sexta”); break; case 7: printf (“sábado”); break; default: printf(“Erro”); break; } return 0; } Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) #include<stdio.h> int main() { int num; scanf(“%d”, &num); switch (num) { case 1: printf (“domingo”); break; case 2: printf (“segunda”); break; case 3: printf(“terça”); break; case 4: printf(“quarta”); break; case 5: printf (“quinta”); break; case 6: printf (“sexta”); break; case 7: printf (“sábado”); break; default: printf(“Erro”); break; } return 0; } Case: só valida igualdade! Introdução à Programação AULA 6: Seleção Estrutura de decisão (switch-case) #include<stdio.h> int main() { int num; scanf(“%d”, &num); switch (num) { case 1: printf (“domingo”); break; case 2: printf (“segunda”); break; case 3: printf(“terça”); break; case 4: printf(“quarta”); break; case 5: printf (“quinta”); break; case 6: printf (“sexta”); break; case 7: printf (“sábado”); break; default: printf(“Erro”); break; } return 0; } Comando break: impede que os demais “case” sejam executadas e a execução é desviada para o o comando após o final do switch CCT0672 - Introdução à Programação Aula 07: Condições compostas Introdução à Programação AULA 7: Condições compostas Operadores lógicos && AND (E) || OR (OU) ! NOT (NÃO) 1 Verdadeiro 0 FalsoA B A && B 0 0 0 0 1 0 1 0 0 1 1 1 A B A || B 0 0 0 0 1 1 1 0 1 1 1 1 A !A 1 0 1 0 Introdução à Programação AULA 7: Condições compostas Exemplificando Problema: definir o tipo do triângulo Entrada: lados a, b, c Saída: tipo de triângulo Condições: 1) Para ser um triângulo: a < b + c b < a+ c c < a + b 2) Para ser um triângulo equilátero: a = b, b = c e c = a. 3) Para ser um isósceles: a=b ou a=c ou b=c 4) Para ser escaleno: a!=b, b!=c (lembre-se que “!=” é o símbolo para “diferente de”) Equilátero Isósceles Escaleno Introdução à Programação AULA 7: Condições compostas Exemplificando Verificar se é um triângulo if ((a<b+c) && (b<a+c) && (c<a+b)) { //verifica o tipo } else { printf ("Os dados não formam um triangulo"); } É um triângulo Não é um triângulo Introdução à Programação AULA 7: Condições compostas Exemplificando Verificar se é um triângulo equilátero if ((a<b+c) && (b<a+c) && (c<a+b)){ if ((a==b) && (b==c) { printf ("Triangulo equilatero“); } else { } } else { printf ("Os dados não formam um triangulo"); } É um triângulo Não é equilátero Introdução à Programação AULA 7: Condições compostas Exemplificando Verificar se é um triângulo equilátero if ((a<b+c) && (b<a+c) && (c<a+b)){ if ((a==b) && (b==c){ printf ("Triangulo equilatero“); } else { if ((a==b) || (a==c) || (c==b)) { printf (“Triangulo isosceles”); } else { printf ("Triangulo escaleno“); } } } else { printf ("Os dados nao formam um triangulo"); } É um triângulo É isósceles Não é isósceles nem equilátero Atenção para abertura e fechamento das chaves! CCT0672 - Introdução à Programação Aula 08: Estruturas de Repetição Introdução à Programação AULA 8: Estruturas de Repetição Estrutura da disciplina Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Unidade 5 - Modularização Unidade 6 - Estrutura de Dados Homogênea Introdução à Programação AULA 8: Estruturas de Repetição Roteiro Unidade 1 - Introdução à lógica de programação Unidade 2 - Estrutura Sequencial Unidade 3 - Estrutura de Decisão Unidade 4 - Estrutura de Repetição Motivação Problemas For, While, Do-While Comparação Introdução à Programação AULA 8: Estruturas de Repetição Estrutura de repetição Motivação include<stdio.h> int main() { int fat = 6; fat = fat * 5; fat = fat * 4; fat = fat * 3; fat = fat * 2; fat = fat * 1; printf("Fatorial de 6 = %d”, fat);; return 0; } Como calcular o fatorial de 6? Imagine se fosse o fatorial de 100 ?!?!?!? Introdução à Programação AULA 8: Estruturas de Repetição Estrutura de repetição Motivação • Como entrar com as notas de 35 alunos de uma turma? • Como continuar comprando em uma loja enquanto o valor da soma for menor que R$200,00 ? • Como exibir um menu de funções até que seja digitado o número 9? São problemas parecidos mas não são iguais! Em comum: um conjunto de operações que se repetem Introdução à Programação AULA 8: Estruturas de Repetição Estrutura de repetição Motivação • Como entrar com as notas de 35 alunos de uma turma? - número conhecido de repetições • Como continuar comprando em uma loja enquanto o valor da soma for menor que R$200,00? - enquanto uma condição for verdadeira • Como exibir um menu de funções até que seja digitado o número 9? - até que uma condição seja verdadeira São problemas parecidos mas não são iguais! Introdução à Programação AULA 8: Estruturas de Repetição Comando for int main () { int cont, num; printf ("Numero: ”); scanf (“%d”, &num); for (cont=1;cont<10;cont++) { printf (“%d x %d =”,num,cont); printf (“%d\n”, num*cont); } return 0; } for (inicial ; condição ; incremento) { bloco de comando } Nº conhecido de repetições Introdução à Programação AULA 8: Estruturas de Repetição Comando while int main () { int cont,num; printf(“Numero: ”); scanf(“%d”, &num); cont = 1; // inicialização while (cont < 10) { printf (“%d x %d =”,num,cont); printf (“%d\n”, num*cont); cont++; } return 0; } while (condição verdadeira) { bloco de comando } Enquanto uma condição for verdadeira Introdução à Programação AULA 8: Estruturas de Repetição Comando do/while int main () { int cont,num; printf(“Numero: ”); scanf(“%d”, &num); cont = 1; // inicialização do { printf (“%d x %d =”,num,cont); printf (“%d\n”, num*cont); cont++; } while (cont < 10); return 0; } do { bloco de comando } while (condição verdadeira); Até que uma condição se torne verdadeira Introdução à Programação AULA 8: Estruturas de Repetição Estrutura de repetição Comparação Na tabela a seguir é possível visualizar um resumo sobre as três estruturas. ESTRUTURA CONDIÇÃO (LOCAL) EXECUÇÕES CONDIÇÃO (EXISTIR) WHILE início indefinido condição verdadeira DO-WHILE fim mínimo 1 condição falsa FOR início de acordo com o problema valor inicial <= valor final Introdução à Programação AULA 8: Estruturas de Repetição Exercícios 1. Faça um programa para exibir a tabuada de um número qualquer informado pelo usuário. Use as três estruturas de repetição 2. Faça um algoritmo que imprima todos os números pares no intervalo de 1 a 100 3. Faça um algoritmo para ler 10 notas de um aluno, calcular a média e verificar se está aprovado ou não, considerando a média igual a 7 4. Faça um algoritmo que leia uma quantidade indefinida de números fornecidos pelo usuário e apresente a soma de todos os números lidos. O programa para de executar quando o usuário digitar um número menor do que 0 5. Faça um programa que leia dois números fornecidos pelo usuário e escreva todos os números existentes no intervalo do menor para o maior. CCT0672 - Introdução à Programação Aula 09: Estratégias de repetição Introdução à Programação AULA 9: Estratégias de repetição Estratégias de repetição for ( ; ; ) loop infinito for ( ; x>0; ) x é inicializado antes do for e seu valor é alterado dentro do bloco for ( x=0; x< 10; ) o valor de x é alterado dentro do bloco for ( x=0; x < 1000; x++); “temporizador” Casos particulares : for Introdução à Programação AULA 9: Estratégias de repetição Estratégias de repetição while (1) loop infinito while (x) permance em execução enquanto x for diferente de 0 ou de NULL while ( x == 1); loop infinito também while ( x = 1); outro loop infinito Casos particulares : while Introdução à Programação AULA 9: Estratégias de repetição Estratégias de repetição do ... while (1); loop infinito do ... while (x); permance em execução enquanto x for diferente de 0 ou de NULL do ... while ( x == 1) ; o valor de x pode ser alterado no bloco. OK. do ... while ( x = 1) loop infinito; será sempre verdadeiro Casos particulares : do-while Introdução à Programação AULA 9: Estratégias de repetição Repetição controlada por contador #include <stdio.h> int main(){ int x; for (x=1; x<=10; x++) printf(“%d”, x); return 0; } for(inicialização ; condição ; incremento) <comandos> Conta de 1 a 10 Introdução à Programação AULA 9: Estratégias de repetição Repetição controlada por contador #include <stdio.h> int main(){ int x; for (x=1; x<=10; x++) printf(“%d”, x); printf(“Lançar!”); return 0; } for(inicialização ; condição ; incremento) <comandos> Conta de 10 a 1 Introdução à Programação AULA 9: Estratégias de repetição 1 #include <iostream> using namespace std; 2 3 int main(int argc, char** argv) { 4 int numero; 5 int contador=1; 6 int resultado; 7 8 cout<<"Qual a tabuada?"<<endl; 9 cin>>numero; 10 11 while (contador<=10){ 12 resultado = numero*contador; 13 cout<<numero<<" * "<<contador<<" = "<<resultado; 14 contador = contador+1; 15 } 16 cout<<"*** FIM ***"; 17 return 0; 18 } while (<condição>) { <bloco de comandos> } Introdução à Programação AULA 9: Estratégias de repetição Repetiçãocom limite do contador determinado pelo usuário Introdução à Programação AULA 9: Estratégias de repetição 1 #include <iostream> using namespace std; 2 3 int main(int argc, char** argv) { 4 int numero; 5 int contador; 6 int resultado; 7 char resposta ='s'; 8 9 while (resposta=='s'){ 10 contador = 1; 11 cout<<"Qual a tabuada? "<<endl; 12 cin>>numero; 13 14 while (contador<=10){ 15 resultado = numero*contador; 16 cout<<numero<<" * "<<contador<<" = "<<resultado; 17 contador = contador+1; 18 } 19 20 cout<<"Deseja continuar (s/n)?"<<endl; 21 cin>>resposta; 22 } 23 cout<<"*** FIM ***"; 24 return 0; 25 } Um loop dentro de outro Repetição controlada pelo resultado de uma operação CCT0001 - Introdução à Programação Aula 10: Estratégias de repetição Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? Qual estrutura de repetição usar? Vamos fazer um programa que leia as opções de um menu: 1- INCLUIR 2- EXCLUIR 3- CONSULTAR 9- SAIR PRECISAREMOS DE: Uma variável inteira para receber a opção Um comando para ler a variável opção Um loop que ficará em execução enquanto a variável opção for diferente de 9 Uma seleção múltipla para executar o que cada opção indica Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? O BÁSICO NÃO MUDA: switch (opcao) { case 1: printf(“VAI INCLUIR\n“); break; case 2: printf(“VAI EXCLUIR\n“); break; case 3: printf(“VAI CONSULTAR”); break; case 9: break; default: printf(“INVALIDA\n”); } return 0; } #include<stdio.h> int main () { int opcao; printf(“MENU\n”); printf(“1-INCLUIR\n”); printf(“2-EXLUIR\n”); printf(“3-CONSULTAR\n”); printf(“9-SAIR\n”); scanf(“%d”, &opcao); Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? O BÁSICO NÃO MUDA: switch (opcao) { case 1: printf(“VAI INCLUIR\n“); break; case 2: printf(“VAI EXCLUIR\n“); break; case 3: printf(“VAI CONSULTAR”); break; case 9: break; default: printf(“INVALIDA\n”); } return 0; } #include<stdio.h> int main () { int opcao; printf(“MENU\n”); printf(“1-INCLUIR\n”); printf(“2-EXLUIR\n”); printf(“3-CONSULTAR\n”); printf(“9-SAIR\n”); scanf(“%d”, &opcao); ... MAS A CADA EXECUÇÃO O PROGRAMA PARA... QUAL ESTRUTURA DE REPETIÇÃO USAR PARA QUE ISSO NÃO ACONTEÇA ???! Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? PODEMOS USAR O FOR switch (opcao) { case 1: printf(“INCLUIR\n“); break; case 2: printf(“EXCLUIR\n“); break; case 3: printf(“CONSULTAR”); break; case 9: break; default: printf(“INVALIDA\n”); } } return 0; } #include<stdio.h> int main () { int opcao; for (opcao=1; opcao!=9;) { printf(“MENU\n”); printf(“1-INCLUIR\n”); printf(“2-EXLUIR\n”); printf(“3-CONSULTAR\n”); printf(“9-SAIR\n”); scanf(“%d”, &opcao); Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? PODEMOS USAR DO-WHILE switch (opcao) { case 1: printf(“INCLUIR\n“); break; case 2: printf(“EXCLUIR\n“); break; case 3: printf(“CONSULTAR”); break; case 9: break; default: printf(“INVALIDA\n”); } } while (opcao != 9); return 0; } #include<stdio.h> int main () { int opcao; do { printf(“MENU\n”); printf(“1-INCLUIR\n”); printf(“2-EXLUIR\n”); printf(“3-CONSULTAR\n”); printf(“9-SAIR\n”); scanf(“%d”, &opcao); Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 1. Se você souber quantas vezes vai repetir um ou mais comandos quando estiver construindo um algoritmo, qual seria a estrutura mais simples para ser usada? a) Estrutura do while. b) Estrutura do for. c) Estrutura do do ... while. Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 1. Se você souber quantas vezes vai repetir um ou mais comandos quando estiver construindo um algoritmo, qual seria a estrutura mais simples para ser usada? a) Estrutura do while. b) Estrutura do for. c) Estrutura do do ... while. Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 2. Qualquer uma das três estruturas de repetição, na linguagem C++, pode simular qualquer outra estrutura. a) Verdade b) Falso. Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 2. Qualquer uma das três estruturas de repetição, na linguagem C++, pode simular qualquer outra estrutura. a) Verdade. b) Falso. Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 3. Cada estrutura possui uma “vocação”. Identifique qual a melhor estrutura para: a) Contar 10 repetições b) Executar um bloco de comandos pelo menos uma vez até que o usuário não queira mais continuar c) Só iniciar a execução de um bloco se existir uma condição inicial válida fornecida pelo usuário Introdução à Programação AULA 10: Estratégias de repetição Qual utilizar? 3. Cada estrutura possui uma “vocação”. Identifique qual a melhor estrutura para: Contar 10 repetições For Executar um bloco de comandos pelo menos uma vez até que o usuário não queira mais continuar do/while Só iniciar a execução de um bloco se existir uma condição inicial válida fornecida pelo usuário while CCT0001 - Introdução à Programação Aula 11: Estruturas homogêneas Introdução à Programação AULA 11: Estruturas homogêneas • Matriz é um arranjo de elementos dispostos em linhas e colunas • Toda matriz tem uma letra maiúscula como nome e, de forma subscrita, sua dimensão, isto é, o número de linhas (m) e de colunas (n) separadas pela letra “x” minúscula • Cada elemento é representado pela letra minúscula correspondente ao nome da matriz e, de forma subscrita, sua posição linha (m) / coluna (n) Revisão de Matemática Introdução à Programação AULA 11: Estruturas homogêneas Matrizes unidimensionais Revisão de Matemática Introdução à Programação AULA 11: Estruturas homogêneas Conceitos A estrutura homogênea é formada por elementos do mesmo tipo Podemos dizer que uma matriz é um conjunto de variáveis, todas com o mesmo nome e só diferenciadas pela posição que ocupam nesse conjunto. Ou seja, uma coleção de variáveis do mesmo tipo Como já vimos, quando uma matriz tem somente uma dimensão, chamamos de vetor, como na Matemática, ou array ou matriz unidimensional Na linguagem C++, assim como em outras linguagens, essa dimensão que localiza a posição de uma variável vem entre um par de colchetes Introdução à Programação AULA 11: Estruturas homogêneas Declaração Alguns exemplos de declaração em C++ Linguagem C++ /* declarar um vetor para armazenar 15 idades */ Int idades[15]; /*declarar um vetor para armazenar 100 notas*/ Float notas[100]; /*declarar um vetor para armazenar o sexo de 30 pessoas*/ Char sexo[30]; Introdução à Programação AULA 11: Estruturas homogêneas Declaração Na linguagem C++, uma string é um vetor de caracteres terminado com um caracter nulo cujo valor inteiro é igual a zero (código ASCII igual a 0). O terminador nulo também pode ser escrito usando a convenção de barra invertida do C++ como sendo '\0'. Como precisamos reservar uma posição para o terminador, sempre iremos declarar o tamanho necessário mais um. Observe o armazenamento da variável universidade declarada com tamanho 8: Universidade E S T A C I O \0 0 1 2 3 4 5 6 7 Introdução à Programação AULA 11: Estruturas homogêneas Construindo um vetor Programa que armazena valores inteiros em um vetor de 6 posições e gera um vetor com o dobro de cada elemento 1 #include <iostream> 2 using namespacestd; 3 4 int main(int argc, char** argv) { 5 int i, vetor [6], dobro [6]; 6 7 for (i=0;i <6;i++){ 8 9 cout<<"Qual o valor de vetor[”<<i<<“]? "<<endl; 10 cin>>vetor[i]; 11 dobro[i]= vetor[i]*2; 11 } 12 for (i=0;i <6;i++){ 13 cout<<“dobro[“<<i<<“] = “<< dobro[i]<<endl; 14 } 15 system (“pause”); 16 return 0; 17 } Ambos valores ficam armazenados Introdução à Programação AULA 11: Estruturas homogêneas Um tipo especial: string int main () { char nome[5]; cout << "ler um caractere:"; cin >> nome[0]; //ler um caractere: A cout << nome [0] << "\n"; //A cout << "ler um nome:"; cin >> nome[5]; //ler um nome: amor cout << nome[5]<<"\n"; //amor system ("pause"); } Introdução à Programação AULA 11: Estruturas homogêneas Um tipo especial: string int main () { char nome[5]; cout << "CARACTERE 1:"; cin >> nome[0]; O cout << "CARACTERE 2:"; cin >> nome[1]; L cout << "CARACTERE 3:"; cin >> nome[2]; A cout << nome [5] << "\n"; ??????? system ("pause"); } TODA STRING DEVE TERMINAR COM \0 Introdução à Programação AULA 11: Estruturas homogêneas Um tipo especial: string int main () { char nome[5]; cout << "CARACTERE 1:"; cin >> nome[0]; O cout << "CARACTERE 2:"; cin >> nome[1]; L cout << "CARACTERE 3:"; cin >> nome[2]; A nome[3] = ‘\0’; cout << nome [5] << "\n"; OLA TODA STRING DEVE TERMINAR COM \0 Introdução à Programação AULA 11: Estruturas homogêneas Exemplificando Construa um algoritmo (e implemente em C++) que permita a entrada da matrícula, do salário base e a classificação de vários funcionários. Para cada funcionário deverão ser impressos a matrícula e seu novo salário. A entrada de dados termina quando se digita uma matricula não positiva. Uma empresa classifica seus funcionários de acordo com um índice de produtividade: (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário de acordo com a seguinte tabela: Excelente 40 % do salário base Bom 20 % do salário base Regular 5 % do salário base Introdução à Programação AULA 11: Estruturas homogêneas Exemplificando int main ( ) { int matricula; float salario; char indice; do { cout <<"Matricula: "; cin >> matricula; if (matricula > 0){ cout << "Salario: R$ "; cin >> salario; cout <<"Indice : "; cin >> indice; switch (indice){ case 'e': salario = salario * 1.4; break; case 'b': salario = salario * 1.2; break; case 'r': salario = salario *1.05; break; default: cout << "Indice Invalido\n"; } cout << "Matricula: "<< matricula ; cout <<" Salario: R$ " << salario << “\n"; } } while (matricula> 0); system ("pause"); } Introdução à Programação AULA 11: Estruturas homogêneas Exemplificando Como armazenar estes valores para gerar uma listagem no final? • Criaremos um vetor para matricula e um para avaliação e outro para o salário. • Vamos estimar que a empresa tem no máximo 100 funcionários precisaremos para dimensionar os vetores. • Será preciso controlar dois parâmetros: a quantidade máxima e o término provocado pelo usuário Introdução à Programação AULA 11: Estruturas homogêneas Exemplificando int main ( ) { int matricula[100], i=0, j=0; float salario[100], sal=0; char índice[100]; do { cout <<"Matricula: "; cin >> matricula[i]; if (matricula[i] > 0){ cout << "Salario: R$ "; cin >> salario[i]; cout <<"Indice : "; cin >> índice[i]; i++; } } while (matricula[i]> 0 && i<100); for (j=0; j <i; j++) { cout << "Matricula: "<< matricula[j] << endl ; switch (índice[j]){ case 'e': sal = salario[i] * 1.4; break; case 'b': sal = salario[i] * 1.2; break; case 'r': sal = salario[i] *1.05; break; default: cout << "Indice Invalido\n"; } cout <<" Salario: R$ " << salario << “\n"; } system ("pause"); } CCT0001 - Introdução à Programação Aula 12: Estruturas homogêneas Introdução à Programação AULA 12: Estruturas homogêneas • Declaração int vetor[5][6]; • Entrada cin >> vetor[4][1]; • Saída cout << vetor[4][1]; • Atribuição vetor [4][1] = 10; Matrizes 0 1 2 3 4 5 0 1 2 3 4 10 Introdução à Programação AULA 12: Estruturas homogêneas • Declaração char string[5][6]; • Entrada cin >> vetor[4][1]; cin >> vetor[4]; • Saída cout << vetor[4][1]; • Atribuição vetor [4][1] = ‘X’; Matrizes 0 1 2 3 4 5 0 B O A \n 1 N O I T E \n 2 T U R M A \n 3 4 X Introdução à Programação AULA 12: Estruturas homogêneas Matrizes: loop aninhado Programa que leia valores reais para uma matriz 3 x 3 e exiba todos os elementos exceto os elementos da diagonal principal. • Declarar uma matriz de inteiros 3 x 3 • Loop aninhado • Loop para exibir os elementos exceto quando a linha for igual a coluna Introdução à Programação AULA 12: Estruturas homogêneas Matrizes: loop aninhado int main () { int matriz[3][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++){ cout << "("<<i<<","<<j<<")="; cin >> matriz[i][j]; } cout <<" FIM DA ENTRADA\n\n"; for(i=0;i<3;i++){ for(j=0;j<3;j++) if (i != j) cout <<matriz [i][j]; cout << "\t"; else cout << "X\t"; cout <<"\n"; } system ("pause"); Introdução à Programação AULA 12: Estruturas homogêneas Matrizes: loop aninhado CCT0001 - Introdução à Programação Aula 13: Funções Introdução à Programação AULA 13: Funções • Modularização do programa • Dividir um grande problema em problemas menores • Organização Para que servem? Comando Comando Programa principal Função Comando Comando Comando Comando Comando Comando Comando Introdução à Programação AULA 13: Funções Formato Tipo_da_função nome_da_função(lista_de_parâmetros){ Corpo da função } • Tipo da função: configura um valor que afunção retornará quando terminar. O valor é enviado ao módulo que chamou a função. Caso o tipo da função não seja especificado, o compilador assumirá que o tipo retornado é int. • Lista de parâmetros: é a relação de variáveis e seus tipos. Introdução à Programação AULA 13: Funções Exemplificando 1 #include <cstdlib> 2 #include <iostream> 3 4 using namespace std; 5 6 int quadrado(int); 7 8 int main(int argc, char *argv[]){ 9 int numero, quad; 10 cout << "Digite um valor inteiro: "; 11 cin >> numero; 12 quad = quarado(numero); 13 count << “Quadrado de “ << numero<< “ igual a “ << quad << endl; 14 return 0; 15 } 1 int quadrado (int n){ 2 n = n*n; 3 return (n); 4 } Função Introdução à Programação AULA 13: Funções Escopo de variáveis Variáveis Locais A variável local só é visível e existente dentro da função ou bloco que a declarou. Outras funções não a reconhecem e só pode ser usada dentro do bloco no qual está declarada. Uma variável local é criada quando a função começa a ser executada e removida no final da execução da função. Variáveis Globais As variáveis globais são visíveis durante toda a execução do programa e podem ser usadas por qualquer função. Elas são declaradas fora de qualquer função, inclusive do main(), e no início de um programa. Introdução à Programação AULA 13: Funções Escopo de variáveis Parâmetros Formais São variáveis locais em uma função que são inicializadas no momento da chamada desta função e só existem dentro da função onde foram declarados. Mesmo sendo usadas como inicialização da função, elas podem ser usadas como qualquer outra variável local dentro do bloco de função onde estão. Introdução à Programação AULA 13: Funções Parâmetrose retorno de uma função O comando return é utilizando para devolver um valor ao programa. return (valor); O tipo do valor que será retornado está definido na declaração da função. int quadrado(int); a função retornará um valor inteiro Quando a função não retorna valor, será declarada como void. O tipo de cada valor que passado para uma função está descrito na declaração da função. int quadrado(int); a função receberá um valor inteiro Introdução à Programação AULA 13: Funções Matrizes: loop aninhado #include <cmath> sqrt(x) calcula raiz quadrada de x cos(x) calcula cosseno de x #include <cctype> toupper(carac) converte minúscula em maiúscula tolower(carac) converte maiúscula em minúscula #include <cstdlib> atoi(str) converte o que for possível em número inteiro atof(str) converte o que for possível em float Introdução à Programação AULA 13: Funções Matrizes: loop aninhado #include <cstring> strlen (str) retorna o número de caracteres de str que precedem o caractere \0 strcat (str1,str2) anexa o conteúdo de str2 ao final de str1 strcpy (str1,str2) copia o conteúdo de str2 em str1 strcmp (str1,str2) compara o conteúdo de str1 e str2 e o retorno pode ser: Curso: Ciência da Computação e Redes de Computadores Disciplina: Introdução a Programação C Professor: Rodrigo Azevedo da Costa Lista de Exerćıcios I Algumas dicas importantes: – Resolva todos os exerćıcios utilizando pseudocódigo, exemplo abaixo – Lembre-se de declarar todas as variáveis a serem utilizadas – Atente-se principalmente à estrutura do algoritmo, posteriormente, fare- mos no visualg e no editor de códigos C 1. Faça um programa que leia dois valores inteiros e positivos X e Y. Calcule e mostre o resultado da soma, subtração, multiplicação e potência para X e Y. Resposta inicio; inteiro: x, y, soma, sub, mult, pot; leia (x, y); soma = x + y; sub = x - y; mult = x * y; pot = x ** y; escreva (”Soma:”,soma); escreva (”Subtração:”,sub); escreva (”Multiplicação:”,mult); escreva (”Potência:”,pot); fim 2. Escreva um programa que leia o primeiro nome do usuário e depois que leia o último nome. Ao final, o programa deve imprimir no console o último nome seguido do primeiro e separados por v́ırgula. 3. Escreva um programa que leia o ano de nascimento de uma pessoa, calcula e imprime no console a idade dela. 4. Escreva um programa que leia três notas de um aluno e imprime no console a média que ele obteve na disciplina. 5. Escreva um programa que leia o salário total de uma pessoa e quantas horas ela trabalha por dia. Em seguida, calcule e imprima quanto essa pessoa recebe por hora. 6. Sabe-se que o m2 de construção custa 50 reais. Escreva um programa que leia as medidas de um terreno retangular, calcula e imprime quanto custa para construir uma casa que ocupe esse terreno. 1 7. Uma loja está oferecendo um grande desconto: para as clientes que levarem 3 produtos, será dado um desconto de 20% no valor total da compra. Crie um programa que leia o preço dos três produtos e calcule e imprima no console: o valor do total da compra sem desconto, quanto foi o desconto e quanto deverá ser pago. 8. Escreva um algoritmo para ler o salário mensal atual de um funcionário e o percentual de reajuste para aumento. Calcular e escrever o valor do novo salário. 9. Escreva um algoritmo que transforme o grau Celsius dado pelo usuário em Fahrenheit. Lembrete, a fórmula para conversão é: F = C * (9/5) + 3. 10. Faça um algoritmo que leia três notas de um aluno, calcule e escreva a média final deste aluno. Considerar que a média é ponderada e que o peso das notas são 2, 3 e 5. 11. Implemente um algoritmo que, dados 3 ângulos fornecidos pelo usuário, ver- ifique se os mesmos são ângulos internos de um triângulo. Para isso a soma dos 3 ângulos deve ser sempre igual a 180. Se forem, calcule e imprima os 3 ângulos externos, lembrando que todo ângulo externo de um triângulo é igual a soma dos dois ângulos internos não adjacentes – exemplo: ângulo externo A = ângulo interno b + ângulo interno c. 12. Escreva um algoritmo que leia o valor do raio de uma circunferência e mostre para o usuário o valor do comprimento e, a área da mesma. 13. Escreva um algoritmo para ler as dimensões de um retângulo (base e altura), calcular e escrever a área do retângulo. 14. Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e escreva a idade dessa pessoa expressa apenas em dias. Considerar ano com 365 dias e mês com 30 dias. 15. Uma pessoa recebe RS 3300 reais de salário, 1% desse valor é descontado para contribuição sindical. Além disso, tem um histórico de duas faltas todos meses. Considerando o mês com 22 dias úteis, quanto essa pessoa irá receber de salário ĺıquido ao final do mês? Escreva um algortimo que represente esta situação. 2 Curso: Ciência da Computação e Redes de Computadores Disciplina: Introdução a Programação C Professor: Rodrigo Azevedo da Costa Lista de Exerćıcios II - Estrutura Condicional Algumas dicas importantes: – Resolva todos os exerćıcios utilizando pseudocódigo, exemplo abaixo – Lembre-se de declarar todas as variáveis a serem utilizadas – Atentem-se principalmente à estrutura do algoritmo, posteriormente, fare- mos no visualg e no editor de códigos C 1. Escreva um algoritmo que verifique se um número fornecido pelo usuário é par ou ı́mpar. 2. Escrever um algoritmo que leia dois valores inteiros distintos e informe qual é o maior. 3. Escreva um programa que leia a idade de uma pessoa. Ao final, exiba se essa pessoa é maior de idade ou não. 4. Elabore um algoritmo que leia dois números inteiros e mostre o resultado da diferença do maior valor pelo menor. 5. Escreva um programa que leia duas notas de um aluno, calcule e exiba a média que ele obteve e informe se o aluno foi aprovado ou não na disciplina. 6. Crie um programa que leia o nome de uma pessoa e seu sexo (m para masculino e f para feminino). Ao final, o programa deve imprimir a mensagem “Bom dia senhor” ou “Bom dia senhora” seguida do nome. 7. Crie um programa que leia as três medidas dos lados de um triângulo e, em seguida, exiba para o usuário de que tipo de triângulo se trata. Na matemática, um triângulo é dito equilátero se todos os seus lados têm a mesma medida; isósceles é quando apenas há dois lados iguais; e escaleno quando todos os lados são diferentes. 8. Construa um algoritmo que calcule o peso ideal de uma pessoa. Dados de entrada: altura e sexo. Fórmulas para cálculo do peso: peso ideal de homem = (72,7 x altura) - 58; peso ideal da mulher = (62,1 x altura) - 44,7 9. Escreva um programa que calcule o Índice de Massa Corporal (IMC) de uma pessoa. Lembre-se que o IMC é o resultado da razão entre o peso da pessoa e o quadrado da altura da pessoa (peso/altura2). Ao fim, o programa deve exibir uma mensagem que depende do valor do IMC calculado (conforme listado abaixo). Abaixo de 17: muito abaixo do peso 1 Entre 17 e 18,49: abaixo do peso Entre 18,50 e 24,99: peso normal Entre 25 e 29,99: acima do peso Entre 30 e 34,99: obesidade I Entre 35 e 39,99: obesidade II (severa) acima de 40: obesidade III (mórbida) 10. Escreva um algoritmo que ajude o usuário a descobrir se ele precisa abastecer o carro ou não e, se sim, quanto ele precisa abastecer. O programa deve começar perguntando ao usuário (1) quantos quilômetros o carro faz por litro, (2) quantos litros de gasolina há no momento e (3) qual distância ele deseja percorrer. O programa avisa ao usuário se ele precisa abastecer ou não. Caso o usuário precise abastecer, deve ser informado quantos litros o usuário deve abastecer. Exemplo Quantos quilômetros o carro percorre por litro? 5 Quantos litros tem no carro atualmente? 20 Qual distância (em Km) você deseja percorrer ? 150 Você precisa abastecer 10 litros. 11. Doar sangue é uma atitude muito importante, entretantoé preciso atender alguns requisitos. • Ter entre 19 e 69 anos de idade • Pesar ao menos 50 kg • Não ter feito nenhuma tatuagem no último ano • Não ter ingerido álcool nas últimas 12 horas. Escreva um programa que pergunte ao usuário se ele atende os requisitos necessários para doar sangue. Faça as perguntas uma por vez. Caso a resposta dele o impede de doar, avise-o e encerre o programa. Se ele atender todos os requisitos, avise-o que ele pode ser doador. 2 Curso: Ciência da Computação e Redes de Computadores Disciplina: Introdução a Programação C Professor: Rodrigo Azevedo da Costa Lista de Exerćıcios III - Estruturas de Repetição 1. Escrever os números de 1 a 10 utilizando a estrutura REPITA e um contador. 2. Escrever os números de 1 a 10 utilizando a estrutura ENQUANTO e um contador. 3. Ler 10 valores, calcular e escrever a média aritmética desses valores. 4. Escrever os múltiplos de 5 no intervalo de 1 até 500. 5. Criar um algoritmo que escreva todos os números de 1 até 100 e a soma deles. 6. Entrar com 8 números e, para cada número, escrever o logaritmo desse número na base 10. 7. Entrar com 15 números e escrever a raiz quadrada de cada número. 8. Ler 20 números inteiros e escrever quantos são pares e quantos são ı́mpares. 9. Entrar com 15 números e escrever quantos números maiores que 30 foram digitados. 10. Entrar com 20 números inteiros e escrevar a soma dos positivos e o total de números negativos. 11. Entrar com dois números e escrever todos os números no intervalo fechado, do menor para o maior. 12. Entrar com o nome e o salário bruto de 10 pessoas. Escrever o nome o valor da aĺıquota do imposto de renda. Sendo que, se o for salário menor que R$ 600 é isento; salário >= R$ 600 e < R$ 1.500 a aĺıquota é de 10% do salário bruto e; salário >= R$ 1.500 a aĺıquota é de 15% do salário bruto. 13. Criar um algoritmo que entre com 3 notas de cada aluno de uma turma de 10 alunos e escreva a média de cada aluno, a média da turma e o percentual de alunos que tiveram médias maiores ou igual a 5.0. 14. Entrar com números e escrever o quadrado de cada número até entrar um número múltiplo de 6 que deve ter seu quadrado também impresso. 15. Chico tem 1.50 m e cresce 2 cent́ımetros por ano, enquanto Juca tem 1.10 m e cresce 3 cent́ımetros por ano. Construir um algoritmo que calcula e escreva quantos anos serão necessários para que Juca seja maior que Chico em pelo menos 10 cent́ımetros. 16. Implementar um algoritmo que imprima a tabuada de um número qualquer mais que um. Usando enquanto, repita e, para. 1 17. Ler um número indeterminado de notas. O algoritmo deverá ser encerrado ao ser fornecido um valor negativo para a nota. Calcular e escrever a menor nota entre as notas lidas. 18. Ler 10 valores e escrever quantos desses valores são negativos. 19. Ler 10 valores e contar quantos estão no intervalo entre 10 e 20 e quantos estão fora desse intervalo, mostre cada uma dessas informações. 20. Ler um conjunto de 10 pares de dados contendo, cada um, a altura e um código para masculino (1) e outro para feminino (2) de uma turma de alunos. Calcular e escrever: a maior e a menor altura da turma e a média da altura das mulheres. 21. A prefeitura de Manacapuru realizou uma pesquisa entre vários habitantes da cidade, coletando dados sobre o rendimento familiar e o número de filhos menores de cada famı́lia. A prefeitura precisa saber: a média dos rendimentos da população, a média do número de filhos, o percentual de famı́lias com rendimento igual ou superior a R$ 1000. OBS: Perceba que nessa questão não é informada a quantidade de pessoas participantes da pesquisa. Assim, é preciso pensar em alguma maneira de realizar esse controle. 2
Compartilhar