Baixe o app para aproveitar ainda mais
Prévia do material em texto
ALGORITMOS – AULA 5 ANITA MACIEL Rio de Janeiro, 03 de junho de 2011 Quando poderei usar? Quando você responder SIM às três perguntas abaixo. ❖É a mesma variável em todos os testes? Quando você responder SIM às três perguntas abaixo. ❖ O tipo da variável é enumerável? ❖É a mesma variável em todos os testes? Quando você responder SIM às três perguntas abaixo. ❖ O tipo da variável é enumerável? ❖Operador Relacional é = ? ❖É a mesma variável em todos os testes? Quando você responder SIM às três perguntas abaixo. Vamos observar três fluxos Ambiente: http://www.bloodshed.net/ Com usá-lo: http://anitalopes.com/diversos/html http://www.bloodshed.net/ http://anitalopes.com/diversos/htmla --- --- prog <identificador> --- <declaração_ de_ variáveis> <corpo_ do_ algoritmo> fimprog #include <iostream> using namespace std; int main() { <declaração_ de_ variáveis> <corpo_ do_ programa> } Tipos das variáveis •int •real •string •logico Exemplos: int idade; real peso; Tipos das variáveis •int •float •double •char •bool Exemplos: int idade; float peso; <identificador> formado por letras e algarismos (o 1o é uma letra) Exemplo: real mediaAluno ; <identificador> formado por letras, algarismos e caracter sublinha _ (o 1o é uma letra se só tiver 1 caracter) Exemplo: float mediaAluno ; ou float media_Aluno ; # comentário de uma linha /* comentário de mais de uma linha */ imprima <variável>; imprima <lista de variáveis separadas por virgulas> ; imprima <constante ou operações numéricas >; imprima ”<constante caracter> ”; // comentário de uma linha /* comentário de mais de uma linha */ cout<< <variável> ; cout<< <lista de variáveis separadas por << > ; cout<< <constante ou operações numéricas> ; cout<<”<constante caracter>”; Caracteres de controle usados com imprima: "\n"alimenta linha(enter) "\t" tabula (1 / 9 / 17 /25 /33/41/49/ 57 / 65 / 73 ) (tab) Caracteres de controle usados com cout: "\n"alimenta linha(enter) "\t" tabula (1 / 9 / 17 /25 /33/41/49/ 57 / 65 / 73 ) (tab) "\\“ aparece \ "\”“ aparece “ Comando de Atribuição <identificador> <- expressão; Exemplo: media <- ( a + b ) / 2; Comando de Atribuição <identificador> = expressão; Exemplo: media = ( a + b ) / 2; Comando de Entrada leia <variável> ; --- Comando de Entrada cin>> <variável> ; cin>> <var1> >> <var2>; Teste - Decisão se (<condição> ) { comando ; ou <seqüência de comandos separados por ;> } senao { comando; ou <seqüência de comandos separados por ;> } Teste - Decisão if( <condição>) { comando; ou <seqüência de comandos separados por ;> } else { comando; ou <seqüência de comandos separados por ;> } Testes Encadeados se (<condição 1> ) { ... } senao { se (<condição 2> ) { ... } senao { .... } } Testes Encadeados if (<condição 1> ) { ... } else { if (<condição 2> ) { ... } else { .... } } Testes Encadeados NÃO DISPONÍVEL Testes Encadeados if (<condição 1> ) { ... } else if (<condição 2> ) { ... } else if (<condição 3> ) { .... } else { ... } Estrutura alternativa NÃO DISPONÍVEL Estrutura alternativa switch(expressão) { case rótulo_1: bloco1; break; case rótulo_2: bloco2 break; ... case rótulo_n: bloco n break; <default: bloco d>; } MELHORANDO A SAÍDA system(“pause”); No ambiente Windows, uma das saídas para dar uma pausa. system(“cls”); No ambiente Windows, uma das saidas para limpar a tela. system(“color --”); Onde cada – é um código em hexadecimal. Sendo o primeiro a cor do fundo e o segundo, a cor da fonte. Veja próxima tela. O que foi isso? Não deu erro. Piscou e nem vi! Você precisa “enganar” o sistema. Dê uma pausa. ➢Reveja todos os conceitos desta aula. ➢Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). ➢Faça todos os exercícios. ➢Esteja sempre em contato com seu professor. ➢Não durma com dúvidas. ➢Assista a esta aula quantas vezes for necessário. ALGORITMOS – AULA 1 ANITA MACIEL Rio de Janeiro, 29 de Abril de 2011 Nessa história, você foi escolhido para o papel principal e, por essa razão, será responsável pelo final e eu, só estarei aqui para possibilitar sua grande atuação. O final feliz de uma história O final feliz de uma história O final feliz de uma história O final feliz de uma história É uma palavra derivada do nome do matemático Abu Ja´far Muhammad(800- 847) que introduziu a escrita dos cálculos substituindo o ábaco. Ele ficou conhecido como Al-Kharazmi. Designa um procedimento geral de cálculo que se desenvolve, por assim dizer, automaticamente, poupando-nos esforço mental durante o seu curso. (FONSECA,F. C., 1999, p.50) É uma sequência de passos finitos que devem ser escritos de forma precisa e clara, evitando qualquer tipo de dúvida na interpretação e que tem como objetivo solucionar um problema computacional. 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” . (disponível em: http://pt.wikipedia.org/wiki/L%C3%B3gica#L.C3.B3gica_filos.C3.B3fica) http://pt.wikipedia.org/wiki/L%C3%B3gica#L.C3.B3gica_filos.C3.B3fica Jogos ➢ O problema das garrafas de 8 litros, 5 e 3 litros. Jogos ➢ O problema das garrafas de 8 litros, 5 e 3 litros. Jogos ➢ Torre de Hanói. Jogos ➢ Torre de Hanói. Jogos ➢ O problema dos quatro quatros. 4 x 4 + 4 4 Jogos ➢ O problema dos quatro quatros. Relação de alguns sites sugeridos pela grade nacional – presencial ➢ Jogo de travessia do rio - disponível em http://www.profcardy.com/desafios/aplicativos.php?id=24 http://www.profcardy.com/desafios/aplicativos.php?id=24 Relação de alguns sites sugeridos pela grade nacional – presencial ➢O Jogo da velha - disponível em http://www.cardiol.br/jogos/velha/ http://www.cardiol.br/jogos/velha/ Relação de alguns sites sugeridos pela grade nacional – presencial ➢ Teste de Einstein - disponível em http://rachacuca.com.br/teste-de-einstein/ http://rachacuca.com.br/teste-de-einstein/ Lógica de programação “uso correto das leis do pensamento, da ‘ordem da razão’ e de processos de raciocínio e simbolização formais na programação de computadores, objetivando racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar”. Forbellone, A., Eberspacher, H, 2000). Resolvendo um problema - George Pólya 1 Compreenda o problema ➢ Identifique os dados. ➢ Identifique a incógnita. ➢ Identifique condição. ➢Verifique se é possível satisfazer a condição com os dados fornecidos. 2 Planeje ➢ Tente encontrar uma relação entre os dados e a incógnita. ➢ Procure achar alguma semelhança entre esse problema e outro que já resolveu. ➢ Releia o problema se não tiver conseguido encontrar as etapas necessárias para resolvê-lo. ➢ Quando tiver conseguido, escreva as etapas sem ser prolixo e impreciso. 3 Execute o plano ➢ Acompanhe todas as etapas. ➢ Verifique se conseguiu atingir o objetivo. 4 Reflita sobre a solução ➢ Consegue justificar todas as etapas? ➢ Consegue visualizar outra solução? ➢ Consegue ver uma outra aplicação para a solução encontrada? Tudo muito explicado, mas como essas etapas vão se transformando em algo computável? Interpretação do enunciado do problema Interpretação do enunciado do problema C o n s tru ç ã o d o A lg o ritm o Interpretação do enunciado do problema C o n s tru ç ã o d o A lg o ritm o Codificação em uma Linguagem de Programação Formas para representar um AlgoritmoFormas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Formas para representar um Algoritmo Fluxograma, UAL e Linguagem C++ SITES portugol http://orion.ipt.pt/~aulasi/ip/04-decisao/help/index.html download http://www.4shared.com/get/N3JQWx6Z/portugol23.html Tutorial http://www.dei.estt.ipt.pt/portugol/node/32 WEBportugol http://siaiacad17.univali.br/webportugol/ http://www.univali.br/webportugol UAL http://anitalopes.com http://orion.ipt.pt/~aulasi/ip/04-decisao/help/index.html http://www.4shared.com/get/N3JQWx6Z/portugol23.html http://www.dei.estt.ipt.pt/portugol/node/32 http://siaiacad17.univali.br/webportugol/ http://www.univali.br/webportugol http://anitalopes.com/ Problema Entrar com quatros salários e exibir a média dos salários. Primeiro momento - COMPREENDE ➢Dados serão digitados no teclado (origem), totalizando três dados numéricos; ➢ O algoritmo deverá calcular média aritmética, resultando em uma informação numérica; ➢O algoritmo deverá exibir a média dos salários. Problema Entrar com quatros salários e exibir a média dos salários. Segundo momento – IDENTIFICA ➢Quatro operações de entrada de dados, uma para cada salário; ➢ Uma operação de processamento para calcular a média dos salários; ➢Uma operação de saída para exibir a média dos salários. Problema Entrar com quatros salários e exibir a média dos salários. Terceiro momento – ESCREVE escolhendo uma das linguagens: natural, gráfica ou pseudolinguagem Problema Entrar com quatros salários e exibir a média dos salários. Quarto momento – Reflete ➢Como está a solução ? ➢Será que existe outra melhor? ➢O fato de “funcionar” não significa dizer que é EFICIENTE. ➢Poderá ser aproveitado em outros programas? ➢Reveja todos os conceitos desta aula. ➢Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). ➢Assista às apresentações sobre Fluxograma, linguagem Natural e Pseudolinguagem . ➢Esteja sempre em contato com seu professor. ➢Não durma com dúvidas. ➢Assista a esta aula quantas vezes for necessário. ALGORITMOS – AULA 2 ANITA MACIEL Rio de Janeiro, 06 de maio de 2011 Hoje é um dia importante porque aprenderemos a construir algoritmos de várias formas. Marque na agenda: Aqui começa minha vida como desenvolvedor. Espero que você pratique muito durante os próximos dez dias e, se surgir dúvida, fale com seu professor. Arquitetura básica do computador Apresentando as linguagens Estrutura da Linguagem Natural O início do algoritmo começa com a primeira ordem e o término, com a última ordem. Você poderá, ou não numerar os passos. Estrutura da Linguagem Gráfica Todos os passos deverão ficar entre os símbolos de início e fim. Estrutura da Linguagem UAL Todos os comandos deverão ser colocados entre os comandos prog e fimprog. Comando de saída (display) Use verbos como: ➢ exibir(exiba), ➢imprimir(imprima), ➢ escrever escreva), ➢ mostrar(mostre). exiba 23 imprimir 23 + 89 escrever nome mostre “Entendi” Comando de saída (display) Dentro desse símbolo, podemos encontrar: Comando de saída (display) imprima ...; imprima ..., ..., ...; imprima 23; imprima 23 + 89; imprima nome; imprima “Entendi”; Comando de saída (display) Os caracteres de controle \n e \t são usados com o comando imprima para que o programador tenha poder de decidir onde o dado será impresso. Tecla tab Tecla enter Comando de saída (display) Comando de saída (display) Comando de saída (display) Comando de saída (display) Comando de saída (display) Comando de saída (display) Comando de saída (display) Comando de saída (display) Agora vamos praticar Construa um algoritmo que exiba Estacio no display. escreva “Estacio” escreva “Estacio” escreva “Estacio” escreva “Estacio” escreva “Estacio” escreva “Estacio” escreva “Estacio” escreva “Estacio” Operador Significado Exemplo + adição 13 + 28 - subtração 28-13 * multiplicação 28*13 / divisão 8/5 1 (C++) / divisão 8/5. 1.6 (C++) div divisão 8/5 1 % resto 8/5 3 mod resto 8/5 3 ** ^ potenciação 2**3 8 Manipular dados/informações é, com certeza, uma das principais funções de um computador. Origem do dado O dado é um valor fornecido pelo usuário, gerado pelo programa ou lido de um arquivo Tipos de dados Inteiro, Real, Caracter e Lógico Origem do dado O dado é um valor fornecido pelo usuário, gerado pelo programa ou lido de um arquivo Tipos de dados Inteiro, Real, Caracter e Lógico Memória Principal Memória Principal célula Memória Principal endereço 0ff09 0ff0A 0ff0B Declarando variável Declarando variável tipo nomeDaVariável; Declarando variável tipo nomeDaVariável; tipo nV1, nV2, nVn; Declarando variável tipo nomeDaVariável; tipo nV1, nV2, nVn; Qualquer nome serve? Declarando variável Depende da linguagem. Vamos adotar aqui as regras: 1o caracter -> letra A partir do segundo, letra ou algarismo. Tipos da variável Tipos da variável inteiro, real, caracter e lógico Tipos da variável inteiro, real, caracter e lógico int, real, string e logico Tipos da variável inteiro, real, caracter e lógico int, real, string e logico Onde fica a variável? Vamos treinar Idade de uma pessoa Vamos treinar int idade;Idade de uma pessoa Vamos treinar int idade;Idade de uma pessoa Salário de uma pessoa Vamos treinar Idade de uma pessoa int idade; real salario;Salário de uma pessoa Vamos treinar int idade; real salario; Nome de uma pessoa Idade de uma pessoa Salário de uma pessoa Vamos treinar int idade; real salario; string nome;Nome de uma pessoa Idade de uma pessoa Salário de uma pessoa Vamos treinar int idade; real salario; string nome; Matrícula e CR de um aluno Nome de uma pessoa Idade de uma pessoa Salário de uma pessoa Vamos treinar int idade; real salario; string nome; int matric; Matrícula e CR de um aluno Nome de uma pessoa Idade de uma pessoa Salário de uma pessoa Vamos treinar int idade; real salario; string nome; int matric; real CR; Matrícula e CR de um aluno Nome de uma pessoa Idade de uma pessoa Salário de uma pessoa Vamos treinar mais Código do paciente, peso, altura e IMC Vamos treinar mais Código do paciente, peso, altura e IMC int codigo; Vamos treinar mais Código do paciente, peso, altura e IMC real peso, altura, IMC; int codigo; O comando de atribuição É um dos quatro comandos básicos da programação. Consiste em atribuir um valor a uma variável. O problema da data 251178 O problema da data 251178 O problema da data 251178 O problema da data O teste de mesa O teste de mesa O teste de mesa Memória Principal Display O teste de mesa Memória Principal Display dia mes ano ➢Reveja todos os conceitos desta aula. ➢Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). ➢Faça todos os exercícios. ➢Esteja sempre em contato com seu professor. ➢Não durma com dúvidas. ➢Assista a esta aula quantas vezes for necessário. ALGORITMOS – AULA 3 ANITA MACIEL Rio de Janeiro, 20 de maio de 2011 Comando de entrada de dados interagindo Nome João Idade 22 Experiência Sim( ) Não( ) Sim(X) noid resp Sintaxe do comando leia nomeDaVariável; Memória Display Entrar com dois números reais e exibir a soma. Quantos valores desconhecidos? Todos serão fornecidos pelo usuário? Quais são os comandos envolvidos? atribuição leia imprima 3 NÃO FUNÇÕES NUMÉRICAS sen(x) seno de um ângulo em radianos cos(x) co-seno de um ângulo em radianos tan(x) tangente de um ângulo em radianos abs(x) x independente do sinal exp(x) número e elevado a x log(x) logaritmo neperiano de x raiz(x) raiz quadrada de x intreal(x) converte x para real realint(x) converte x para inteiro, arredondando matematicamente. ➢Reveja todos os conceitos desta aula. ➢Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). ➢Faça todos os exercícios. ➢Esteja sempre em contato com seu professor. ➢Não durma com dúvidas. ➢Assista a esta aula quantas vezes for necessário. ALGORITMOS – AULA 4 ANITA MACIEL Rio de Janeiro, 27 de maio de 2011 Construa um algoritmo que deixe entrar com uma altura e exiba a mensagem “maior do que a media” se a altura for maior do que 2 metros. Construa um algoritmo que deixe entrar com um número e exiba uma das mensagens: Par ou Impar. Construa um algoritmo que deixe entrar com dois números e exiba o maior. Construa um algoritmo que deixe entrar com dois números e exiba-os em ordem crescente. Construa um algoritmo que deixe entrar com três números e exiba o maior. Construa um algoritmo que deixe entrar com três números e exiba os dois menores. Construa um algoritmo que deixe entrar com três números e exiba os dois maiores. Construa um algoritmo que deixe entrar com três números e exiba o menor. ➢Reveja todos os conceitos desta aula. ➢Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). ➢Faça todos os exercícios. ➢Esteja sempre em contato com seu professor. ➢Não durma com dúvidas. ➢Assista a esta aula quantas vezes for necessário. ALGORITMOS – REVISÃO AV2/ AV3 ANITA MACIEL Rio de Janeiro, 01 julho de 2011 Releia a Aula de Revisão da AV1 Relacione todas as dúvidas e poste no fórum de dúvidas AV2/ AV3 Refaça o maior número possível de exercícios das Listas Formas para representar um Algoritmo Semântica versus Sintaxe Palavras reservadas da linguagem Case Sensitive Pseudolinguagem ou linguagem interpretada? Estruturas da Linguagens O início do algoritmo começa com a primeira ordem e o término, com a última ordem que poderão ser, ou não, numeradas. Estrutura da Linguagem Manipular dados/informações é, com certeza, uma das principais funções de um computador. Dados versus da Informação Processamento de dados É a transformação de dados em outros que sejam mais significativos para uma determinada finalidade. Data – Dados São valores que representam algum atributo(exemplo: peso, idade, nome, etc.) de uma entidade(pessoa, animal, objeto, etc). Informação É um conjunto de dados significativos. Em outras palavras: dados são elementos que servem de ponto-de-partida para um processamento e informação é o resultado de um processamento. Origem do dado O dado é um valor fornecido pelo usuário, gerado pelo programa ou lido de um arquivo Tipos de dados Inteiro, Real, Caracter e Lógico Vamos treinar 1) Notas e média – real 2) Altura, peso, salário – real 3) Idade, número de dependentes – inteiro 4) Nome e sexo – caracter Declarando variável tipo nomeDaVariável; tipo nV1, nV2, nVn; Qualquer nome serve? <identificador> formado por letras e algarismos (o 1o é uma letra) Exemplo: real mediaAluno ; <identificador> formado por letras, algarismos e caracter sublinha _ (o 1o é uma letra se só tiver 1 caracter) Exemplo: float mediaAluno ; ou float media_Aluno ; Tipos de variáveis – UAL/C++ int, float / double, char e bool int, real, string e logico UAL C++ Comentários Linha(s) precedida(s) por caracter que não será(ão) executada(s). Exemplos: # Comentário de uma linha em UAL // Comentário de uma linha em C++ /* Comentário de uma, ou mais, linhas , UAL e C++finalizando com */ Sintaxe do comando - saída imprima “...”, ... , “\n”; cout<<“ “<<...<<“\n”; UAL C++ Comando de saída (display) Os caracteres de controle \n e \t são usados com os comandos imprima / cout para que o programador tenha poder de decidir onde o dado será impresso. \t – tabula 1 9 17 25 33 41 ...(colunas) \n – corresponde à tecla enter. Na linguagem C++, “\n” equivale endl Operador Significado Exemplo + adição 13 + 28 - subtração 28-13 * multiplicação 28*13 / divisão 8/5 1 (C++) / divisão 8/5. 1.6 (C++) div divisão 8/5 1 % resto 8/5 3 mod resto 8/5 3 **(real) ^(int) potenciação 2**3 8.0 2^3 8 **(real) ^(int) potenciação 2**3 8.0 2^3 8 pow(base, expoente) potenciação pow(8.0,3) Atenção para a potenciação imprima "\n", (35 div 4)- (13 % 2), "\n"; imprima "\n", (35 / 4) - (13 % 2), "\n"; Vamos treinar – div, / e % Vamos treinar – / e % Equivalente na linguagem C++ Vamos treinar - AUMENTO imprima "\n", 1200.0 + 1200.0*10/100, "\n"; Vamos treinar - Desconto Vamos treinar - Desconto Sintaxe do comando de atribuição nomeVariável <- ...; nomeVariável = ...; UAL C++ O teste de mesa É uma simulação da execução de um algoritmo/programa, começando a análise no primeiro comando e só finalizando, no último para verificar se o algoritmo/programa atingiu seu objetivo. A preocupação principal fica por conta do comportamento das variáveis durante a execução e com o que deverá sair no display. O teste de mesa ou chinês? Memória Principal Display Sintaxe do comando - entrada leia nomeDaVariável; cin>>nomeDaVariável; UAL C++ Teste - Decisão se (<condição> ) { comando ; ou <seqüência de comandos separados por ;> } senao { comando; ou <seqüência de comandos separados por ;> } Teste - Decisão if( <condição>) { comando; ou <seqüência de comandos separados por ;> } else { comando; ou <seqüência de comandos separados por ;> } Testes Encadeados se (<condição 1> ) { ... } senao { se (<condição 2> ) { ... } senao { .... } } Testes Encadeados if (<condição 1> ) { ... } else { if (<condição 2> ) { ... } else { .... } } Testes Encadeados NÃO DISPONÍVEL Testes Encadeados if (<condição 1> ) { ... } else if (<condição 2> ) { ... } else if (<condição 3> ) { .... } else { ... } Vamos treinar – Onde está o erro? se( a=5) -> if(a <> 8) -> if(num mod 2 == 0) -> if(a> b && > c) -> se( a>=100 && a<=100) -> se( nota>10 && nota<0) -> Vamos treinar – Onde está o erro? se( a=5) -> == if(a <> 8) -> != if(num mod 2 == 0) -> num % 2 == 0 if(a> b && > c) -> a> b && a > c se( nota>10 && nota<0) -> nota>10 || nota<0 Construa um algoritmo que deixe entrar com nome e sexo de uma pessoa. Se ela for do sexo feminino, exibir o nome e a mensagem Loja A caso contrário, exibir o nome e a mensagem Loja B . Vamos treinar UAL C++ ❖ O tipo da variável é enumerável. ❖Operador Relacional é = = ❖A mesma variável em todos os testes. Atenção para quando for usar o switch. Estrutura alternativa NÃO DISPONÍVEL Estrutura alternativa switch(expressão) { case rótulo_1: bloco1; break; case rótulo_2: bloco2 break; ... case rótulo_n: bloco n break; <default: bloco d>; } -Ideal para um número de repetições conhecido durante a elaboração do algoritmo/programa ou quando puder ser fornecido durante a execução. - Na linguagem C++, for. - Simula com facilidade as estruturas do while e do do...while . Controlada por uma variávelcontadora. para(var<- vi; var operadorR vf; var<-var operadorA r) Explicando parâmetros var Variável contadora vi Valor inicial operadorR Operador relacional vf Valor final operadorA Operador aritmético r Razão para(c<- 1; c <= 5; c<-c + 1) para(c<- 1; c <= 5; c++) para(c<- 5; c >= 1; c<-c - 1) para(c<- 5; c >= 1; c- -) para(c<- 2; c <= 20; c<-c + 2) para(c<- 64; c >= 2; c<-c div 2) para(c<- 3; c <= 243; c<-c * 3) for(var= vi; var operadorR vf; var=var operadorA r) Explicando parâmetros var=var operadorA r ou var operadorA = r var+=r / var-=r / var*=r / var/=r ou var++ / var -- for(c= 1; c <= 5; c=c + 1) for(c= 1; c <= 5; c++) for(c= 5; c >= 1; c=c - 1) for(c= 5; c >= 1; c- -) for(c= 2; c <= 20; c+= 2) for(c 64; c >= 2; c=c /2) for(c= 3; c <= 243; c*=3) Gerando PA ou PG na Memória Principal e exibindo os valores. -Ideal para um número de repetições desconhecido. -O teste é executado no início. -A vantagem é que o usuário decide quando pára a repetição. -Pode simular a estrutura do for. -Talvez seja a estrutura mais simples de se construir. -O teste acontece no final, significando que executa pelo menos uma vez. - Assim como a estrutura while, é usada quando o número de repetições for desconhecido. -Pode simular a estrutura do for. 1o passo – Envolva o bloco que será repetido com um par de { } 2o passo – Escreva a linha do comando for 3o passo – Não se esqueça de declarar a variável do for. Construa um programa que 10 vezes entre com dois números e, a cada entrada, exiba o maior. Vamos treinar if(num1 > num2) { cout<< "\nMaior: "<< num1<<endl; } else if(num2 > num1) { cout<< "\nMaior: "<< num2<<endl; } else { cout<< "\nIguais: "<< num1<<endl; } } } Vamos treinar - trecho Vamos treinar - saída Construa um programa que 8 vezes possa entrar com um salário e exibir o salário reajustado em 7%. Vamos treinar Vamos treinar - saída Observe este programa prog triangulo0 int C; para(C<-1; C<=10; C++) { imprima "*"; } imprima "\n\n"; fimprog Vamos treinar Vamos treinar - saída Vamos colocar o para dentro de outro para prog triangulo1 int C, L; para(L<-1; L<=10; L++) { para(C<-1; C<=10; C++) { imprima "*"; } imprima "\n"; } imprima "\n\n"; fimprog Vamos treinar Vamos treinar - saída Vamos alterar o valor final do para interno prog triangulo2 int C, L; para(L<-1; L<=10; L++) { para(C<-1; C<=L; C++) { imprima "*"; } imprima "\n"; } imprima "\n\n"; fimprog Vamos treinar Vamos treinar - saída 1) O que é? 2) Como se cria? 3) Quais as regras para que tudo funcione perfeitamente? 1) 2) 3) 4) Construa um programa que entre com a idade de 5 pessoas e exiba ao final, quantas pessoas são maiores de idade. Vamos treinar Vamos treinar - saída Um comando leia, ou de atribuição, antes do enquanto para entrar na repetição e um comando leia, ou de atribuição, antes da }, para repetir ou sair da repetição. Uma Construa um programa que entre, várias vezes, com tuplas de números maiores do que 0. Exibir, a cada entrada, a média dos números. Vamos treinar Vamos treinar - saída Construa um programa que deixe entrar com um número inteiro e exiba quantos algarismos tem este número. Vamos treinar Vamos treinar Vamos treinar - saída Vamos treinar - saída Vamos treinar - saída Vamos treinar - saída Vamos treinar - saída Vamos treinar - saída Se X for uma letra, deverá ficar entre aspas simples, mas se for um número, NÃO. case ‘F’: … case 1: … Vamos treinar - saída Vamos treinar - saída 1)Simule a estrutura do for, usando while e um contador(caso particular do Acumulador). 2)Simule a estrutura do for, usando do...while e um contador(caso particular do Acumulador). 3)Simule a estrutura do while, usando for(;;) e if combinado com break. = mn n2 n1 3m 23 13 2m 22 12 1m 21 11 xnm a . a a . . . . a . a a a . a a a . a a A 13132A 4x1 = = 13 1 3 2 A 1x4 13132A 4x1 = = 13 1 3 2 A 1x4 Dimensionando Matrizes(vetores) tipo nomeMatriz[tamanho] ; tipo nomeMatriz[tamanho] ; UAL C++ Trecho de Entrada para( var<-0; var <tamanho; var ++) { imprima “\nmensagem: “; leia nomeMatriz[var]; } UAL Trecho de Entrada for( var=0; var <tamanho; var ++) { cout<< “\nmensagem: “; cin>>nomeMatriz[var]; } C++ Trecho de Saída – matriz linha imprima “\n\nTitulo\n\n”; para( var<-0; var <tamanho; var ++) { imprima nomeMatriz[var], “\t”; } UAL cout<<"\n\nTitulo\n\n"; for(var=0; x<tamanho; var++) { cout<<nomeMatriz[var], “\t”; } C++ Trecho de Saída – matriz linha Trecho de Saída – matriz coluna imprima “\n\nTitulo\n\n”; para( var<-0; var <tamanho; var ++) { imprima nomeMatriz[var], “\n”; } UAL cout<<"\n\nTitulo\n\n"; for(var=0; x<tamanho; var++) { cout<<nomeMatriz[var], “\n”; } C++ Trecho de Saída – matriz coluna 1) Os três trechos - matriz linha Vamos treinar imprima "\n\nIdades\n\n"; para(x<-0; x<10; x++) { imprima idades[x], "\t"; } UAL para(x<-0; x<10; x++) { imprima "\nIdade: "; leia idades[x]; } int idades[10] , x; Vamos treinar cout<<"\n\nIdades\n\n"; for(x=0; x<10; x++) { cout<<idades[x]<<"\t"; } C++ for(x=0; x<10; x++) { cout<<"\nIdade: "; cin>>idades[x]; } int idades[10] , x; 1) Os três trechos - matriz linha 1) Os três trechos - matriz coluna Vamos treinar imprima "\n\nIdades\n\n"; para(x<-0; x<10; x++) { imprima idades[x], "\n"; } UAL para(x<-0; x<10; x++) { imprima "\nIdade: "; leia idades[x]; } int idades[10] , x; Gerando vetor soma Vamos treinar for(x=0; x<tam; x++) { soma[x]= A[x] + B[x]; } para(x<-0; x<tam; x++) { soma[x]<- A[x] + B[x]; } UAL C++ Gerando vetor média Vamos treinar for(x=0; x<tam; x++) { med[x]=(A[x] + B[x])/2; } para(x<-0; x<tam; x++) { med[x]<-(A[x] + B[x])/2; } UAL C++ Trecho que calcula a média dos elementos da matriz Vamos treinar soma=0; for(x=0; x<tam; x++) { soma<- soma + m[x]; } media=soma/tam; soma<-0.0; para(x<-0; x<tam; x++) { soma<- soma + m[x]; } media<-soma/tam; UAL C++ = mn n2 n1 3m 23 13 2m 22 12 1m 21 11 xnm a . a a . . . . a . a a a . a a a . a a A = 5,5 7 8 5,8 0 0 7 7 5 4 0 9 6 10 9 8 Notas 4x4 Dimensionando Matrizes(bidimensionais) tipo nomeMatriz[tamL] [tamC] ; C++ float notas[60] [4] ; char nomes[60] [31] ; Vamos treinar 4 notas e nome de 60 alunos char nome [30]; Para entrar com um nome, usamos o comando abaixo cin.getline(nome, 30); Vamos treinar Vamos treinar Número de inscrição, nome do país e 5 tempos de 48 nadadores. Int insc [48] ; char nomesPais[48] [31] ; float tempos[48] [5] ; Entrada via teclado - Matriz bidimensional for(L=0; L < tamanhoLinha ; L++) { for(C=0; C < tamanhoColuna ; C++) { cout<<”\nLinha ”<<L+1<<” coluna ”<<C+1<<”: ”; cin>>nomeMatriz[L][C]; } } Entrada via teclado - Matriz bidimensional Matriz de char for(L=0; L < tamanhoLinha ; L++) { cout<<”\nNumero da linha ”<<L+1<<”: ”; cin.getline(nomeMatriz[L], tam); } tam valor declarado no dimensionamento (colunas) Trecho de saída - Matriz bidimensional system(”cls”);//limpar a tela ou clear - LINUX cout<<”\nTitulo\n”; for (L= 0; L < tamanhoLinha ; L++) { for(C=0; C < tamanhoColuna ; C++) { cout<<nomeMatriz[L][C]<< ”\t”; } cout<<”\n\n”; } Limpar o buffer cin.get(); Vamos treinar − − − − − − − − − − − − − − − − − − − − =x55M Para finalizar, vou fazer um programa mais matemático. Vamos treinar Dimensionamento Entrada Vamos treinar - solução float M[5][5]; Dimensionamento for(L=0; L < 5 ; L++) { for(C=0;C < 5 ;C++) { cout<<"\nElemento "<<L+1<<", "<<C+1<<": "; cin>>M[L][C]; } } Entrada Vamos treinar Saída system("cls"); cout<<"\nElementos da Matriz\n\n"; for (L= 0; L < 5 ; L++) { for(C=0; C < 5 ; C++) cout<<M[L][C]<< "\t"; cout<<"\n\n"; } Saída Vamos treinar - solução Trechos Interessantes system("cls"); cout<<"\nElementos da Matriz Acima da DP\n\n"; for (L= 0; L < TAM ; L++) { for(C=0; C < TAM ; C++) if( L < C ) cout<<M[L][C]<< "\t"; else cout<<"\t"; cout<<"\n"; } Trechos Interessantes ... if( L > C ) cout<<M[L][C]<< "\t"; //Triangulo Superior DP else cout<<"\t"; ... ... if( L == C ) cout<<M[L][C]<< "\t"; //Diagonal Principal else cout<<"\t"; ... Trechos Interessantes Matriz SomaLinha É uma matriz onde cada elemento é a soma dos elementos de uma linha da matriz. Trechos Interessantes //inicializa SomaLinha for(L=0; L<3; L++) { SOMA_LINHA[L] = 0; } //gera a matriz SomaLinha for(L=0;L<3;L++) for (c=0; c<5;c++) SOMA_LINHA[L] += A[L][c]; Trechos Interessantes Matriz SomaColuna É uma matriz onde cada elemento é a soma dos elementos de uma coluna da matriz. Trechos Interessantes //inicializa SomaColuna for (C=0; C<5; C++) SOMA_COLUNA[C] = 0; //gera a matriz SomaColuna for (C=0; C < 5; C++) for(L=0; L < 3; L++) SOMA_COLUNA[c] += A[L][C]; Funções da Biblioteca cstring Funções da Biblioteca cstring Essa função retorna o número de caracteres de str que precedem o caracter nulo(\0) de término. Funções da Biblioteca cstring Menor que zero -> str1 é menor do que str2(menor significa “vem antes na ordem alfabética”) Igual a zero -> str1 é igual a str2 Maior que zero -> str1 é maior do que str2(maior significa “vem depois na ordem alfabética”) Funções da Biblioteca cstring Essa função copia o conteúdo de str2 em str1, escrevendo sobre o antigo conteúdo de str1. Funções da Biblioteca cstring Essa função anexa o conteúdo de str2 ao final de str1. Funções da Biblioteca cctype Funções da Biblioteca cctype Essa função converte para maiúscula uma letra minúscula, não alterando os demais caracteres Funções da Biblioteca cctype Essa função converte para minúscula uma letra maiúscula, não alterando os demais caracteres. Funções da Biblioteca - cstdlib Funções da Biblioteca - cstdlib Essa função converte str, o que for possível, para número inteiro. Ela retorna 0 quando não puder converter. Funções da Biblioteca - cstdlib Essa função converte str, o que for possível, para número real. Ela retorna 0 quando não puder converter. Acumulador Definição: É uma variável que tem seu valor alterado dentro de uma estrutura de repetição. Na verdade, quando falamos em acumulador, estamos nos referenciando a um comando de atribuição que incrementa, ou decrementa, o conteúdo da variável. Sintaxe: nomeVariável = nomeVariável Op. Aritmético valor ; Exemplos: Expressão Como se lê? a = a + valor ; A variável a recebe o valor que estava armazenado nela, acrescido do valor armazenado na variável valor. a = a * valor ; A variável a recebe o valor que estava armazenado nela, multiplicado pelo valor armazenado na variável valor. a = a - valor ; A variável a recebe o valor que estava armazenado nela, decrementado do valor armazenado na variável valor. a = a / valor ; A variável a recebe o valor que estava armazenado nela, dividido pelo valor armazenado na variável valor. Quando a variável é acrescida (ou decrementada) de um valor constante, costumamos chamar o acumulador de contador. Exemplos: Expressão Como se lê? a = a + 1 ; ou a++; A variável a é incrementada de 1. a = a - 1 ; ou a--; A variável a é decrementada de 1. a = a + 2 ; ou a+=2; A variável a é incrementada de 2. a = a - 2 ; ou a-=2; A variável a é decrementada de 2. Quando devo usar? Em todo algoritmo que tenha repetição e você precise somar os números que entram, calcular a média, contar de acordo com uma condição, etc. Regras para se usar um acumulador 1- Todo acumulador é uma variável, logo PRECISA SER DECLARADO. 2- Todo acumulador precisa ser INICIALIZADO. Como faço isto? Use um comando de atribuição ANTES da estrutura de repetição em que ele aparece e Atribua um valor inicial. Normalmente, o elemento neutro da operação. 3- A expressão do acumulador precisa estar DENTRO DA ESTRUTURA DE REPETIÇÃO. 4- Alguma operação deverá ser feita com o acumulador APÓS A ESTRUTURA DE REPETIÇÃO. Código do arquivo Menu.cpp #include <iostream> using namespace std; int main() { int op; float num1, num2, num3,soma, prod; do { system("cls"); cout<< "\n\n\tMAQUINA ESPERTA "; cout<< "\n1 - Soma dois numeros "; cout<< "\n2 - Multiplica tres numeros "; cout<< "\n3 - Sai do programa "; cout<< "\nOPCAO: "; cin>> op; system("cls"); switch(op ) { case 1: cout<<"\ndois numeros: "; cin>>num1>>num2; cout<<"\nSoma: "<< num1+num2<<endl; break; case 2: cout<<"\ntres numeros: "; cin>>num1>>num2>>num3; cout<<"\nProduto: "<< num1 * num2 * num3<<endl; break; case 3: cout<< "\nSai do programa\n"; break; default: cout<<"\nOpcao nao disponivel\n" ; } system("pause"); }while(op!=3); } Matrizes somaLinha e somaColuna 1 Matriz somaLinha É uma matriz unidimensional(vetor ou matriz coluna) que terá tantas linhas quantas forem as linhas da matriz original e cada elemento será a soma de todos os elementos da linha correspondente na matriz original. Em outras palavras, cada elemento soma de todos os elementos das colunas de uma linha. 1.1 Inicializando a matriz somaLinha Como é uma matriz de acumuladores precisa ser inicializada. for (L=0; L<tamanhoLinha; L++) somaLinha[L]=0; 1.2 Gerando a matriz somaLinha for(L=0;L< tamanhoLinha;L++) for (c=0; c<tamanhoColuna;c++) somaLinha[L]+=nomeMatriz[L][C]; 1.3 Imprimindo a matriz somaLinha sozinha for(L=0;L< tamanhoLinha;L++) cout<<somaLinha[L] << "\n"”; cout<<endl; 1.4 Imprimindo a matriz somaLinha com a matriz original system("cls"); cout<<"\nMatriz Original com matriz SomaLinha\n\n"; for(L=0;L< tamanhoLinha;L++) { for(c=0;c< tamanhoColuna;c++) cout<<matOriginal[L][c]<< "\t"; cout<<somaLinha[L]<< "\n"; } 2 Matriz somaColuna É uma matriz unidimensional(vetor ou matriz linha) que terá tantas colunas quantas forem as colunas da matriz original e cada elemento será a soma de todos os elementos da coluna correspondente na matriz original. Em outras palavras, cada elemento é a soma de todos os elementos das linhas de uma coluna. 2.1 Inicializando a matriz somaColuna Como é uma matriz de acumuladores precisa ser inicializada. for(c=0; c<tamanhoColuna; c++) somaLinha[c]=0; 2.2 Gerando a matriz somaColuna for(L=0;L< tamanhoLinha;L++) for(c=0;c< tamanhoColuna;c++) somaColuna[c]+=nomeMatriz[L][c]; 2.3 Imprimindo a matriz somaColuna sozinha for(c=0;c< tamanhoColuna;c++) cout<<somaColuna[c]<<"\t"; cout<<endl; 2.4 Imprimindo a matriz somaColuna com a matriz original system("cls"); cout<<"\nMatriz Original com matriz SomaColuna\n\n"; for(L=0;L< tamanhoLinha;L++) { for(c=0;c< tamanhoColuna;c++) cout<<matOriginal[L][c]<<"\t"; cout<<"\n"; } for(c=0;c< tamanhoColuna;c++) cout<<somaColuna[c]<<"\t"; cout<<"\n"; 1 Códigos Fontes da Aula 10 Códigos do Arquivo: ColorindoNoCmaismais.doc arquivoCor1.cpp #include <iostream> using namespace std; int main() { system("color 1E"); cout<<"\nTESTANDO\n"; system("pause"); } arquivoCor2.cpp #include<iostream> using namespace std; int main() { system("color df"); cout<<"\nTESTANDO\n"; system("pause"); } Códigos dos Arquivos da Aula_10 strlen1.cpp #include <iostream> #include <cstring> using namespace std; int main() { int a, tam; //dimensionamento e atribuição char frase[]={"Algoritmos"}; //trecho de saida system("cls"); tam = strlen(frase); for(a=0; a<tam ; a++) cout<<"\n"<<frase[a]; cout<<"\n\n"; system("pause"); } strlen2.cpp #include <iostream> #include <cstring> using namespace std; int main() { int a, tam; //dimensionamento e atribuição char frase[]={"Aprender a construir Algoritmos"}; //trecho de saida system("cls"); tam = strlen(frase); for(a=tam-1; a>=0; a--) cout<<frase[a]; cout<<"\n\n"; system("pause"); } strlen3.cpp #include <iostream> #include <cstring> using namespace std; int main() { 2 int a, y, tam; //dimensionamento e atribuição char frase[]={"Algoritmos so se aprende praticando!"}; //trecho de saida system("cls"); tam = strlen(frase); for(a=0; a< tam; a++) { for(y=0; y<=a; y++) cout<<frase[y]; cout<<"\n"; } cout<<"\n\n"; system("pause"); } strlen4.cpp #include <iostream> #include <cstring> using namespace std; int main() { int a, y, tam; //dimensionamento e atribuição char frase[]={"Algoritmos so se aprende praticando!"}; //trecho de saida system("cls"); tam = strlen(frase); for(a=0; a < tam; a++) { for(y=0; y< tam -a; y++) cout<<frase[y]; cout<<"\n"; } cout<<"\n\n"; system("pause"); } tolower.cpp #include <iostream> #include <cstring> #include <cctype> using namespace std; int main() { int a, tam; char frase[70]; //Entrada cout<<"\nFrase: "; cin.getline(frase,70); tam=strlen(frase); for(a=0; a< tam; a++) frase[a]=tolower(frase[a]); //trecho de saida system("cls"); cout<<"\n"<<frase; 3 cout<<"\n\n"; system("pause"); } toupper.cpp #include <iostream> #include <cstring> #include <cctype> using namespace std; int main() { int a, tam; char frase[70]; //Entrada cout<<"\nFrase: "; cin.getline(frase,70); tam=strlen(frase); for(a=0; a< tam; a++) frase[a]=toupper(frase[a]); //trecho de saida system("cls"); cout<<"\n"<<frase; cout<<"\n\n"; system("pause"); } toupperTolower.cpp #include <iostream> #include <cstring> #include <cctype> using namespace std; int main() { int a, tam; //dimensionamento char frase[70]; //trecho de entrada cout<<"\nFrase: "; cin.getline(frase,70); tam=strlen(frase); frase[0]=toupper(frase[0]); for(a=1; a< strlen(frase); a++) if(frase[a-1]==' ') frase[a]=toupper(frase[a]); else frase[a]=tolower(frase[a]); //trecho de saida system("cls"); cout<<"\n"<<frase; cout<<"\n\n"; system("pause"); } protecaoCharDe1.cpp #include <iostream> #include <cstring> #include <cctype> #define TAM 5 4 using namespace std; int main() { char sexo[TAM], lixo[100]; int x; for(x=0; x<TAM;x++) { cout<<"\nSexo (m / f): "; cin.getline(lixo, 100); lixo[0]=tolower(lixo[0]); while(strlen(lixo)!= 1 || (lixo[0] != 'm' && lixo[0] != 'f' ) ) { cout<<"\nVoce so podera digitar a letra f ou a letra m"; cout<<"\nSexo (m / f): "; cin.getline(lixo, 100); lixo[0]=tolower(lixo[0]); } sexo[x]=lixo[0]; } system("cls"); for(x=0; x< TAM; x++) cout<<"\n"<<sexo[x]; cout<<"\n\n"; system("pause"); } protecaoVetorDeChar.cpp #include <iostream> #include <cstring> #define TAM 3 using namespace std; int main() { char nome[TAM][31], lixo[100]; int x; for(x=0; x<TAM;x++) { cout<<"\nNome: "; cin.getline(lixo, 100); while(strlen(lixo)> 30) { cout<<"\nNome com no maximo 30 caracteres. Abrevie."; cout<<"\nNome: "; cin.getline(lixo, 100); } strcpy(nome[x], lixo); } system("cls"); cout<<"\nRelacao dos Nomes\n"; for(x=0; x<TAM;x++) cout<<"\n"<<nome[x]; cout<<"\n\n"; system("pause"); } strcat.cpp #include <iostream> #include <cstring> #define TAM 3 using namespace std; int main() { char nome[TAM][31], lixo[100]; 5 int x,idade[TAM]; for(x=0; x<TAM;x++) { cout<<"\nNome: "; cin.getline(lixo, 100); while(strlen(lixo)> 30) { cout<<"\nNome com no maximo 30 caracteres. Abrevie."; cout<<"\nNome: "; cin.getline(lixo, 100); } strcpy(nome[x], lixo); //Atencao para esse trecho while(strlen(nome[x]) < 30) strcat(nome[x], " "); cout<<"\nIdade: "; cin>>idade[x]; cin.get(); } system("cls"); cout<<"\nNome\t\t\t\tIdade\n"; for(x=0; x<TAM;x++) cout<<"\n"<<nome[x]<<"\t"<<idade[x]; cout<<"\n\n"; system("pause"); } strcmp.cpp #include <iostream> #include <cstring> #include <cctype> #define TAM 3 using namespace std; int main() { int x, y; // dimensionamento char nome[TAM][31], sigla[TAM][3]; //trecho de entrada for(x=0; x< TAM; x++) { cout<<"\nnome: "; cin.getline(nome[x],31); cout<<"\nSigla do estado: "; cin.getline(sigla[x],3); for(y=0; y<strlen(sigla[x]); y++) sigla[x][y]=toupper(sigla[x][y]); } //trecho de saida system("cls"); cout<<"\nRelacao das pessoas nascidas no Rio de Janeiro\n"; for(x=0; x< TAM; x++) if(strcmp(sigla[x],"RJ")==0 ) cout<<"\n"<<nome[x]; cout<<"\n\n"; system("pause"); } 6 atoi.cpp #include <iostream> #include <cctype> #define TAM 5 using namespace std; int main() { int num[TAM],n, x; char lixo[30]; for(x = 0; x < TAM; x++) { cout<<"\nNumero inteiro: "; cin.getline(lixo, 30); n=atoi(lixo); num[x]=n; } system("cls"); cout<<"\nRelacao dos numeros inteiros\n"; for(x=0; x< TAM; x++) cout<<"\n"<<num[x]; cout<<"\n\n"; system("pause"); } Desafio #include <iostream> #include <cstring> using namespace std; int main() { int a,y,t,tam,e=0,d=0; //dimensionamento e inicializacao char frase[]={"Na ESTACIO aprendi Algoritmo!"}; tam=strlen(frase); t=tam / 2; system("cls"); system("color f1"); cout<<"\t\t"; //1a figura 1a parte for(a=0; a< tam; a++) { for(y=0; y<=a; y++) cout<<frase[y]; if( a==tam-1)cout<<" E T C O"; cout<<"\n\t\t"; } //1a figura 2a parte for(a=0; a < tam; a++) { for(y=0; y< tam - a; y++) cout<<frase[y]; if( a==0)cout<<" S A I"; 7 cout<<"\n\t\t"; } cout<<"\n"; //2a figura 1a parte for(a=0; a<=t; a++) { for(y=t-a; y<=t+a; y++) cout<<frase[y]; cout<<"\n"; } //2a figura 2a parte for(a=t; a>=0; a--) { for(y=t-a; y<=t+a; y++) cout<<frase[y]; cout<<"\n"; } //3a figura 1a parte cout<<"\n\n\t\t\t"; for(a=tam-1; a>=0; a--) { if( a==0) cout<<"\n\tO C T E "; else cout<<"\n\t\t\t"; for(y=tam-1; y>=a; y--) cout<<frase[y]; } //3a figura 2a parte for(a=tam-1; a>=0; a--) { if( a==tam-1) cout<<"\n\t I A S "; else cout<<"\n\t\t\t"; for(y=a; y>=0; y--) cout<<frase[y]; } cout<<"\n\n"; system("pause"); } 1 Colorindo na linguagem C++ Você poderá fazer uso da função system(” ”); e do comando color – para colocar cor em seus programas. Sintaxe: system(”color _ _”); Onde _ _ representam os códigos da cor de fundo e da cor da letra. Para você descobrir as cores, executeo programa abaixo. Coloquei gg no comando system(”color gg”); para forçar o aparecimento da tela que fala sobre o comando e exibe os códigos das cores. Como os códigos são em hexadecimal(0-9 e A – F), qualquer caracter diferente fará com que seja exibida a tela das cores. Agora vamos praticar. 2 1) Cor da letra amarela(E) e fundo azul(1). #include <iostream> using namespace std; int main() { system("color 1E"); cout<<"\nTESTANDO\n"; system("pause"); } 2) Cor da letra branca(f) e cor do fundo, pink(d) #include <iostream> using namespace std; int main() { system("color df"); cout<<"\nTESTANDO\n"; system("pause"); } Você pode colocar as letras maiúsculas ou minúsculas, Lista 6 - gabarito Lista 6 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para ou enquanto ou faca...enquanto e vetores. Orientações: 1- Todas as soluções na linguagem UAL. 2- O comanda de entrada está presente em todos os exercícios. 3- Quando existir algum cálculo declare a variável e armazene o resultado da operação. 4- A estrutura do para, ou a estrutura do enquanto ou a estrutura do faca...enquanto, está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Todos os exercícios têm pelo menos um vetor. 7- Codificar em C++ todas as soluções já testadas no ambiente UAL. Linguagem UAL Linguagem C++ Solução do exercício 13 1) Armazenar 10 números inteiros em um vetor NUM e exibir uma listagem numerada. Lista 6 - gabarito #include <iostream> #define TAM 15 using namespace std; int main() { //declaração da variável do for e do vetor int x, NUM[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; } //saida system("cls"); //no Linux system("clear"); cout<< "\nRelacao do numeros\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<" - "<<NUM[x]; cout<<"\n\n"; system("pause"); // so no windows } 2) Armazenar 15 números inteiros em um vetor NUM e exibir uma listagem numerada contendo o número e uma das mensagens: par ou ímpar. #include <iostream> #define TAM 15 using namespace std; int main() { //declaração da variavel do for e do vetor int x, NUM[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; } //saida system("cls"); //no Linux system("clear"); cout<< "\nNumero\tPar/Iimpar\n"; for(x=0; x< TAM; x++) if(NUM[x] % 2 == 0 ) cout<<"\n"<< x + 1 <<"-"<<NUM[x]<<"\tPAR"; else cout<<"\n"<< x + 1 <<"-"<<NUM[x]<<"\tIMPAR"; cout<<"\n\n"; system("pause"); // so no windows } Lista 6 - gabarito 3) Entrar com números reais para o vetor A de 10 elementos. Gerar e exibir o vetor triplo. #include <iostream> #define TAM 10 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], TRI[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; } //gerando o vetor triplo for(x=0; x< TAM; x++) { TRI[x]= A[x] * 3; //essa linha poderia estar no 1o for, depois da entrada } //saida system("cls"); //no Linux system("clear"); cout<< "\nVetor Triplo\n"; for(x=0; x< TAM; x++) cout<<"\n"<<TRI[x]; cout<<"\n\n"; system("pause"); // so no windows } 4) Armazenar 8 números em um vetor e exibir todos os números. Ao final, o total de números múltiplos de seis digitados. #include <iostream> #define TAM 8 using namespace std; int main() { //declaração da variavel do for, contador e do vetor int x, NUM[TAM], conta6=0; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; if(NUM[x] % 6 == 0) conta6++; Lista 6 - gabarito } //saida system("cls"); //no Linux system("clear"); cout<< "\nRelacao do numeros\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<" - "<<NUM[x]; cout<<"\n\nTotal de numeros multiplos de 6: "<<conta6; cout<<"\n\n"; system("pause"); // so no windows } 5) Armazenar matrícula e notas das AV1, AV2 e AV3 de 15 alunos. Calcular e armazenar a média segundo critério da Estácio (as duas maiores notas precisam ser maiores do que 4,0 e a média tem que ser maior ou igual a 6,0). Exibir uma listagem contendo matricula, as duas notas, média e situação de cada aluno. #include <iostream> #define TAM 3 using namespace std; int main() { //declaração da variavel do for, das variaveis simples e dos vetores int x, matric[TAM], sit[TAM]; float AV1[TAM], AV2[TAM], AV3[TAM], med[TAM], maior1, maior2; //entrada for(x=0; x< TAM; x++) { cout<<"\nMatricula do "<<x+1<<"o aluno: "; cin>>matric[x]; cout<<"\nNota da AV1 do "<<x+1<<"o aluno: "; cin>>AV1[x]; cout<<"\nNota da AV2 do "<<x+1<<"o aluno: "; cin>>AV2[x]; cout<<"\nNota da AV3 do "<<x+1<<"o aluno: "; cin>>AV3[x]; } //calculo da media for(x=0; x< TAM; x++) { if(AV1[x] < AV2[x] && AV1[x] < AV3[x] ) { maior1=AV2[x]; maior2=AV3[x]; } else if( AV2[x] < AV3[x] ) { maior1=AV1[x]; maior2=AV3[x]; } else { maior1=AV1[x]; maior2=AV2[x]; Lista 6 - gabarito } med[x]=(maior1 + maior2)/2; //Quando voce, na AULA_10 aprender a ducao strcpy(), volte aqui e melhore esse trecho if(maior1 >= 4 && maior2 >= 4 && med[x] >=6 ) sit[x]=1; else sit[x]=0; } //saida system("cls"); //no Linux system("clear"); cout<< "\nMatric.\tAV1\tAV2\tAV3\tMedia\tSituacao\n"; for(x=0; x< TAM; x++) { cout<<"\n"<< matric[x]<<"\t"<<AV1[x]<<"\t"<<AV2[x]<<"\t"<<AV3[x]<<"\t"<<med[x]< <"\t"; if(sit[x] == 1) cout<<"AP"; else cout<<"RP"; } cout<<"\n\n"; system("pause"); // so no windows } 6) Armazenar matrícula e salário de 20 pessoas. Calcular o novo salário sabendo- se que o reajuste foi de 8%. Exibir uma listagem numerada com matrículas e novos salários. #include <iostream> #define TAM 20 using namespace std; int main() { //declaração da variavel do for e dos vetores int x, matric[TAM]; float sal[TAM], salNovo[TAM]; //entrada e calculo do novo salario for(x=0; x< TAM; x++) { cout<<"\nMatricula do "<<x+1<<"o funcionario: "; cin>>matric[x]; cout<<"\nSalario atual do "<<x+1<<"o funcionario: "; cin>>sal[x]; salNovo[x]=sal[x] * 1.08; } //saida system("cls"); //no Linux system("clear"); Lista 6 - gabarito cout<< "\nMatric\tNovo salario\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<"-"<<matric[x]<<"\t"<<salNovo[x]; cout<<"\n\n"; system("pause"); // so no windows } 7) Armazenar código, quantidade, valor de compra e valor de venda de 30 produtos. A listagem pode ser de todos os produtos ou somente de um ao se digitar o código. #include <iostream> #define TAM 30 using namespace std; int main() { //declaração da variavel do for, outras variáveis simples e dos vetores int x, codigo[TAM], qtdade[TAM], codigoProcura, achou, op, posicaoAchada; float valorCompra[TAM], valorVenda[TAM]; //entrada e for(x=0; x< TAM; x++) { cout<<"\nCodigo do "<<x+1<<"o produto: "; cin>>codigo[x]; cout<<"\nQuantidade do "<<x+1<<"o produto: "; cin>>qtdade[x]; cout<<"\nValor de compra do "<<x+1<<"o produto:"; cin>>valorCompra[x]; cout<<"\nValor de compra do "<<x+1<<"o produto: "; cin>>valorVenda[x]; } //saida do { system("cls"); //no Linux system("clear"); cout<<"\nListagem\n"; cout<<"\n1- Todos"; cout<<"\n2- So um"; cout<<"\n3- Sai"; cout<<"\nOpcao: "; cin>>op; system("cls"); switch(op) { case 1: cout<< "\nCodigo\tQtdade\tCompra\tVenda\n"; for(x=0; x< TAM; x++) cout<<"\n"<<codigo[x]<<"\t"<<qtdade[x]<<"\t"<<valorCompra[x]<<"\t"<< valorVenda[x]; Lista 6 - gabarito break; case 2: cout<< "\nDigite o codigo do produto: "; cin>>codigoProcura; achou=0; for(x=0; x< TAM && achou == 0; x++) if(codigoProcura == codigo[x]) { achou=1; posicaoAchada=x; } if(achou == 1) { cout<< "\nCodigo\tQtdade\tCompra\tVenda\n"; cout<<"\n"<<codigo[posicaoAchada]<<"\t"<<qtdade[posicaoAchada]<<"\t"< <valorCompra[posicaoAchada]<<"\t"<<valorVenda[posicaoAchada]; } else cout<<"\nCodigo não encontrado"; break; case 3: cout<<"\nGabarito\n"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); // so no windows }while(op != 3); } 8) Entrar com números inteiros em um vetor A [50]. Gerar e exibir o vetor B onde cada elemento é o quadrado do elemento, na respectiva posição, do vetor A. #include <iostream> #define TAM 50 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], B[TAM]; //entrada e geracao do vetor B for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; B[x]= A[x] * A[x]; //pode usar a funcao pow(,) Lista 6 - gabarito } //saida system("cls"); //no Linux system("clear"); cout<< "\nVetor Quadrado\n"; for(x=0; x< TAM; x++) cout<<"\n"<<B[x]; cout<<"\n\n"; system("pause"); // so no windows } 9) Faça um programa que leia um vetor A de 10 valores e construa outro vetor B, da seguinte forma: Ex: Vetor A 3 8 4 2 5 Vetor B 9 4 12 1 15 #include <iostream> #define TAM 10 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], B[TAM]; //entrada e geracao do vetor B for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; if( x % 2 == 0)//VERIFICA SE A POSICAO É PAR B[x]= A[x] * 3; else B[x]= A[x] / 2; } //saida system("cls"); //no Linux system("clear"); cout<< "\n\nVetor A\t"; for(x=0; x< TAM; x++) cout<<A[x]<<"\t"; cout<< "\n\nVetor B\t"; for(x=0; x< TAM; x++) cout<<B[x]<<"\t"; cout<<"\n\n"; system("pause"); // so no windows } 10) Faça um programa que leia dois vetores A e B, contendo, cada um, 25 elementos inteiros. Intercale esses dois conjuntos( A[1] / B[1] / A[2] / B[2] /..), formando um vetor V de 50 elementos. Exiba o vetor V. Lista 6 - gabarito #include <iostream> #define TAM 25 using namespace std; int main() { //declaração da variável do for, variável que indicará a posição de V e do vetor int x, posV=0; float A[TAM], B[TAM], V[TAM*2]; //entrada e geracao do vetor V for(x=0; x< TAM; x++) { cout<<"\nNumero "<< x+1<<" do vetor A: " ; cin>>A[x]; V[posV]=A[x]; posV++; cout<<"\nNumero "<< x+1<<" do vetor B: " ; cin>>B[x]; V[posV]=B[x]; posV++; } //saida EXIBI TAMABÉM OS VETORES A e B PARA VOCES ENTENDEREM MELHOR system("cls"); //no Linux system("clear"); cout<< "\n\nVetA\t"; for(x=0; x< TAM; x++) cout<<A[x]<<"\t"; cout<< "\n\nVetB\t"; for(x=0; x< TAM; x++) cout<<B[x]<<"\t"; cout<< "\n\nVetV\t"; for(x=0; x< TAM*2; x++) cout<<V[x]<<"\t"; cout<<"\n\n"; system("pause"); // so no windows } 11) Faça um programa para ler um conjunto de 100 números reais e informar: 1. quantos números lidos são iguais a 30 2. quantos são maiores que a média 3. quantos são iguais a média #include <iostream> #define TAM 100 using namespace std; int main() { //declaração da variavel do for, contadores, acumuladores e do vetor int x, conta30=0, contaMaiorMedia=0, contaIgualMedia=0;; float A[TAM], soma, media; //entrada Lista 6 - gabarito soma=0; for(x=0; x< TAM; x++) { cout<<"\nNumero "<< x+1<<" do vetor: " ; cin>>A[x]; soma += A[x]; } media=soma/TAM; //saida e testes system("cls"); //no Linux system("clear"); cout<< "\n\nVetor\n"; for(x=0; x< TAM; x++) { if(A[x]== 30) conta30++; if(A[x] > media) contaMaiorMedia++; else if(A[x] == media) contaIgualMedia++; cout<<A[x]<<"\n"; } cout<<"\n\nIguais a 30: "<<conta30; cout<<"\n\nMaiores que a media: "<<contaMaiorMedia; cout<<"\n\nIguais a media: "<<contaIgualMedia; cout<<"\n\n"; system("pause"); // so no windows } 12) Faça um programa que leia um conjunto de 30 valores inteiros, armazene-os em um vetor e escreva-os ao contrário da ordem de leitura. #include <iostream> #define TAM 30 using namespace std; int main() { //declaração da variavel do for e do vetor int x; float A[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; } //saida system("cls"); //no Linux system("clear"); cout<< "\nExibindo na ordem inversa de leitura\n"; for(x=TAM-1; x>=0; x--) cout<<"\n"<<A[x]; Lista 6 - gabarito cout<<"\n\n"; system("pause"); // so no windows } 13) Faça um programa que leia os elementos de um vetor com 6 posições.Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Ao final, exiba os dois vetores. #include <iostream> #define TAM 6 using namespace std; int main() { //declaração da variavel do for e do vetor int x, tras; float A[TAM], aux; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; } //Trocando tras=TAM-1; for(x=0; x< TAM/2; x++) { aux=A[x]; A[x]=A[tras]; A[tras]=aux; tras--; } //saida system("cls"); //no Linux system("clear"); cout<< "\nTrocando de posicao\n"; for(x=0; x< TAM; x++) cout<<"\n"<<A[x]; cout<<"\n\n"; system("pause"); // so no windows } 14) No vestibular da Estácio, no curso de Sistemas de Informação, inscreveram-se 12000 pessoas. Faça um programa que leia o gabarito da prova que tinha 100 questões, sendo o valor de cada questão igual a 1 ponto. Para cada candidato, deverá ser lido o número de inscrição e as 100 respostas dele. O programa deverá exibir: o número de inscrição e a nota de cada candidato. Observação: Só é necessário guardar a soma dos pontos de cada candidato e o número de inscrição. Lista 6 - gabarito #include <iostream> #define TAM 1200 #define GAB 100 using namespace std; int main() { //declaração da variavel do for e do vetor int x, y, conta, nInsc[TAM],candidatos[TAM]; char gabarito[GAB], resp; //entra com gabarito for(y=0; y<GAB; y++) { cout<<"\ndigite gabaritoda "<<y+1<<"a questao (a/b/c/d/e): "; cin>>gabarito[y]; } system("cls"); //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero de inscricao: "; cin>>nInsc[x]; cin.get(); conta=0; for(y=0; y<GAB; y++) { cout<<"\ndigite resposta da "<<y+1<<"a questao (a/b/c/d/e): "; cin>>resp; if(resp == gabarito[y]) conta++; } candidatos[x]=conta; } //saida system("cls"); //no Linux system("clear"); cout<< "\nNumInsc\tNotas dos candidatos\n"; for(x=0; x<TAM; x++) cout<<"\n"<<nInsc[x]<<"\t"<<candidatos[x]; cout<<"\n\n"; system("pause"); // so no windows } Lista 7 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para ou enquanto ou faca...enquanto e matrizes bidimensionais. Orientações: 1- Todos os exercícios têm pelo menos uma matriz bidimensional, 2- O comanda de entrada está presente em todos os exercícios. 3- Quando existir algum cálculo declare a variável e armazene o resultado da operação. 4- A estrutura do for, ou a estrutura do while ou a estrutura do do...while, está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Todas as soluções na linguagem C++. Linguagem C++ Solução do exercício 8 1) Entrar com valores reais para uma matriz M[4] [5] . Gerar e exibir a matriz DOBRO. #include <iostream> using namespace std; int main() { int L, c; float M[4][5], DOBRO[4][5]; //entrada for(L=0; L<4; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<": "; cin>>M[L][c]; //gera a matriz dobro . Poderia estar em outro for, mas assim eh melhor DOBRO[L][c]= M[L][c] * 2; } } //saida cout<<"\n\nMatriz Dobro\n\n"; for(L=0; L<4; L++) { for(c=0; c<5; c++) { cout<<DOBRO[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 2) Entrar com valores inteiros para uma matriz A[4] [4] e para uma matriz B[4] [4]. Gerar e exibir a matriz SOMA. #include <iostream> using namespace std; int main() { int L, c, A[4][4], B[4][4], SOMA[4][4]; //entrada dos valores da Matriz A for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //entrada dos valores da Matriz B for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: "; cin>>B[L][c]; //gera a matriz SOMA . Poderia estar em outro for, mas assim eh melhor SOMA[L][c]= A[L][c] + B[L][c]; } } //saida cout<<"\n\nMatriz SOMA\n\n"; for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<SOMA[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 3) Entrar com valores para duas matrizes 5 x 5. Gerar e exibir a matriz diferença. #include <iostream> using namespace std; int main() { int L, c, A[5][5], B[5][5], diferenca[5][5]; //entrada dos valores da Matriz A for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //entrada dos valores da Matriz B for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: "; cin>>B[L][c]; //gera a matriz diferenca . Poderia estar em outro for, mas assim eh melhor diferenca[L][c]= A[L][c] + B[L][c]; } } //saida cout<<"\n\nMatriz Diferenca\n\n"; for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<diferenca[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 4) Ler valores inteiros para a matriz A[3][5] . Gerar e exibir a matriz SOMA_LINHA, onde cada elemento é a soma dos elementos de uma linha da matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou do trecho de saída. #include <iostream> using namespace std; int main() { int L, c, A[3][5], SOMA_LINHA[3]; //entrada dos valores da Matriz A for(L=0; L<3; L++) { SOMA_LINHA[L] = 0;//para não ter que criar outro for for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //gera a matriz SOMA_LINHA for(L=0;L<3;L++) for (c=0; c<5;c++) SOMA_LINHA[L] += A[L][c]; //saida system("cls"); cout<<"\n\nSoma Linha\n\n"; for(L=0;L< 3;L++) cout<<"\n"<<SOMA_LINHA[L]; cout<<"\n\n"; system("pause"); } 5) Ler valores inteiros para a matriz A[3][5]. Gerar e imprimir a matriz SOMA_COLUNA, onde cada elemento é a soma dos elementos de uma coluna da matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou do trecho de saída. #include <iostream> using namespace std; int main() { int L, c, A[3][5], SOMA_COLUNA[5]; //entrada dos valores da Matriz A for(L=0; L<3; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //inicializa SOMA_COLUNA for (c=0; c<5;c++) SOMA_COLUNA[c] = 0; //gera a matriz SOMA_COLUNA for (c=0; c<5;c++) for(L=0;L<3;L++) SOMA_COLUNA[c] += A[L][c]; //saida system("cls"); cout<<"\n\nSoma Coluna\n\n"; for(c=0;c< 5;c++) cout<<SOMA_COLUNA[c]<<"\t"; cout<<"\n\n"; system("pause"); } 6) Fazer um programa leia valores para uma matriz M10 x 10 e escreva-a na ordem inversa que foi lida. Se a matriz fosse M3 x 3 e tivesse estes elementos: sua impressão seria: ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 987 654 321 ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 123 456 789 #include <iostream> using namespace std; int main() { int L,C; float mat[10][10]; //Entrada for(L=0; L < 10; L++) { for(C=0; C < 10; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nMatriz Exibida na orem inversa de leitura\n"; for(L=9; L >=0; L--) { for(C=9; C >=0 ; C--) { cout<<mat[L][C]<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 7) Faça um programa que leia valores reais para uma matriz 5 x 5 e exiba todos os elementos exceto os elementos da diagonal principal. #include <iostream> using namespace std; int main() { int L,C; float mat[5][5]; //Entrada for(L=0; L < 5; L++) { for(C=0; C < 5; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos menos os da DP\n"; for(L=0; L < 5; L++) { for(C=0; C < 5; C++) { if(L != C) cout<<mat[L][C]<<"\t"; else cout<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 8) Faça um programa que leia valores reais para uma matriz 4 x 4 e exiba os elementos que se encontram acima da diagonal principal e a soma deles. #include <iostream> using namespace std; int main() { int L,C; float mat[4][4], soma=0; //Entrada for(L=0; L < 4; L++) {for(C=0; C < 4; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos acima da DP\n"; for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { if(L < C) { soma += mat[L][C]; cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\nSoma dos elementos: "<<soma<<"\n"; system("pause"); } 9) Faça um programa que leia os elementos de uma matriz 6 x 6 e exiba os elementos que se encontram acima da diagonal principal e o produto deles. #include <iostream> using namespace std; int main() { int L,C; float mat[6][6], produto=1; //Entrada for(L=0; L < 6; L++) { for(C=0; C < 6; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos acima da DP\n"; for(L=0; L < 6; L++) { for(C=0; C < 6; C++) { if(L < C) { produto *= mat[L][C]; cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\nProduto dos elementos: "<<produto<<"\n"; system("pause"); } 9) Faça um programa que leia valores inteiros para uma matriz M inteira 4x4 e exiba os elementos que estão em linhas pares e colunas ímpares. #include <iostream> using namespace std; int main() { int L,C, mat[4][4]; //Entrada for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nElementos em linhas pares e colunas impares\n"; for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { if(L % 2 ==1 && C % 2 == 0) { cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 10) Num torneio de futsal, de um turno, inscreveram-se 12 times. Armazenar os nomes dos times e exibir a tabela de jogos. Solução_1 #include <iostream> #define TAM 3 using namespace std; int main() { int L, c; char times[TAM][21]; //entrada dos nomes dos times for(L=0; L<TAM; L++) { cout<<"\nNome do "<<L+1<<"o time: "; cin.getline(times[L], 31); } // saida system("cls"); //nao eh obrigatorio cout<<"\n\nTabela de Jogos \n\n"; for(L=0; L<TAM; L++) for(c=0; c<TAM; c++) if(L < c) // pode ser if(L > c) tambem cout<<"\n"<<times[L]<<" x "<<times[c]; cout<<"\n\n"; system("pause"); } Solução_2 #include <iostream> #define TAM 3 using namespace std; int main() { int L, c; char times[TAM][21]; //entrada dos nomes dos times for(L=0; L<TAM; L++) { cout<<"\nNome do "<<L+1<<"o time: "; cin.getline(times[L], 31); } // saida system("cls"); //nao eh obrigatorio cout<<"\n\nTabela de Jogos \n\n"; for(L=0; L<TAM-1; L++) for(c=L+1; c<TAM; c++) cout<<"\n"<<times[L]<<" x "<<times[c]; cout<<"\n\n"; system("pause"); } COMO RESOLVER UM PROBLEMA A forma como se resolve um problema é muito pessoal, mas nada nos impede que sigamos alguns conselhos como, por exemplo, os do matemático húngaro George Pólya, que nasceu em 1887 e faleceu em 1995. Seus trabalhos contribuíram de forma significativa para a Matemática atual e incluíram séries, análise combinatória, probabilidades, entre outros. Ele escreveu alguns livros e, em um dos seus livros, ensinou como resolver problemas, em quatro fases, independentes de serem matemáticos ou não. Apresentamos abaixo as quatro fases sugeridas por ele. 1. Compreenda o problema • Identifique os dados. • Identifique a incógnita. • Identifique a condição. • Verifique se possível satisfazer a condição com os dados fornecidos. 2. Planeje • Tente encontrar uma relação entre os dados e a incógnita. • Procure achar alguma semelhança entre esse problema e outro que já resolveu. • Releia o problema se não tiver conseguido encontrar as etapas necessárias para resolvê-lo. • Quando tiver conseguido, escreva as etapas sem ser prolixo e impreciso. 3. Execute o plano • Acompanhe todas as etapas. • Verifique se conseguiu atingir o objetivo. 4. Reflita sobre a solução • Consegue justificar todas as etapas? • Consegue visualizar outra solução? • Consegue ver uma outra aplicação para a solução encontrada? ETAPAS PARA A SOLUÇÃO DO PROBLEMA Vamos exercitar mais. Tendo em vista o critério da Estácio/2010 para cálculo da média de cada disciplina, construa um algoritmo para calcular a média. Primeiro momento a) Dados serão digitados no teclado (origem), totalizando três dados numéricos: um para a AV1, outro para AV2 e outro para AV3. b) O algoritmo deverá ignorar a menor nota e calcular a média aritmética das duas maiores notas, resultando em uma informação numérica. c) O algoritmo deverá exibir a média. Segundo momento a) Três operações de entrada de dados: uma para cada nota. b) Uma operação de teste para ignorar a menor nota. b.1) Uma operação de processamento para calcular média aritmética das duas maiores notas. c) Uma operação de saída para exibir o novo valor da prestação. Terceiro momento Quarto momento a) A solução foi satisfatória. b) A solução poderá servir como parte de outros problemas alterando pouca coisa. Podemos constatar, após a análise desses quatro momentos, que o ato de programar requer conhecimento, disciplina, rigor na análise e resolução de problemas, criatividade, raciocínio lógico, sensibilidade para entender os desejos do outro, desenvolvimento da capacidade de abstração e de uma harmonia pessoal para que possa, muitas vezes, tornar real o objeto imaginado por ele ou outrem. Temos que admitir que programar não é algo simples visto que envolve muitas capacidades e habilidades que estão presentes em pelo menos cinco formas de expressar nossa inteligência segundo a teoria de Howard Gardner sobre as múltiplas inteligências. 2 Formalizando alguns conceitos Linguagem Natural Nesse tipo de linguagem, a legibilidade e a eficiência do algoritmo dependerão da forma como você se expressa em português. Fluxograma (Diagrama de Blocos) Como toda linguagem, essa tem suas vantagens e desvantagens. É de fácil entendimento e universal, mas qualquer modificação implica reconstruir todo o fluxo e também, para algoritmos muito extensos, serão necessárias várias páginas para escrevê-los. Pseudolinguagem A pseudolinguagem é uma linguagem de programação simplificada embora tenha sua sintaxe (como algo é expresso) e sua semântica (o significado de algo) Quando elas surgiram, tinham como objetivo facilitar o entendimento do algoritmo, usando a língua nativa. Não se preocuparam em criar um tradutor e, por essa razão não existia uma rigidez quanto à semântica. Com o passar dos anos, foram sendo criados tradutores e, em verdade, deixaram de ser uma pseudolinguagem, mas isso não chega a ser um prejuízo porque é mais fácil começar com uma linguagem escrita em português do que em inglês. Por que a linguagem UAL e não o Portugol? Sabemos que a maioria dos autores faz uso da “pseudolinguagem” Portugol, mas, como foi explicado no filme, temos duas grandes razões para usar a linguagem UAL: é o resultado de um projeto final de duas alunas da nossa universidade e existe um ambiente em que você poderá usá-lo para digitar seus algoritmos e testá-los.
Compartilhar