Disciplina Informática e Computação CMP – 1060 Prof. MSc Mário Oliveira Orsi 2/fev/2011 Informática e Computação CMP 1060 AULA 01 Roteiro da 1a aula Objetivo: Apresentação da disciplina Atividades: Apresentação e Distribuição do Programa. Discussão preliminar dos conteúdos e Plano de Avaliações. Apresentação do conceito de algoritmo Algoritmo Algoritmo: é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações. Exemplo: montar um algoritmo para um criança de 5 anos acender um palito de fósforo 1. Pegue o objeto (caixa de fósforo) 2. Segure firme o lado preto da cx de fósforo 3. Empurre para abrir e ver um palito 4. Pegue um palito 5. Friquicione a extremidade grossa na parte preta Verifique que esta faltando um passo na sequencia anterior uma vez que os palitos iriam cair: 1. 2. 3. 4. 5. 6. Pegue o objeto (caixa de fósforo) Segure firme o lado preto da cx de fósforo Empurre para abrir e ver um palito Pegue um palito FECHE A CAIXA Friquicione a extremidade grossa na parte preta O detalhamento deve se completo para que as instruções tenham o efeito desejado. AULA 02 Roteiro da 2a aula Referência ao Programa: Conceitos Básicos Conceitos de Hardware/Software; Estrutura de um computador digital; Representação e armazenamento da informação; Histórico, evolução e perspectivas da computação; Arquitetura de um Sistema de computação : Memória, Unidade Central de Processamento, Entrada e Saída, e Periféricos. Objetivo: apresentar os conceitos básicos de informática. Conceitos Básicos Informática - infor + mática. É o tratamento da informação de forma automática Dado - é tudo aquilo que é fornecido ao computador de forma bruta Informação - é o resultado obtido do computador após o processamento Processamento de Dados - é um conjunto de operações que aplicadas a dados nos fornece uma informação Computador - é uma máquina que processa dados de forma automática HARDWARE - componente, ou conjunto de componentes físicos internos e externos de um computador ou de seus periféricos. Hardware - é a parte física do computador Exemplos de Hardware : Monitor, Teclado, Mouse, Impressora, Plotters, Caneta Óptica, Modem, Hub, Leitoras Ópticas, Scanner CPU etc ..... BIT - Binary Digit. É a menor unidade de informação em um computador. Pode ser 0 (desligado) ou 1 (ligado) Byte - conjunto de 8 BITs. É unidade básica de medida da memória em um computador. OPERAÇÕES BÁSICAS DE UM COMPUTADOR Exemplo: Folha de Pagamento Entrada = nome, salário, horas extras, etc. de cada funcionário Processamento = cálculo do salário Saída = Contracheques e outros relatórios Sistema de Computador • O computador é um sistema de hardware, uma combinação de componentes inter-relacionados que desempenham as funções básicas do sistema: entrada, processamento, saída, armazenamento e controle. • Memória Principal - é formada por 2 memórias RAM e ROM • ROM - memória somente para leitura. É pré-gravada pelo fabricante. Não é volátil • RAM - memória de acesso aleatório. Armazena as informações em processamento enquanto o computador estiver ligado. É volátil. • Memória Auxiliar - unidades que armazenam programas e dados para posterior utilização. Ex: pen drive • Periféricos de Entrada - unidades para entrada de dados no computador. Ex: teclado • Periféricos de Saída - unidades para saída de dados do computador. Ex: monitor de vídeo ARQUITETURA DE UM COMPUTADOR Microprocessador- CPU (unidade central de processamento. É quem lê e executa todas as informações dos programas. Chip de Memória: DISCO RÍGIDO ou HD disco rígido interno ao computador com grande capacidade de armazenamento de dados os tamanhos mais comuns são: 10, 16, 20 Gigabytes ou mais armazena os programas e arquivos a serem utilizados pelo usuário VELOCIDADE DE PROCESSAMENTO Clock - velocidade do micro-processador. É medido em MHz (1.000.000 de ciclos por segundo) Evolução do Clock : PC-XT 8 MHz AT-286 25 MHz AT-386 SX 33 MHz AT-386 DX 40 MHz AT-486 SX 33 MHz AT-486 DX 50 MHz AT-486 DX2 66 MHz AT-486 DX4 100 MHz Pentium 100-133-150-166 MHz Pentium MMX 150-166-200-300 MHz Pentium II 300-400-450 MHz Pentium III 1200 MHz ou mais Pentium V 1300 MHz ou mais Intel Corel 2 1,67 GHz Celeron (R) 1,80 GHz SOFTWARE - é a parte lógica de um sistema de computador, são programas, instruções que a máquina (hardware) pode executar. Software - são os programas e aplicativos que permitem o funcionamento do computador Exemplos de Softwares Windows XP, Windows Vista, Word, Excell, PowerPoint, Freelance, Access, Translator, Netscape, Wingate, Auto Cad, NT, Unix etc .... Sistema Operacional - é responsável pela comunicação homem-computador. Ex: DOS e Windows Linguagens de Programação - utilizadas por programadores para desenvolver programas aplicativos. Ex: C++, Fox Pro, Delphi, Java, etc Programas Utilitários - facilitam a manutenção de discos e arquivos. Ex: Compactador, Backup, etc. TIPOS DE SOFTWARE Programas Aplicativos - desenvolvidos em certa linguagem de programação para fins específicos. Exemplos: Editor de texto, Planilha eletrônica, Controle de estoque. Banco de dados Editoração eletrônica e Programas Gráficos Navegadores (Browsers): mostra as páginas da internet. Ex. Internet Explorer, Navigator LINGUAGENS DE PROGRAMAÇÃO • Linguagem de Máquina ou de Baixo Nível - é a linguagem compreendida internamente pelo computador. Suas instruções são escritas em códigos binários • Linguagem Montadora - linguagem intermediária entre a linguagem de máquina e a linguagem de alto nível. É escrita através de códigos simbólicos utilizando números, letras e símbolos. Ex: Assembler • Linguagem de Programação ou Alto Nível - é a linguagem utilizada pelo usuário para escrever programas de computador. Os programas são escritos utilizando palavras da língua inglesa. Ex: Pascal e C Nível Ling.de Maquina Baixo Alto Ling.de programação LINGUAGENS DE PROGRAMAÇÃO • Antes do computador executar os programas eles devem antes ser traduzidos para a linguagem de máquina. Esta tradução é feita através um software denominado compilador. A operação de tradução do programa para linguagem de máquina é chamada compilação Ling.de programação compilação Ling.de Máquina ITENS FUNDAMENTAIS • Algorítmo: é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações. • Comandos: determina as ações a serem executadas pelo destinatário. • Estrutura: determina a ordem e as condições dos comandos que devem ser executados. • Estruturas de Controle: • Sequencial: os comandos são executados um após o outro, na mesma ordem em que aparecem escritos, se não houver indicações ao contrário. • Condicional: provoca ou não uma ação dependendo se a condição for falsa ou verdadeira • Repetição: repete os comandos e estruturas de comando até que encontra uma condição para que interrompa a repetição. ALGORITMO: Exemplo: Desenvolva os passos de um programa que converte polegadas para centímetros. 1 inch 2.54 cm Solução: Passos para converter POL CM 1. Alocar duas variáveis POL, CM numéricas 2. Entrar POL {medida em polegadas} 3. Calcular CM = 2.54 * CM 4. Mostrar CM EXERCÍCIOS: 1- Desenvolva os passos de um programa para calcular a área de um retângulo Solução: 1. Alocar três variáveis B, H e AREA numéricas 2. Entrar B, H {valor em centímetros} 3. Calcular AREA = B * H 4. Mostrar AREA 2- Sabendo-se um dollar = R$ 1,90; Desenvolva os passos de um programa que dada uma quantia em dollar calcula o valor em real. Solução: 1. Alocar duas variáveis D, R numéricas 2. Entrar D {valor em dollares} 3. Calcular R = 1,90 * D 4. Mostrar R AULA 03 Roteiro da 3a aula Referência ao Programa: Elementos básicos do algoritmo e da programação Constantes; variáveis, expressões aritméticas, lógicas e literais; comandos de atribuição, entrada e saída; Objetivo: apresentar os conceitos itens fundamentais da linguagem C++ ITENS FUNDAMENTAIS Programando em C++ 1. Constantes: São valores que são mantidos fixos pelo compilador. Tipo de Dado Exemplos de Constantes char ‟b‟ ‟\n‟ ‟\0‟ int 2 32000 -130 long int 100000 -467 short int 100 unsigned int 50000 35678 float 0.0 23.7 double 12546354334.0 -0.0000034236556 Exemplos Constantes Globais #define nome „UCG‟ #define pi 3.14159 #define minimo 380 Exemplos Constantes Locais const int a; const float pi = 3.141 -30 -12.3e-10 2. Variáveis: São valores que podem ser alterados durante o programa. É identificada por um nome ou identificador. Deve começar com uma letra ou sublinhado ( _ ) e os caracteres subsequentes devem ser letras, números ou sublinhado ( _ ). No máximo 32 caracteres. O C tem 5 tipos básicos de variáveis: char, int, float, void, double Modificadores: long, short, signed, unsigned Os Tipos do C Tipo Num de bits Intervalo Inicio Fim char 8 -128 127 unsigned char 8 0 255 signed char 8 -128 127 int 16 -32.768 32.767 unsigned int 16 0 65.535 signed int 16 -32.768 32.767 short int 16 -32.768 32.767 unsigned short int 16 0 65.535 signed short int 16 -32.768 32.767 long int 32 -2.147.483.648 2.147.483.647 signed long int 32 -2.147.483.648 2.147.483.647 unsigned long int 32 0 4.294.967.295 float 32 3,4E-38 3.4E+38 double 64 1,7E-308 1,7E+308 long double 80 3,4E-4932 3,4E+4932 Declaração de variáveis tipo_da_variável lista_de_variáveis; EXEMPLOS: int dias; float salario, media, altura, n1, n2; Variáveis do mesmo tipo devem ser separadas por vírgula ( , ). char ch, letra, nome[20]; Todo comando é finalizado com ponto-vírgula ( ; ) long count; float pi = 3.14159; double cosseno; 3. COMANDO DE ATRIBUIÇÃO ( = ) Atribui um valor a uma variável. Identificador_da_variável = valor, expressão aritmética, função Exemplos: dias = 260; salario = 380.00; media = 0.4 * n1 + 0.6 * n2; letra = „m‟; cosseno = cos(2*pi); count = (dias + 180)/2; Operadores Aritméticos e de Atribuição Operador + * / % ++ -- x++; x--; Ação Soma (inteira e ponto flutuante) Subtração ou Troca de sinal (inteira e ponto flutuante) Multiplicação (inteira e ponto flutuante) Divisão (inteira e ponto flutuante) Resto de divisão (de inteiros) Incremento (inteiro e ponto flutuante) Decremento (inteiro e ponto flutuante) são equivalentes a x = x + 1; x = x – 1 Expressão Original Expressão Equivalente x = x + k; x + = k; x = x - k; x - = k; x = x * k; x * = k; x = x / k; x / = k; Exemplo: int a = 17, b = 3; int x, y; float Z = 17. , z1, z2; x = a / b; y = a % b; Z1 = z / b; Z2 = a / b; PRIMEIRO PROGRAMA em C++ IMPRIMIR NA TELA DO MONITOR A FRASE: Primeiro Programa #include <cstdlib> // diretiva para dev c++ windows Diz ao compilador que ele deve incluir o cabeçalho <iostream> #include <iostream> // diretiva do pré processador using namespace std; /*diretiva using*/ main ( ) { cout << “Primeiro Programa”; system(“PAUSE”); Define uma função de nome main presente em todos os programas em C Que é chamada quando o programa for executado. As { } delimitam o seu conteúdo return 0; } obs.:Diretivas: para auxiliar o desenvolvimento do programa fonte ( não pertencem à ling C++} #include <cstdlib> Diretiva para permitir o uso da função system ( ) no Windows (não necessário nos compiladores mais novos) // diretiva para dev c++ Windows comentário (quando usar compilador no Windows) #include <iostream> // diretiva do pré processador Arquivo que contém declarações necessárias para entrada e saída de dados (cin, cout) using namespace std; /*diretiva using*/ necessário para usar os nomes dentro de um name space sem explicitar o qualificador ( ex. std::cout << “Primeiro Programa”) system(“PAUSE”); Solicita ao computador uma PAUSA até que uma tecla seja pressionada return 0; solicita à função main ( ) que retorne “zero” para quem a chamou. (não necessário nos compiladores mais novos) 4. Ex: Comando de Saída ( cout ) cout << “ Primeiro Programa”; Objeto cout prédefinido na diretiva <iostream> com o padrão da classe de leitura e impressão declarado no namespace std O operador << é chamado de operador de inserção e envia a mensagem “ Primeiro Programa” a ser impressa para a saída padrão (vídeo) Códigos especiais \ (com barra invertida) cout << “Primeiro Programa \n”; cout << “ Primeiro Programa ”<< endl; Códigos especiais Significado \n Nova linha \t Tabulação \a \r \0 beep CR – volta o cursor para o inicio da linha Zero (Null) Exemplo: programa imprime na tela a mensagem: Ola! Eu estou vivo. #include <iostream> // diretiva do pré processador using namespace std; /*diretiva using*/ main () /* Um Primeiro Programa */ { cout <<"Ola! Eu estou vivo!\n"; system(“PAUSE”); } O C é "Case Sensitive": o maiúsculo difere do minúsculo variáveis diferentes Soma, SOMA, SoMa, sOmA comandos (letras minúsculas) cin, cout Usando COUT Exemplo 1 #include <iostream> using namespace std; main( ) { cout << "Exemplo de um programa em C++!" << endl; cout << "Legal programar em C++!"; cout << endl << "eh bem interessante!\n"; cout << "Esta eh‚ a linha um\nEsta eh‚ a linha dois\n"; cout << 3.14159; cout << "\n\nAos " << 20 << " anos eu ganhava " << 493.34 << endl; cout << "Bip\a\tBip\a\tBip\a\n"; system("PAUSE"); } Exemplo 2 #include <iostream> using namespace std; main ( ) { int idade = 32; float salario = 25000.75; long dist_lua = 382171; int positivo = 40000; cout <<"O funcionario tem"<<idade<<"anos" <<endl; cout << "O funcionario ganha $" << salario << endl; cout <<"A lua esta "<<dist_lua << " KM da Terra“; cout << "positivo : " << positivo << endl; system("PAUSE"); } 5. Comando de Entrada ( cin ) cin >> variável 1>> variável 2..; // Declara a variável item do tipo char com 20 caracteres e a variável letra também do tipo char char item[20], letra; int num_pesca; // Declara a variável num_pesca do tipo inteiro float custo; // Declara a variável custo do tipo float cout << “ digite: o nome, a letra, custo, qtde pesca”; cin >> item >> letra >> num_pesca >> custo; item num_pesca custo letra pedro 5 7.00 b Usando cin Exemplo 1 #include <iostream> using namespace std; main () { char letra; cout << "Digite qualquer caractere e pressione Enter: "; cin >> letra; cout << "A letra digitada foi : " << letra << endl; system(“PAUSE”); } Exemplo 2 #include <iostream> using namespace std; main () { int numero; // O número lido no teclado cout << "Digite seu número favorito e pressione Enter: "; cin >> numero; cout << "Seu número favorito ‚ " << numero << endl; system(“PAUSE”); } Exemplo 3 #include <iostream> using namespace std; main () { int primeiro, segundo; // Números digitados no teclado cout << "Digite dois NUMEROS e pressione Enter apos cada entrada: "; cin >> primeiro >> segundo; cout << "Os NUMEROS digitados foram " << primeiro << " e " << segundo << endl; system(“PAUSE”); } 6. Exercício: feito em classe para implementação no lab. Desenvolver um programa para transformar dias em anos. 1. 2. 3. 4. Declarar as variáveis Ler a quantidade de dias Calcular a correspondência de dias em anos (1 ano =365,25 dias) Exibir o valor calculado AULA 04 Roteiro da 4a aula Referência ao Programa: Elementos básicos do algoritmo e da programação Estrutura de fluxo sequencial Objetivo: apresentar a estrutura sequencial da linguagem C++ Estrutura Sequencial Exercícios resolvidos em sala 1. Maria é uma criança muito econômica e têm guardado no seu cofre moedas de dez e cinco centavos. O cofre está tão cheio de moedas que ela resolveu trocar com sua mãe em notas de um real, e para isso ela contou as quantidades de moedas que ela tem de dez e cinco centavos. Desenvolver um programa para transformar o equivalente das moedas de Maria em notas de um real e centavos /* programa MOEDAS */ #include <iostream.> using namespace std; main ( ) { // estruturas de dados int DEZ, // quantidade de moedas de 10 centavos CINCO, // quantidades de moedas de 5 centavos CENTAVOS, // total em centavos que Maria tem no cofre REAL, // quantidade de notas de um real SOBRA; // total de centavos que sobraram // leia os dados de entrada cout << "Informe a quantidade de moedas de 10 centavos que Maria possui:\n "; cin>> DEZ; cout << "Informe a quantidade de moedas de 5 centavos que Maria possui:\n "; cin>> CINCO; // Cálculo total em centavos CENTAVOS =DEZ * 10 + CINCO * 5; // Cálculo da quantidade de notas de um real REAL = CENTAVOS / 100; // quociente entre CENTAVOS e 100 // Cálculo dos centavos que sobraram no cofre SOBRA = CENTAVOS % 100; //resto entre CENTAVOS e 100 // Exibe os valores das variáveis cout<< "Maria tem "<< REAL<< " nota(s) de um real e "<< SOBRA<<" centavos"<<endl; system("PAUSE"); } 2. Fazer um programa que dado o tempo em segundos, necessários para viajar de uma cidade à outra. Calcular e escrever quantas horas, minutos e segundos esta viajem dura. // programa CRONOMETRO #include <iostream.> #define MINSEG 3600 #define SEG 60 using namespace std; main ( ) { //estruturas de dados int TEMPO, HORAS, MINUTOS, SEGUNDOS; // leia os dados de entrada cout<< "Informe o tempo medido pelo cronômetro (em segundos): \n"; cin >> TEMPO; //Calcule a quantidade de horas HORAS = (TEMPO/MINSEG); // quociente entre TEMPO e 3600 //Calcule a quantidade de minutos // quociente da div (resto entre TEMPO e 3600), e 60 MINUTOS = ((TEMPO%MINSEG)/SEG); //Calcule a quantidade de segundos //resto da div (resto entre TEMPO e 3600), e 60 SEGUNDOS = ((TEMPO%MINSEG)%SEG); //exiba os resultados de saída cout <<TEMPO<< " segundos são equivalentes a "<< HORAS<< " horas, "; cout<< MINUTOS<< " minutos e "<< SEGUNDOS<< " segundos"<<endl; system("PAUSE"); } Desafio para lab: Entrar com horário do início da viagem em horas, minutos e segundos (19h20min00seg) e horário do fim da viagem (22h30mim10seg). Calcular e exibir a duração da viagem em horas, minutos e segundos. 3. Dado um número de três dígitos, desenvolver um algoritmo para invertê-lo e armazenando-o em uma outra variável. // programa INVERTIDO #include <iostream> using namespace std; main( ) { //estruturas de dados int NUMERO, INVERTIDO, DEZENA,CENTENA, UNIDADE; // leia os dados de entrada cout<< "Informe o numero para inverter: \n"; cin >> NUMERO; // resto entre NUMERO e 10 UNIDADE = NUMERO%10; // quociente ( resto do NUMERO e 100) e 10) DEZENA = (NUMERO%100)/10; // quociente entre NUMERO e 100 CENTENA = NUMERO/100; // inverter o número INVERTIDO = UNIDADE *100 + DEZENA *10 + CENTENA; //exiba os resultados de saída cout << "o número invertido eh "<< INVERTIDO <<endl; system("PAUSE"); } 4. Fazer um programa para trocar, entre si, os valores das variáveis A e B. Usando uma variável auxiliar. // programa TROCA #include <iostream.> using namespace std; main() { //estruturas de dados int A, B, AUX; // leia os dados de entrada cout<< "Informe o valor da primeira variavel: \n"; cin >> A; cout<< "Informe o valor da segunda variavel: \n"; cin >> B; //Trocar as variáveis AUX = A; A=B; B = AUX; //exiba os resultados de saída cout << "o valor armazenado na variavel A eh "<< A <<endl; cout << "o valor armazenado na variavel B eh "<< B <<endl; system("PAUSE"); } Desafio em Sala: Trocar os valores das variáveis entre si sem usar variável auxiliar AULA 05 Roteiro da 5a aula Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas Estruturas de controle de fluxo condicionais Objetivo: apresentar a estrutura condicional CONTROLE DE FLUXO ESTRUTURA CONDICIONAL Os programas que vimos até agora têm a seguinte estrutura: main() { declarações instrução1 instrução2 ... instruçãoN } O caso geral da instrução if-else : se a (expressão) for verdadeira executa a instrução 1 senão executa a instrução 2 if ( expressão ) instrução1 ; else instrução2 ; O comando else não é obrigatório: if ( expressão ) instrução1 ; Expressões Logicas: é a expressão cujo operadores são lógicos e cujos operandos são relações, constantes e/ou variáveis do tipo lógico. Relações: X + Y = Z o resultado será verdadeiro ou falso. Símbolo Significado < Menor > Maior <= menor ou igual >= maior ou igual == Igual != Diferente Operadores Lógicos • • • e --- conjunção ( é verdadeira se e somente se ambas as proposições são verdadeiras). ou --- disjunção ( é verdadeira se e somente se, pelos menos uma delas fOU são verdadeiras). não --- negação (é negação da expressão) Operador Descrição Exemplo Resultado && E (5 > 1) && (3>10) FALSO && E (2 >1) && (10 > 9) VERDADEIRO || OU (3> 1) || (10 > 11) VERDADEIRO || OU (4> 2) || (10 > 5) VERDADEIRO ! NÃO !(5>1) FALSO ! NÃO !(2 > 3) E VERDADEIRO Exemplo de Estrutura Condicional Simples if ( expressão ) instrução1 ; Desenvolver um programa para entrar com um preço do carro e calcular o preço final de acordo com as opções do usuário com os opcionais de vidro elétrico, ar condicionado, trava central, pintura metálica e ar condicionado. // programa PRECOCARRO #include <iostream.> using namespace std; main() { char RESPAC[1],RESPDH[1],RESPPM[1], RESPVE[1],RESPTC[1]; float PRECOFINAL; //leia os dados de entrada cout << "Deseja Ar Condicionado (S/N) , (s/n)? "; cin >> RESPAC; cout << "Deseja Direção Hidráulica (S/N) , (s/n)? "; cin >> RESPDH; cout << "Deseja Pintura Metálica (S/N) , (s/n)? "; cin >> RESPPM; cout << "Deseja Vidros Elétricos (S/N) , (s/n)? "; cin >> RESPVE; cout << "Deseja Trava Central (S/N) , (s/n)? "; cin >> RESPTC; cout << "Qual o preço inicial do carro"; cin >> PRECOFINAL; if( (RESPAC = = 'S') || (RESPAC = = 's') ) PRECOFINAL = PRECOFINAL + 2500.; if( (RESPDH = = 'S') || (RESPDH = = 's') ) PRECOFINAL = PRECOFINAL + 2000.; if( (RESPPM = = 'S') || (RESPPM = = 's') ) PRECOFINAL = PRECOFINAL + 650.; if( (RESPVE = = 'S') || (RESPVE == 's')) PRECOFINAL = PRECOFINAL + 500.; if( (RESPTC = = 'S') ||(RESPTC = = 's') ) PRECOFINAL = PRECOFINAL + 400.; //exiba os resultados de saída cout<< "R$ "<< PRECOFINAL<< " será o preço final do carro.\n"; system("PAUSE"); } Exemplo de Estrutura Condicional Composta if ( expressão ) instrução1 ; else instrução2 ; Desenvolver um programa para entrar com dois números e exibir o maior entre eles. /*Este programa entra com dois números distintos e exibi a mensagem de qual número é maior. Programa MAIOR*/ #include <iostream> using namespace std; main() { // define dois inteiros int X , Y ; //entra com dois números inteiros cout << “Digite dois números inteiros: ”; cin >>X>>Y; //exibe uma mensagem dizendo qual número é maior if (X > Y) { cout << X<<“ eh mair do que " <<Y<< endl; } else { cout << X<<" eh menor do que " <<Y<< endl; } system (“PAUSE”); } //programa PARIMPAR - Esse programa verifica um número é par ou ímpar #include <iostream> using namespace std; main() { int N; cout <<“Digite um número inteiro: "; cin >> N ; if ( N % 2 == 0 ) cout<<N<<” é par\n"; else cout<< N<<" eh ímpar\n"; Erros frequentes system (“PAUSE”); Provavelmente aquilo que queriam fazer era: if(...) instrução1; if(...) { instrução2; instrução1; instrução2; } if( expressão ) { instrução1 instrução2 SE EXISTIR MAIS DE UMA INSTRUÇÃO PARA SER EXECUTADA DENTRO DO COMANDO if OU instrução3 instrução4 } else { DO else DEVEMOS COLOCAR AS CHAVES { } instrução5 instrução6 } instrução7 #include <iostream> using namespace std; main() { char HOJE[10]; cout<< ”Que dia é hoje(DOMINGO, SEGUNDA,TERCA..\n"; cin>>HOJE; if ((HOJE == “SABADO”) || ( HOJE == “DOMINGO”)) { cout<< "Final-de-semana\n"; } else { cout<< " Vai trabalhar ou estudar\n"); } system (“PAUSE”); } Condicional Simples #include <iostream> using namespace std; main() {int nota; cout ”Entre com sua nota, por favor\n"; cin>>nota; if (nota >= 7.5){ cout<<"Incrível, você passou com mérito.\n"); } system (“PAUSE”); } Condicional Composta #include <iostream> using namespace std; main() { int nota; cout <<”Entre com sua nota, por favor\n"; cin>>nota; if (nota >= 5.0) { cout <<"Você passou.\n"; } else { cout<<”Que pena, você reprovou.\n"; } system (“PAUSE”); } Condicional Composta Aninhada #include <iostream> using namespace std; main() { int nota; cout <<”Entre com sua nota, por favor\n"; cin>>nota; if (nota >= 7.5) { cout <<"Incrível, você passou com mérito.\n"; } else if (nota >= 5.0) else { } system (“PAUSE”); } { cout<<”Você passou\n"; cout<<”Que pena, você reprovou.\n"; } AULA 06 e 07 Roteiro da 6a e 7a aulas Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas Estruturas de controle de fluxo condicionais Objetivo: apresentar a estrutura condicional CONTROLE DE FLUXO ESTRUTURA CONDICIONAL EXERCÍCIO 1 #include <math> #include <iostream> using namespace std; main() { // define dois inteiros int N, R; //entra com um número inteiro cout<<“Digite um número inteiro: ”; cin >> N; R = sqrt (N); if ((R*R) = = N) cout << N <<" eh um QUADRADO PERFEITO \n "; else cout << N <<" NAO eh QUADRADO PERFEITO \n "; system (“PAUSE”); } EXERCÍCIO 2 Uma locadora tem as seguintes regra para aluguel de fitas: • • seg, ter e qua (2,3 e 4) um desconto de 30% no preço normal; dom(1) preço normal; qui, sex e sab (5,6 e 7) um acréscimo de 20% no preço normal. Aluguel de filmes Comuns: preço normal, Lançamentos: acréscimo de 13% no preço normal Desenvolver um programa para ler o preço normal em R$, o dia a ser locado (1 a 7) a categoria do filme (C ou L). Calcular e imprimir o preço final do aluguel. Considerando que o cliente só pode alugar uma fita por 1 dia . QUAL TESTE ‘PRIMEIRO’? DIA = DOMINGO Não só devemos fazer teste se for para calcular algo #include <iostream> #include <string> using namespace std; main() { float PN, PF; int DIA; string TIPO; cout << “ Digite o preco normal \n "; cin >> PN; cout << "Digite o TIPO (C)COMUM (L)LANCAMENTO \n "; cin >> TIPO; cout << "QUAL O DIA DA LOCACAO 1,2,3,4,5,6 ou 7 \n "; cin >> DIA; // cálculo do preço final PF = PN; if ( (DIA==2) || (DIA==3) || (DIA==4) ) { PF = PN – PN * 0.3; } else if ( (DIA==5) || (DIA==6) || (DIA==7) ) PF = PN * 1.2; } if( (TIPO=='L') || (TIPO=='l') ) PF = PF + PN * 0.13; { { } cout<<"O PRECO FINAL EH R$"<<PF<<endl; system("PAUSE"); } EXERCÍCIO 3: Cálculo da média de um aluno Escrever um programa que lê o numero de identificação e as 3 notas obtidas por um aluno e calcula a média de aproveitamento, usando a fórmula: MA = (NOTA1 + NOTA2 * 2 + NOTA3 * 3) / 6 A atribuição de conceito obedece à tabela abaixo; O programa deve escrever o número do aluno, a média de aproveitamento, o conceito correspondente e a mensagem: Aprovado se o conceito for A, B ou C e Reprovado se D ou E. #include <iostream > #include <string> using namespace std; main() {float NOTA1, NOTA2, NOTA3, MA; int MATRICULA; string CONCEITO, SITUACAO; cout <<"Digite a Matricula \n"; cin >> MATRICULA; cout <<"Digite as 3 Notas \n"; cin >>NOTA1 >> NOTA2 >> NOTA3; MA = (NOTA1+NOTA2*2+NOTA3*3)/6; if ( MA >= 9.1 ) { CONCEITO = 'A'; SITUACAO = “APROVADO”; } else if (MA >= 7.6) { CONCEITO = 'B'; SITUACAO =”APROVADO"; } else if (MA >= 6.1) { CONCEITO = 'C'; SITUACAO =”APROVADO"; } else if (MA >= 4.1) { CONCEITO = 'D'; SITUACAO =REPROVADO"; } else { CONCEITO = 'E'; SITUACAO =REPROVADO"; } cout<<MATRICULA<<“ TEM MEDIA "<<MA<<“ e CONCEITO "<<CONCEITO<<“ e FOI “ << SITUACAO<< endl; system("PAUSE"); } AULA 08 AVALIAÇÃO PRELEÇÃO AULA 09 Roteiro da 9a aula Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas Estruturas de controle de fluxo condicionais Objetivo: apresentar o comando case-switch ESTRUTURA CONDICIONAL COMANDO CASE-SWITCH switch(resposta) { case 'a': sentenças de instruções para a opção a ; break; case 'b': sentenças de instruções para a opção b ; break; case 'c': sentenças de instruções para a opção c ; break; default: sentenças de instruções para entrada errada ; break; } EXEMPLO 1: Escrever um programa que leia dois números inteiros e a operação aritmética. Calcule e mostre o resultado. #include <iostream> using namespace std; main( ) { int a,b,36OPCAO; cout << “DIGITE UMA OPCAO\n”; cout << “ (1) Somar (2) Multiplicar (3) Diminuir (4) Dividir \n”; cin >> OPCAO36; cout << “Digite 2 numeros\n”; cin >> a >> b; switch (OPCAO) { case 1: cout<<”SOMA = “<< a+b; break; case 2: cout<<”Multiplicacao = “<< a*b; break; case 3: cout<<”DIFERENCA = “<<a-b; break; case 4: 36F (b==0) { cout<<”\n\n\t VOCE NÃO PODE DIVIDIR POR ZERO. 0 \n\n“; break; } else { cout<<”DIVISAO = “<< a/b; break; } default: cout<<”opcao invalida”; break; } system(“PAUSE”); } EXEMPLO 2: Escrever um programa que leia 3 notas dos alunos e o tipo de média (aritmética, ponderada ou harmônica. Calcule e mostre o resultado. #include <iostream > #include <iomanip> using namespace std; main() { float N1,N2,N3,MEDIA; int opcao; cout << "DIGITE 3 NOTAS\n"; cin >> N1 >> N2 >> N3; cout<<" DIGITE A OPCAO\n"; cout<<"(1) ARITMETICA (2) PONDERADA (3) HARMONICA \n"; cin>>opcao; cout << setprecision(2); switch (opcao) { case 1: MEDIA = (N1+N2+N3)/3; cout << "MEDIA ARITMETICA = "<< MEDIA << endl; break; case 2: MEDIA = (N1+N2*2+N3*3)/6; cout <<"MEDIA PONDERADA = "<< MEDIA << endl; break; case 3: if ((N1==0) || (N2==0) || (N3==0)) { cout<<" \n\n\t VOCE NAO PODE DIVIDIR POR ZERO. 0 \n\n"; break; } else { MEDIA = 3/(1/N1+1/N2+1/N3); cout<<"MEDIA HARMONICA = "<<MEDIA<<endl; break; } default: cout<<"opcao invalida"; break; } system("PAUSE"); } AULA 10 Roteiro da 10a aula Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas ESTRUTURA DE REPETIÇÃO Objetivo: apresentar como vincular a repetição de blocos à condições; Quando utilizar cada uma das estruturas disponíveis COMANDO while Executa sentenças (comandos) enquanto a condição for verdadeira. Condição (expressão ou teste) é verificada antes do bloco de comandos. Exemplo 1: Mostrar na tela os números de 1 a 10. #include <iostream> using namespace std; main ( ) { int numero = 1; while (numero <= 10) { cout << numero<<"\t"; numero = numero + 1; } system(“pause”); } Rastreamento (executando linha por linha) Exemplo 2: Calcular a soma dos números pares de 2 até 200 Solução: Iniciar o primeiro par = 2 e a soma= 0 Repetir enquanto o par <= 200 acumulamos o par na soma: soma = soma + par obtemos próximo par somando 2 ao par anterior par = par + 2 #include <iostream > using namespace std; main( ) { int SOMA, PAR; // inicialização das variáveis SOMA = 0; PAR = 2; while (PAR <= 200) { SOMA = SOMA + PAR; // soma dos pares PAR = PAR + 2; // incremento para o próximo par } // mostra o valor acumulado na soma cout << "A soma dos pares ate 200 eh " << SOMA << ".“ << endl; system (“PAUSE”); } Exemplo 3: // SOMA_PARES de um limite inferior até um limite superior #include <iostream> using namespace std; main() { int SOMA = 0, PAR, LIMSUP; cout << "digite o limite inferior e superior"<<endl; cin >> PAR >> LIMSUP; // enquanto (expressão ?) while (PAR <= LIMSUP) { SOMA = SOMA + PAR; // soma dos pares PAR = PAR + 2; // incremento para o próximo par } cout <<"A soma dos pares eh " << SOMA << "."<< endl; System (“PAUSE”); } COMANDO do-while Executa sentenças enquanto a condição for verdadeira. Condição é verificada depois do bloco. Exemplo 1: Mostrar na tela os números de 1 a 10. #include <iostream> using namespace std; Rastreamento (executando linha por linha) main ( ) { int numero = 1; do { cout << numero<<"\t"; numero = numero + 1; } while (numero <= 10); system(“pause”); } Exemplo 2: Código validação de dado de entrada: exemplo 0 a 10. #include <iostream> using namespace std; main ( ) { float NOTA; cout<< "Digite uma nota: "<< endl; do { cin >> NOTA; } while ((NOTA < 0) || (NOTA > 10)); system(“pause”); } podemos melhorar e pedir que digite novamente #include <iostream> using namespace std; main ( ) { float NOTA; cout<< "Digite uma nota: "<< endl; do { cin >> NOTA; if ( (NOTA <0) || (NOTA> 10) ) cout<<"nota invalida, digite novamente"<<endl; } while ((NOTA < 0) || (NOTA > 10)); system(“pause”); } Operadores de incremento: Exercício proposto: Desenvolver um programa que lê a senha (letras e/ou números) e valida a mesma. AULA 11 Roteiro da 11a aula Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas ESTRUTURA DE REPETIÇÃO Objetivo: apresentar como vincular a repetição de blocos à condições; Quando utilizar cada uma das estruturas disponíveis COMANDO for Exemplo 1: Executa sentenças (comandos) enquanto a condição (expressão ou teste) for verdadeira. Faz a inicialização o teste e atualização num único comando Exemplo 2: Desenvolver um programa que tabula a temperatura em Graus Farenheit para Graus Celsius. C = 5/9*(F-32) FVaria de 50 a 150 de 10 em 10 #include <iostream> #include <iomanip> using namespace std; main() { float C; cout<<setiosflags(ios::fixed) // ponto decimal <<setiosflags(ios::showpoint) //sempre imprimir o ponto decimal <<setprecision(2); // imprimir com 2 casas decimais cout<<"\t"<<“Far”<<"\t\t "<<“Celsius”<<"\n\n"; for (int F=50 ; F<=150 ; F+=10) { C = 5.0/9*(F-32); cout<<"\t"<<F<<"\t\t "<<C<<"\n\n"; } system("PAUSE"); } Caso de Uso: Quando usar while, do-while ou for ??? while (expressão) { ... } – Não há variável contadora – Inicialização, teste ou atualização complexos – Informações da condição obtidas na execução do { ... } while (expressão); – Executar um bloco pelo menos uma vez – Só é possível avaliar a condição depois de executar – Informações da condição obtidas após execução for (inicialização; teste; reinicialização) { ... } – Há variável contadora de repetições – Inicialização, teste e atualização simples – Separa claramente as instruções de controle das instruções do bloco Por que usar o for ? Cabeçalho agrupa: – Inicialização – Condição – Atualização Separa: – Controle (lógica) de repetição – Código a ser repetido Exemplo: Desenvolver um programa que lê as notas de várias pessoas e determina a maior nota. #include <iostream> // PROCESSA MAIOR NOTA using namespace std; main( ) { float NOTA, MAIORNOTA; //estruturas de dados MAIORNOTA = -1; //leia e processe os dados de entrada ( primeira nota e quando parar de ler ) cout<< "(Para finalizar informe uma nota negativa) "<<endl; cout<< "Informe uma nota: "<<endl; cin>>NOTA; while ( NOTA >= 0 ) // repetir enquanto nota por positiva { if (NOTA > MAIORNOTA) MAIORNOTA = NOTA; cout<< "Informe outra nota: "; cin>>NOTA; } //exiba os resultados de saída cout<< "A maior nota encontrada foi: "<< MAIORNOTA<<endl; system("PAUSE"); } Desafio: Desenvolver um programa que lê as notas de várias pessoas e determina a maior nota bem como a quantidade de pessoas que tiraram essa nota. AULA 12 Reservado para semana de cidadania / ciência e tecnologia. AULA 13 e 14 Roteiro da 13a e 14a aulas Referência ao Programa: Elementos Técnicas de construção de algoritmos e programas ESTRUTURA DE REPETIÇÃO Objetivo: apresentar estudo de casos (Calculo de series) Exemplo 1: Desenvolver um programa para calcular e mostrar o valor de pi dado pela sequencia abaixo com precisão 0,0001 e mostrar também quantos termos foram utilizados. QUAL ESTRUTURA USAR? Precisamos executar pelo menos uma vez Não sabemos a quantidade de termos PODEMOS USAR A ESTRUTURA do while // Prog para calcular Pi #include <iostream> using namespace std; main() { double PI =0 , T = 4 ; int D = 1, C = 1; do { //calculo do T e do PI if (C%2 == 0 ) PI = PI - T; // termo par else PI = PI + T; // termo impar D = D + 2; // próximo denom. T = 4.0/D; // próximo termo C = C + 1; // incrementa contador } while (PI < 3.1416) ; // repete o do enquanto PI menor que 3.1416 cout<<"O VALOR DE PI c/ PRECISAO 0.0001 EH "<<PI<<endl; cout<<"UTILIZANDO " << C << " TERMOS"; system("PAUSE"); } Exemplo 2: Desafio em sala: escrever o programa do exemplo 2 acima. Dicas Estrutura de repeticão calc T e S ? for usando D para controle (1<=D<=9) T= 1/pow (D,3)*SINAL O sinal do D= 1 (prim termo é + )SINAL=1 S soma dos termos iniciar S=0 Mudo o sinal do seg SINAL=SINAL*(-1); Repito até 5 termo D=9 sai da repetição PI pow (S*32 , 1.0/3) AULA 15 Avaliação N2 AULA 16 Roteiro da 16a aula Referência ao Programa: Estrutura de Dados. Variáveis Compostas homogênias Objetivo: apresentar VETOR. Exemplo 1: Desenvolver um programa que Lê: • AS NOTAS DE UMA TURMA Calcula e mostra: • A MÉDIA DA TURMA; • QUANTIDADE DE ALUNOS CUJA NOTA > MÉDIA; • A MENOR NOTA; Solução com variáveis simples: Na repetição com variáveis simples a cada nota que é digitada , substitui a anterior, portanto todos os calculos que dependem de cada nota tem que ser em executados antes da entrada de uma nova nota. Por exemplo, para saber qual a maior, menor etc. Ou para implementar um novo cálculo não é possivel pois ja se perdeu a nota anterior. Solução com variáveis Composta: #include <iostream> using namespace std; main ( ) { int CONTA = 0 , i ,CDF float N[59], MEDIA ; , MENOR ; cout << "DIGITE A 1a NOTA: \n "; cin>>N[CONTA]; while (N[CONTA] != - 1) { MEDIA = MEDIA + N[CONTA] ; CONTA++; cout << "DIGITE A proxima NOTA (-1)para parar: \n "; cin >> N[CONTA]; } MEDIA = MEDIA / CONTA ; for ( i = 0 ; i < CONTA ; i++ ) { if ( N[ i ] > MEDIA) CDF++; if (N[ i ] < MENOR) MENOR = N[ i ]; } cout << "A MEDIA DA TURMA eh: “ << MEDIA <<endl; cout<<CDF<< " ALUNO(S) ESTA(O) ACIMA DA MEDIA DA TURMA\n"; cout<<MENOR<< " eh A NOTA DO PIOR ALUNO \n"; system("PAUSE"); } Exemplo 2: SOLUÇÃO #include <iostream> using namespace std; main( ) { int VET[ 5 ] , i , N ; for ( i = 0 ; i <= 5 ; i ++ ) { cout << " DIGITE O "<< i + 1 <<" \xA7 numero \n"; cin>>VET[ i ]; } cout<<" DIGITE UM NUMERO: \n"; cin>>N; i = -1; do { i ++; } while ( ( VET[ i ] != N ) && ( i <= 5 ) ); if ( N == VET[ i ] ) cout<<"O No. "<< N <<" ESTA NA POS "<< i << endl; else cout<<"O No. "<< N <<" NAO FOI ENCONTRADO \n"; system("PAUSE"); } Exemplo 3: Modificar o programa do exemplo anterior PARA BUSCAR VÁRIOS NÚMEROS #include <iostream> using namespace std; main( ) { int VET[ 5 ] , i , N ; for ( i = 0 ; i <= 5 ; i ++ ) { cout << " DIGITE O "<< i + 1 <<" \xA7 numero \n"; cin>>VET[ i ]; } cout<<" DIGITE UM NUMERO: \n"; cin>>N; while (N!= -1) { // verificar vários números i = -1; do { i ++; } while ( ( VET[ i ] != N ) && ( i <= 5 ) ); if ( N == VET[ i ] ) cout<<"O No. "<< N <<" ESTA NA POS "<< i << endl; else cout<<"O No. "<< N <<" NAO FOI ENCONTRADO \n"; cout<<"DIGITE UM NUMERO: ou (-1) pra SAIR \n"; cin >> N; } system("PAUSE"); } Exemplo 4: #include <iostream> using namespace std; main( ) { int i ; char NOME[15]; cout<<"DIGITE UM NOME:\n"; cin>>NOME; If (NOME[ i ]== 'A') { cout<<"ACHEI \n"; cout<<"A LETRA ("<<'A'<<") Eh a "<<i+1<<"\xA7 LETRA"<<endl; } else cout<<"NaO ACHEI"; system("PAUSE"); } AULA 17 Prova substitutiva e/ou entrega dos resultados.