Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos pág. � PAGE �59� Algoritmos Simone Maria Viana simone_viana@yahoo.com.br 2006 ÍNDICE 6INTRODUÇÃO � 6LÓGICA � 6COMPUTADOR � 7PROGRAMA � 7LINGUAGENS DE PROGRAMAÇÃO � 7TÉCNICAS ATUAIS DE PROGRAMAÇÃO � 7AÇÃO � 7ESTADO � 7PROCESSO OU EVENTO � 7PADRÕES DE COMPORTAMENTO � 7EXERCÍCIO � 8CONCEITOS BÁSICOS � 8DEFINIÇÕES � 8COMO FAZER UM ALGORITMO � 8TESTE DE MESA � 8CLASSIFICAÇÃO DOS ALGORITMOS � 8DESCRIÇÃO NARRATIVA � 9FLUXOGRAMA � 9PSEUDOCÓDIGO ou PORTUGOL � 9SIMBOLOGIA BÁSICA PARA FLUXOGRAMA � 10TIPOS DE DADOS � 10VARIÁVEIS � 11CONSTANTES � 11IDENTIFICADORES � 11EXEMPLOS � 12EXERCÍCIOS � 13LINGUAGEM C/C++ � 13BIBLIOTECAS � 14ETAPAS DA IMPLEMENTAÇÃO � 14include � 14DIRETIVAS define e undef � 15EXEMPLO � 15Dev-C++ � 15LISTA DE RECURSOS � 16INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++ � 16ESTRUTURA SEQÜENCIAL � 16DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS � 16COMANDO DE ATRIBUIÇÃO EM ALGORITMOS � 16COMANDO DE ENTRADA EM ALGORITMOS � 16COMANDO DE SAÍDA EM ALGORITMOS � 16REQUERIMENTOS NECESSÁRIOS � 16TIPOS DE DADOS � 17ESTRUTURA SEQÜENCIAL EM C/C++ � 17DECLARAÇÃO DE VARIÁVEIS EM C/C++ � 17STRINGS � 18getche() � 18Exemplos � 18COMANDO DE ATRIBUIÇÃO EM C/C++ � 18COMANDOS DE ENTRADA EM C/C++ � 18cin � 19gets � 19scanf � 19COMANDOS DE SAÍDA EM C/C++ � 19cout � 19printf � 20puts � 20COMENTÁRIOS EM C/C++ � 20OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++ � 20Matemáticos � 20Relacionais � 21Matemáticas � 21Lógicos � 21EXEMPLO � 22EXERCÍCIOS � 24RECURSIVIDADE � 25ESTRUTURA CONDICIONAL (Controle de Fluxo) � 25ALGORITMOS � 25ESTRUTURA CONDICIONAL COMPOSTA � 25C/C++ � 25SIMPLES - IF � 26COMPOSTA – IF/ELSE � 26ESTRUTURA CASE - SWITCH � 27OPERADORES LÓGICOS � 27EXEMPLO � 28EXERCÍCIOS � 31ESTRUTURA DE REPETIÇÃO � 31ALGORITMOS � 31NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA) � 31NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE DE INÍCIO (ESTRUTURA ENQUANTO) � 31NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE NO FINAL (ESTRUTURA REPITA) � 32C/C++ � 32for � 33break � 33continue � 33while � 33do-while � 34EXEMPLOS � 34EXERCÍCIOS � 37VETORES � 37ALGORITMOS � 37DECLARAÇÃO DO VETOR � 37ATRIBUINDO VALORES AO VETOR � 37CARREGANDO UM VETOR � 37C/C++ � 37DECLARAÇÃO DO VETOR � 37ATRIBUINDO VALORES AO VETOR � 38CARREGANDO UM VETOR � 38IMPRIMINDO UM VETOR � 38EXEMPLO � 40EXERCÍCIOS � 42MATRIZ � 42DEFINIÇÃO � 42DECLARAÇÃO DE MATRIZ � 42EXEMPLO DE MATRIZ � 42ATRIBUINDO VALORES À MATRIZ � 42CARREGANDO UMA MATRIZ � 43EXIBINDO OS ELEMENTOS DE UMA MATRIZ � 43C/C++ � 43DECLARAÇÃO DE MATRIZ � 43ATRIBUINDO VALORES � 44EXIBINDO ELEMENTOS DA MATRIZ � 44EXEMPLOS � 46EXERCÍCIOS � 47MANIPULANDO CARACTERES EM C/C++ � 47FUNÇÃO strcpy() � 47FUNÇÃO strcat() � 47FUNÇÃO strlen() � 48FUNÇÃO strchr() � 48FUNÇÃO strstr() � 48FUNÇÃO strcmp() � 48EXERCÍCIO � 49REGISTROS (Estruturas) � 49DECLARAÇÃO - ALGORITMOS � 49DECLARAÇÃO DE REGISTROS EM C/C++ � 49DECLARAÇÃO DE VARIÁVEIS DO TIPO REGISTRO EM C/C++ � 49ACESSO A MEMBROS DE ESTRUTURAS � 50EXEMPLOS � 50EXERCÍCIOS � 52ARQUIVOS � 52DECLARAÇÃO EM C/C++ � 52COMANDOS DE ARQUIVOS EM C/C++ � 52fopen() � 53fclose() � 53ferror() � 53fputc() � 53fgetc() � 53fputs() � 53fgets() � 53fwrite() � 53fread() � 53fseek() � 54feof() � 54rewind() � 54remove() � 54fflush() � 54exit() � 54LENDO E ESCREVENDO CARACTER EM ARQUIVOS EM C/C++ � 54putc � 55getc � 55feof � 55FLUXOS PADRÃO � 55fprintf � 55fscanf � 56EXEMPLOS � 57EXERCÍCIOS � 58SUB-ROTINAS � 58ALGORITMO: � 58SUB-ROTINAS (FUNÇÕES) EM C/C++ � 58COMANDO RETURN � 59EXERCÍCIOS � �� INTRODUÇÃO Você sabe usar o raciocínio lógico? Isto depende de vários fatores: calma, conhecimento, vivência, versatilidade, experiência, criatividade, ponderação, responsabilidade etc. Para utilizar a lógica é preciso ter domínio do pensamento e saber pensar. Então, o que é raciocínio lógico? Conjunto de estudos que visa determinar os processos intelectuais que são as condições gerais do conhecimento verdadeiro. Ou ainda: Seqüências coerentes, regulares e necessárias dos acontecimentos, das coisas ou dos fatos, até mesmo, que é à maneira do raciocínio particular que cabe a um indivíduo ou a um grupo. Mas os profissionais de Tecnologia de Informação acreditam que seja um esquema sistemático que define as interações de sinais no equipamento automático do processamento de dados ou computador científico com o critério e princípios formais de raciocínio e pensamento. LÓGICA Concluímos que lógica é a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio. Usar a lógica é um fator importante na área de tecnologia de informação, pois os profissionais no dia-a-dia solucionam problemas e atingem os objetivos apresentados por seus usuários com eficiência e eficácia, utilizando recursos computacionais e/ou automatizados. Porém, ninguém ensina ninguém a pensar, pois todas as pessoas “normais” possuem esse dom. COMPUTADOR Sua finalidade é auxiliar em qualquer coisa que lhe seja solicitada. E para isso, recebe, manipula e armazenar dados. Sua finalidade e realizar o processamento dos dados. Formado por: ENTRADA: dados de entrada do algoritmo; PROCESSAMENTO: procedimentos realizados para atingir um resultado; SAÍDA: dados já processados. PROGRAMA Um programa é um algoritmo escrito em uma linguagem computacional. LINGUAGENS DE PROGRAMAÇÃO São Softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais. Existem várias linguagens de programação, cada uma com suas características próprias. Exemplos: Pascal, Clipper, C, Visual Basic, Delphi e etc. TÉCNICAS ATUAIS DE PROGRAMAÇÃO Programação Seqüencial; Programação Estruturada; Programação Orientada a Eventos e Objetos. AÇÃO Evento que ocorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido. Exemplos: Caminhar até a próxima esquina. Colocar um livro em cima de uma mesa. Atribuir o valor 3.14 a uma variável. Estamos interessados primeiramente nos efeitos que as ações produzem. Ações de efeito imprevisíveis não nos interessam. Algoritmos determinísticos. ESTADO Conjunto de propriedades do objeto que são relevantes para nós na situação desejada. Exemplos: Batatas com casca ou descascadas. Valor de uma variável em um certo instante de execução. PROCESSO OU EVENTO Uma seqüência temporal de ações. Exemplos: Trazer a cesta com batatas; Pegar a panela do armário; Descascar as batatas; Guardar a cesta; PADRÕES DE COMPORTAMENTO Vamos supor que no dia seguinte a um evento, alguém o repita. Podemos dizer que temos o mesmo evento? Não, pois ocorreram em MOMENTOS DIFERENTES. O que então, eles têm em comum? O mesmo PADRÃO DE COMPORTAMENTO. EXERCÍCIO 1. Qual é o padrão de comportamento utilizado para gerar essa seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 � CONCEITOS BÁSICOS DEFINIÇÕES Algoritmo é uma seqüência de passos que visa atingir um objetivo bem definido (FORBELLONE, 1999). Algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa (ASCENCIO, 1999). Algoritmo é uma seqüência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância (SALVETTI, 1999). Algoritmo são regras formais para a obtenção de um resultado, ou a solução de um problema, englobando fórmulas de expressões aritméticas (MANZANO, 1997). Concluímos que, no nosso dia-a-dia, executamos vários algoritmos como: fazer um café da manhã, trocar a lâmpada, ir à faculdade etc. COMO FAZER UM ALGORITMO Precisamos ler atentamente o enunciado, definir os dados de entrada�, o processamento� e osdados de saída�, utilizar um dos tipos de algoritmo e testar através de simulações. TESTE DE MESA Seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Exemplo: Nota da Prova 1 Nota da Prova 2 Nota da Prova 3 Nota da Prova 4 Utilize a tabela abaixo: PROVA1 PROVA2 PROVA3 PROVA4 MÉDIA CLASSIFICAÇÃO DOS ALGORITMOS DESCRIÇÃO NARRATIVA Após analisar o enunciado do problema o mesmo é escrito, utilizando uma linguagem natural para descrever os passos para solucionar o problema. VANTAGEM: não é necessário aprender nenhum conceito. DESVANTAGEM: como utiliza uma linguagem natural pode haver várias interpretações. DIAGRAMA DE BLOCOS Também chamado de diagrama de fluxo usado na programação com o objetivo de descrever o método e a seqüência do processo dos planos num computador. Após analisar o enunciado do problema o mesmo é escrito utilizando gráficos predefinidos para descrever os passos para solucionar o problema. VANTAGEM: o entendimento é mais padronizado. DESVANTAGEM: é necessário conhecimento da simbologia. FLUXOGRAMA Usada por analistas de sistemas tem a finalidade de descrever o fluxo, especificando os suportes usados para os dados e as informações. PSEUDOCÓDIGO ou PORTUGOL Após analisar o enunciado do problema o mesmo é escrito com regras predefinidas para descrever os passos para solucionar o problema. VANTAGEM: a passagem do algoritmo para uma linguagem de programação é praticamente imediata. DESVANTAGEM: aprender as regras do pseudocódigo. SIMBOLOGIA BÁSICA PARA DIAGRAMA DE BLOCOS Símbolo Descrição Terminal – símbolo utilizado como ponto de início/fim de um fluxograma. Seta de fluxo de dados – permite indicar o sentido do fluxo de dados. Conecta símbolos e blocos existentes. Processamento – símbolo ou bloco que se utiliza para indicar cálculos a serem efetuados, atribuições de valores ou qualquer manipulação de dados. Entrada de dados/Operação Manual – lê os dados necessários ao programa forma de linha sem intervenção de dispositivos eletrônicos. Entrada e saída de dados – símbolo em função de dispositivo qualquer de entrada ou saída de dados. Saída de dados em vídeo – exibe os dados no monitor. Saída de dados na impressora – dados serão impressos. Decisão – possibilita desvios de acordo com a comparação. Conector - particiona o diagrama. É colocado uma letra ou número dentro do símbolo de conexão. Conector – indica que o fluxograma continua em outra página. Disco magnético – armazenamento de dados. Teclado – informações recebidas ou fornecidas por um computador. Cartão Perfurado. SHAPE \* MERGEFORMAT ��� Preparação – grupo de operações não incluídas no fluxograma, bem como na elaboração de uma chave que modificará a execução de um programa. Fita magnética – armazenamento de dados. Tambor magnético – armazenamento de dados. Disquete – armazenamento de dados. TIPOS DE DADOS Todos os dados possuem um tipo que pode ser classificado como: NUMÉRICO Divididos em dois grupos: inteiros e reais. INTEIROS: podem ser positivos ou negativos e não possuem parte decimal. Quando armazenado na memória, ocupa 2 bytes por isso temos 28 x 28 = 216 = 65.536 possibilidades de representação dos números inteiros. A faixa de valores varia de – 32.767 à 32.768. Exemplos: -15, 9, 0, -357, 2500. REAIS: podem ser positivos ou negativos e possuem parte decimal. Esse tipo de dado, quando armazenado na memória do computador, ocupa 4 bytes, por isso temos 28 x 28 x 28x 28 = 232 = possibilidades de representação dos números reais. A faixa de valores é maior tendo de 6 a 11 dígitos com sinal. Exemplos: 23,45, 9541,89, -78,98, -852,0. Os números reais seguem a notação inglesa onde a parte decimal é separada da parte inteira por um ponto. LÓGICO Também conhecidos como booleanos� e assume verdadeiro ou falso, ocupando somente 1 byte, pois possui somente duas possibilidades. LITERAL ou CARACTERE Formados por um único caractere ou por vários. Podem ser letras, números� e caracteres especiais: $, @, #,* e ?. Na memória, ocupa 1 byte que corresponde a um caractere. Exemplos: ‘aluno’, ‘951’, ‘@ informática’. VARIÁVEIS Os algoritmos recebem dados que serão processados, para isso, armazena os dados na memória. Os computadores trabalham no sistema numérico do tipo binário� e tudo que há nele (letra, número e caracteres especiais), é formado para este sistema numérico e cada dígito binário ocupa uma parte da memória chamada de bytes� e acessado por um endereço. Todos os caracteres possuem um correspondente da tabela ASCII que é transformado em binário pelo método da divisão. Então, variável representa uma posição de memória, possuindo nome e tipo, com conteúdo variando ao longo do tempo, durante a execução de um programa. Ela pode assumir diversos valores, mas somente um valor por vez. CONSTANTES É um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. Exemplo: NOTA = 7; IDENTIFICADORES Nomes dos programas, das variáveis, das constantes, das rotinas etc. Como: Podemos utilizar números, letras e o caractere sublinhado (_); O primeiro caractere só pode ser uma letra; Não são permitidos caracteres especiais e espaço em branco; Não é permitido usar palavras reservadas�. Exemplos: A, NOTA1, NOME, ENDERECO, X10. EXEMPLOS Faça um algoritmo que exiba o resultado da multiplicação de dois números. DESCRIÇÃO NARRATIVA Passo 1 – Receber dois números que serão multiplicados. Passo 2 – Multiplicar os dois números. Passo 3 – Exibir o resultado. FLUXOGRAMA PSEUDOCÓDICO ALGORITMO DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite dois números” LEIA N1, N2 M ( N1 * N2 ESCREVA “Multiplicação = ” , M FIM_ALGORITMO. EXERCÍCIOS Crie um algoritmo para sacar dinheiro no banco 24 horas. Crie um algoritmo para assistir um filme no cinema. Crie um algoritmo de um assunto escolhido por você. Diferencie variável de constante e dê um exemplo de cada. Quais são os tipos de dados e dê um exemplo de cada um. Como estão classificados os algoritmos? Quais são as vantagens e desvantagens do pseudocódigo? Quais são as vantagens e desvantagens da descrição narrativa? Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre com o nome e exiba. Crie um algoritmo (pseudocódigo, descrição narrativa e fluxograma) que entre com quatro notas bimestrais e exiba a média aritmética. Faça um teste de mesa de acordo com o fluxograma abaixo: � LINGUAGEM C/C++ Em 1970, Dennis Ritchie inventou a linguagem C e foi o primeiro a implementá-la em um sistema operacional UNIX. É o resultado de um processo evolutivo de linguagens. Durante anos, o padrão da linguagem C foi o fornecido com a versão 5 do sistema operacional UNIX. Com os microcomputadores sendo popularizados, vários outros C’s foram criados e para resolver este problema, o ANSI�, em 1983 estabeleceu um padrão para todas as implementações da linguagem C. A C++ é uma extensão da linguagem C e as instruções desta, são um subconjunto do C++ e sua sintaxe é praticamente a mesma, somente acrescentando comandos para dar suporte à programação orientada a objetos. A linguagem C/C++ é “case-sensitive” ou seja, faz distinção entre maiúsculas e minúsculas, portanto, todos os seus comandos são escritos em letras minúsculas e todos os comandos são finalizados com ponto-e-vírgula (;). Todos os programas em C têm que ter uma (e somente uma) função main (principal), pois é esta função (em C só existem funções) que será chamada quando o programa for executado.A primeira etapa da implementação consiste em escrever o algoritmo estudado na etapa anterior numa linguagem de programação, por exemplo a linguagem C. Para essa tarefa utilizamos um editor de textos disponível no compilador da linguagem C. O texto escrito é chamado de arquivo ou programa fonte. A segunda etapa, a compilação, é realizada para traduzir programas escritos em linguagens de programação tal como C, em instruções que podem ser executadas pela CPU do computador. O software utilizado é chamado de compilador. A saída produzida pelo compilador é denominada arquivo-objeto. O arquivo objeto deve ser processado pelo linker antes de ser executado. O linker toma como entrada arquivos objeto e rotinas de biblioteca e liga-os em um único arquivo chamado arquivo executável. Esse arquivo pode ser diretamente executado pelo computador. BIBLIOTECAS Conjunto padrão de funções que realizam as tarefas necessárias mais comuns, como por exemplo escrever no vídeo (printf), ler um caractere do teclado (getch), entre outras. O padrão ANSI C (American National Standards Institute) especifica o conjunto mínimo de funções que estará contido na biblioteca. No entanto seu compilador provavelmente conterá outras funções que podem não estar incluída em um compilador de outro fabricante. ETAPAS DA IMPLEMENTAÇÃO include Informa ao compilador que deve incluir no momento da compilação o arquivo especificado. Sintaxe: #include <biblioteca> ou #include “biblioteca” (essa última deve informar o caminho que deseja buscar o arquivo) Como exemplo, temos as seguintes bibliotecas: Funções de entrada e saída ( stdio.h; Funções padrão ( stdlib.h; Funções matemáticas ( math.h; Funções do sistema ( system.h; Funções de string ( string.h DIRETIVAS define e undef #define Informa ao compilador para que toda vez que ele encontrar o nome do macro no programa a ser compilado, ele deve substituí-lo pela seqüência de caracteres fornecida. Sintaxe: #define nome_macro seqüência_caracteres Exemplo: #include <stdio.h> #define PI 3.1416 #define VERSAO "2.02" int main() { printf("Programa versão %s ", VERSAO); printf("O numero pi vale: %f ", PI); getch(); } #undef Apaga a macro informada da tabela interna que armazena os macros. O compilador passa a partir deste ponto a não conhecer mais este macro. Sintaxe: #undef nome_macro EXEMPLO #include <stdio.h> /* exemplo */ int main() { printf(“Bem vindo ao curso de Algoritmos!\n”); return(0); } Analisando o programa temos: #include <stdio.h> informa ao compilador que deve incluir o arquivo-cabeçalho informado, onde existem declarações de funções úteis para entrada e saída de dados (std = Standard (padrão) e io =Input/Output (entrada/saída); /* Exemplo */ linha de comentário; int main() todos os programas têm essa função que será chamada quando for executado, precisa ter um par parêntese , seu conteúdo é delimitado por chaves {}; int indica que retorna um inteiro. return(0) indica o número inteiro que está sendo retornado pela função (0). Dev-C++ Ambiente integrado de desenvolvimento para as linguagens C e C++. Ele usa a implementação Mingw do GCC (GNU Compiler Collection) como seu compilador. Foi desenvolvido por Colin Laplace, Mike Berg e Hongli Lai e é "Free Software" (sob GNU General Public License). Isso significa, entre outras coisas, que ele pode ser distribuído e copiado à vontade. O programa cria executáveis nativas no Win32, console ou GUI. Dev-C++ também pode ser usado juntamente com Cygwin. Dev-C++ é gratuito e de código aberto e é totalmente escrito em Delphi, que ironia não? Por ser um trabalho em constante desenvolvimento, as versões disponíveis no site Bloodshed Dev-C++ mudam constantemente. O compilador que é usado – o gcc é capaz de identificar muitos erros de sintaxe nos programas. (menu EXECUTAR – COMPILAR). Os arquivos devem ser salvos com extensão .c (c sources files). LISTA DE RECURSOS Suporte a compiladores baseados em GCC. Depuração integrada (usando GDB). Navegador de classes. Recurso de completar códigos. Navegador de depuração de variáveis. Gerenciador de Projetos. Editor com destaque de sintaxe personalizável. Suporte a modelos para criação dos seus próprios projetos. Edição e compilação de arquivos de recursos. Gerenciador de Ferramentas. Suporte a impressão. Facilidades de encontrar e substituir. Gerenciador de pacotes para facilitar a instalação e adição de bibliotecas. Suporte CVS. Lista de coisas a fazer. Janela de CPU. INSTALAÇÃO E CONFIGURAÇÃO DO DEV-C++ Baixe o arquivo de instalação devcpp-4.9.9.2_setup.exe [9326468 bytes ou 9108 kb ou 8.9M] para uma pasta temporária. Esse arquivo pode ser removido depois da instalação. Para começar a instalação, basta clicar (duas vezes) no nome do arquivo usando o "Windows Explorer" e seguir os passos, escolha o idioma Portuguese(Brasil) e selecionar o item “No, I prefer to use Dev C++ without it”. Escolha o menu FERRAMENTAS ( OPÇÕES DO COMPILADOR e em ADICIONAR OS SEGUINTES COMANDOS QUANDO CHAMAR O COMPILADOR, digite –Wall –ansi-O2. ESTRUTURA SEQÜENCIAL ALGORITMO DECLARE Bloco de comandos FIM_ALGORITMO. DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS São declaradas após a palavra DECLARE e os tipos mais usados são o numérico, literal e lógico. Exemplo: X NUMERICO; COMANDO DE ATRIBUIÇÃO EM ALGORITMOS Atribui valores ou operações a variáveis (( ). Exemplo: X ( 4. COMANDO DE ENTRADA EM ALGORITMOS Recebe dados digitados pelo usuário e armazenados em variáveis (LEIA). Exemplo: LEIA (X). COMANDO DE SAÍDA EM ALGORITMOS Exibe dados no monitor ou na impressora (ESCREVA). Exemplo: ESCREVA X. ESCREVA “Conteúdo de X = “ , X REQUERIMENTOS NECESSÁRIOS Arquivo MSVCRT.DLL (vem com o Windows 95 OSR 2 ou superior). TIPOS DE DADOS O C/C++ possui cinco tipos: int, float, double, void e char, com base temos: TIPO VALORES char -127 a 127 Unsigned char 0 a 255 signed char -127 a 127 Int -32.767 a 32.767 Unsigned int 0 a 65.535 Signed int -32.767 a 32.767 Short int -32.767 a 32.767 Unsigned Short Int 0 a 65,535 Signed Short Int -32.767 a 32.767 Long Int -2.147.483.647 a 2.147.483.647 Unsigned Long Int 0 a 4.294.967.295 Signed Long Int -2.147.483.647 a 2.147.483.647 Float 3.4E – 38 a 3.4E + 38 Double 1.7E – 308 a 1.7E + 308 Long double 3.4E – 4.932 a 1.1E + 4.932 Obs.: de acordo com a versão do compilador a faixa de valores pode variar. A faixa acima está de acordo com o padrão ANSI (valor mínimo). ESTRUTURA SEQÜENCIAL EM C/C++ #include <nome da biblioteca> void main() { bloco de comandos } BIBLIOTECAS são arquivos contendo várias funções que podem ser incorporadas aos programas escritos em C/C++. #include faz com que o texto contido dentro da biblioteca seja inserido no programa. Exemplo: iostream.h e conio.h são bibliotecas utilizadas em comandos de entrada e saída. DECLARAÇÃO DE VARIÁVEIS EM C/C++ São declaradas após a especificação do seu tipo. Os tipos de dados são: int – números inteiros; float – números reais; char – um caractere. Não existe o tipo de dados booleano (que assume verdadeiro ou falso), pois qualquer valor diferente de 0 como sendo verdadeiro. Não existe um tipo para guardar uma seqüência de caracteres (string). Quando necessário utilizar um vetor contendo vários elementos do tipo char. Exemplos: float x; char NOME[40]; char SEXO; STRINGS String é um vetor de caracteres terminado com um caractere nulo. O nulo é um caractere com valor inteiro igual a zero(código ASCII), podendo ser escrito assim ‘\0’. Sintaxe: char nome_string[tamanho]; Declara um vetor de caracteres(string) com número de posições (tamanho), sempre tendo um caractere nulo reservado. Para ler uma string fornecida pelo usuário usamos a função gets(): #include <stdio.h>int main() { char string[100]; printf ("Digite uma string: "); gets(string); printf("\n\nFoi digitado: %s",string); getch(); } getche() Usado para entrada de apenas um caracter pelo teclado e exibição na tela. Exemplo: #include <stdio.h> int main(void) { int resposta = 0; puts (" MENU "); puts (""); puts ("1. Editar"); puts ("2. Ler"); puts ("3. Gravar"); puts (""); puts ("Resposta "); resposta = getche(); getch(); } OBS.: quando queremos ler um resultado, usamos as funções (encontradas na biblioteca conio.h) getch() e getche(), e ambas retornam o caractere pressionado, porém getche() imprime o caractere na tela antes de retorná-lo e getch() apenas retorna o caractere pressionado sem imprimi-lo na tela. Elas não fazem parte do padrão ANSI e podem ser substituídas pela função scanf() sem as mesmas funcionalidades. Exemplos 1) Podemos usar o tipo char com números inteiros, que, quando colocado %d representa o código ASCII e quando colocado %c surge a letra propriamente dita. #include <stdio.h> int main() { char Ch; Ch = ‘D’; printf (“%d”, Ch); /* Imprime o caractere como inteiro */ return(0); } COMANDO DE ATRIBUIÇÃO EM C/C++ A atribuição em C/C++ é feita com o sinal de igualdade (=). Os caracteres são apresentados entre apóstrofos (‘) e a cadeira de caracteres entre aspas duplas (“). Exemplo: x = 6; sexo = ‘M’; COMANDOS DE ENTRADA EM C/C++ Como já visto anteriormente, recebe dados digitados pelo usuário que são armazenados em variáveis, e, em C/C++ usamos os seguintes comandos: cin Armazena um valor digitado a uma variável. Exemplo: cin >> y; Os valores são armazenados até que seja encontrado o primeiro espaço em branco (os posteriores serão desprezados). gets Um ou vários caracteres digitados a uma variável. Exemplo: gets(NOME); Utilizamos quando temos uma cadeira de caracteres contendo espaço em branco. scanf Armazena um valor digitado a variável. Exemplo: scanf(&Y); Obs.: & na frente da variável indica o seu endereço. Tanto o comando gets quanto o scanf armazena TODA a cadeia de caracteres até ser teclado o [ENTER]. Exemplo: #include <stdio.h> int main() { int A; printf("Entre com valor para A: "); scanf("%d", &A); printf("O valor digitado foi %d", A); getch(); } COMANDOS DE SAÍDA EM C/C++ Como também já foi dito, é usado para exibir os dados (tanto na tela como na impressora) e são usados os seguintes comandos: cout Exibe o valor que está armazenado na variável. Exemplo: cout << Y; cout << “Conteúdo de Y = “ << Y; printf Exibe o número inteiro ou real armazenado em uma variável. Sintaxe: printf(“%d”,Y); (número inteiro) printf(“%f”, Y); (número real). Argumentos Entradas que a função recebe. É através dos argumentos que passamos parâmetros para a função. O primeiro argumento é uma string (seqüência de caracteres) entre aspas, que pode ou não conter comando de formato (representado pelo % na frente da letra): Exemplo: printf(“Conteúdo: %d”, Y); printf(“%7.8f”, Y); puts Exibe somente textos. Sintaxe: puts(char *string); Exemplo: #include <stdio.h> void main() { puts("Exemplo de utilizacao"); puts("da funcao"); puts("puts..."); getch(); } COMENTÁRIOS EM C/C++ São textos que servem para documentar o programa e totalmente ignorados pelo compilador. Podem ocupar uma (//) ou várias linhas (/* ..... */) inserindo estes símbolos na frente ou entre os textos comentados. Exemplos: // comentário /* comentário1 */ OPERADORES E FUNÇÕES PREDEFINIDAS EM C/C++ Possui operadores e funções predefinidas destinadas a cálculos matemáticos e à manipulação de caracteres. Matemáticos OPERADOR EXEMPLO EXPLICAÇÃO + a + b Soma o conteúdo de a com b. - a – b Subtrai o conteúdo de a pelo valor de b. * a * b Multiplica o conteúdo de a pelo valor b. / a / b Divide o valor de a pelo valor de b. % a % b Resto da divisão de a por b. Somente usado em valores inteiros. ++ a++ Aumenta o conteúdo de a em um valor. -- a-- Diminui o conteúdo de a em um valor. += a += b a = a + b -= a -= b a = a – b *= a *= b a = a * b /= a /= b a = a / b %= a %= b a= a % b ^ a ^b a exponenciação em b. Os +=, -=, *=, /= e %= são chamados de operadores matemáticos de atribuição representa de uma maneira sintética uma operação aritmética(+, -, /, *, %) e posteriormente uma de atribuição (=). Relacionais OPERADOR EXEMPLO EXPLICAÇÃO == a == b O conteúdo de a é igual ao conteúdo de b. != a != b O conteúdo de a é diferente do conteúdo de b. <= a <= b O conteúdo de a é menor ou igual ao conteúdo de b. >= a >= b O conteúdo de a é maior ou igual ao conteúdo de b. < a < b O conteúdo de a é menor que o conteúdo de b. > a > b O conteúdo de a é maior que o conteúdo de b. Matemáticas FUNÇÃO SINTAXE EXPLICAÇÃO ceil ceil(a) ceil(3.2) fica 4 Arredonda um número real para cima. cos cos(a) Calcula o cosseno de a (radianos). exp exp(a) Obtém o logaritmo natural elevado a potência de a. fabs fabs(a) Valor absoluto de a. floor floor(a) floor(3.2) é 3 Arredonda um número real para baixo. log log(a) Logaritmo natural de a. log10 log10(a) Logaritmo de base 10 de a. modf modf(a, b) Decompõe um determinado número real em duas partes: a (parte fracionária) e b (parte inteira). pow pow(a, b) Potência de a elevado a b. sin sen(a) Calcula seno de a (radianos). sqrt sqrt(a) Calcula a raiz quadrada de a. tan tan(a) Calcula a tangente de a (radianos). Lógicos Permitem que mais de uma condição seja testada em uma única expressão, ou seja, pode-se fazer mais de uma comparação (teste) ao mesmo tempo. Temos: NÃO, E, OU e XOR (lê-se OU EXCLUSIVO), apresentados em ordem de prioridade, ou seja, se na mesma expressão tivermos o operador OU e depois o operador NÃO, primeiro será executado o NÃO e depois o OU. Operadores: AND (E) ( && OR (OU) ( || NOT (NÃO) ( ! XOR (OU EXCLUSIVO) ( ^ TABELA DA VERDADE A B A e B A ou B não A A xou B F F F F V F F V F V V V V F F V F V V V V V F F EXEMPLO Faça um algoritmo que calcule em graus Celsius e apresentá-la convertida em graus Fahrenheit. A fórmula de conversão é F ( (9 * C + 160)/5 (F é em Fahrenheit e C em Celsius). ALGORITMO DECLARE C, F : real LEIA C F ( ( 9 * C + 160)/ 5 ESCREVA F FIM_ALGORITMO. #include <stdio.h> main() { int C, F; printf("Entre com a temperatura em graus Celsius: "); scanf("%d",&C); F = ((9 * C + 160)) /5; printf("Temperatura em Fahrenheit = %d", F); getch(); } EXERCÍCIOS Resolva as expressões abaixo de acordo com os tipos e valores das variáveis. int a = 3, char carac = ‘A’ a++ _________________________________________ ++a _________________________________________ a += 10 _________________________________________ a = a++ * 10 ______________________________________ a = ++a * 10 ______________________________________ carac++ _________________________________________ Encontre o valor de A para cada passo a seguir: #include <stdio.h> Int main(void) { int A = 0; /* -----------CALCULO------------ Valor A /* A++; ______________________________________ A +=100; ______________________________________ A *= 2 ; ______________________________________ A = --A – 200; ______________________________________ A = !A ; ______________________________________ A = A++ + ++A; ______________________________________A = A; ______________________________________ A = (A > 3); ______________________________________ A = A++ + A++ + A++; ______________________________________ A = ++A + ++A + ++A; ______________________________________ } O que faz o seguinte programa? #include <stdio.h> int main() { int x; scanf(“%d”, &x); printf(“%d”, x); return(0); } Escreva um programa que leia um caractere digitado pelo usuário, imprima este caractere e o código ASCII correspondente. Faça um programa (pseudocódigo e C/C++) que receba quatro números inteiros, calcule e mostra a soma desses números. Faça um programa (pseudocódigo e C/C++) receba três notas, calcule e mostre a média aritmética entre elas. Faça um programa (pseudocódigo e C/C++) que receba três notas e seus respectivos pesos, calcule e exiba a média ponderada. Faça um programa (pseudocódigo e C/C++) que receba o salário de um funcionário, calcule e exiba o novo salário com um aumento de 25%. Faça um programa (pseudocódigo e C/C++) que receba o salário de um funcionário e o percentual de aumento, calcule e exiba o valor do aumento e o novo salário. Faça um programa (pseudocódigo e C/C++) que receba o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base. Faça um programa (pseudocódigo e C/C++) que receba o salário-base de um funcionário, calcule e mostre o seu salário a receber, sabendo-se que esse funcionário tem gratificação de R$ 50,00 e paga imposto de 10% sobre o salário-base. Faça um programa (pseudocódigo e C/C++) que receba o valor de um depósito e o valor da taxa de juros e calcule e exiba o valor do rendimento e o valor total depois do rendimento. Faça um programa que calcule e exiba a área de um triângulo (AREA = (BASE * ALTURA) / 2. Faça um programa que calcule e mostre a área de um círculo. (AREA = ∏R2). Faça um programa que receba um número positivo e maior que zero, calcule e exiba: a) número digitado ao quadrado; b) número digitado ao cubo; c) raiz quadrada do número digitado; d) raiz cúbica do número digitado. Faça um programa (pseudocódigo e C/C++) que receba dois números maiores que zero, calcule e mostre um elevado ao outro. Faça um programa (pseudocódigo e C/C++) que receba uma medida de pés, faça as conversões e exiba os resultados: a) polegadas�; b) jardas�; c) milhas�. Faça um programa (pseudocódigo e C/C++) que receba o ano de nascimento de uma pessoa e o ano atual, calcule e exiba: a) idade da pessoa; b) quantos anos essa pessoa terá em 2009. Faça um programa (pseudocódigo e C/C++) que receba o preço de fábrica de um veículo�, o percentual de lucro do distribuidor e o percentual de impostos. Calcule e exiba: a) valor correspondente ao lucro do distribuidor; b) valor correspondente aos impostos; c) preço final do veículo. Faça um programa (pseudocódigo e C/C++) que receba o número de horas trabalhadas e o valor do salário mínimo. Calcule e exiba o salário a receber e seguir as regras: a) hora trabalhada vale a metade do salário mínimo; b) salário bruto equivale ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada; c) imposto equivale a 3% do salário bruto; d) salário a receber equivale ao salário bruto menos o imposto. Um trabalhador recebeu seu salário e depositou em conta bancária. Emitiu dois cheques e agora deseja saber qual o saldo atual. Sabe-se que cada retirada bancária paga CPMF de 0,38% e o saldo inicial da conta está zerado. Porsidônio comprou um saco de ração com peso em quilos. Possui dois gatos para os quais fornece a quantidade de ração em gramas. Faça um programa (pseudocódigo e C/C++) que receba o peso do saco de ração e a quantidade de ração fornecida para cada gato. Calcule e exiba quanto restará de ração no saco após cinco dias. Cada degrau de uma escada tem n de altura. Faça um programa (pseudocódigo e C/C++) que receba essa altura e a altura que o usuário deseja alcançar subindo essa escada. Calcule e exiba quantos degraus o usuário deverá subir para atingir seu objetivo, sem se preocupar com a altura do usuário. Faça um programa (pseudocódigo e C/C++) que receba o custo de um espetáculo teatral e o preço do convívio desse espetáculo. Deve calcular e exibir a quantidade de convites que devem ser vendidos para que pelo menos o custo do espetáculo seja alcançado. RECURSIVIDADE Podemos fazer com que uma função chame a si própria, a isto, chamamos de função recursiva. Precisamos sempre, ter um critério de parada, pois este, determina quando a função deve parar de chamar a si mesma, impedindo que a função fique infinita. Exemplo: Crie uma função que calcule o fatorial de um número inteiro: #include <stdio.h> int fat(int n) { if (n) return n*fat(n-1); else return 1; } int main() { int n; printf("\n\nDigite um valor para n: "); scanf("%d", &n); printf("\nO fatorial de %d e %d", n, fat(n)); getch(); } Interpretando: Enquanto n não for igual a 0, a função fat chama a si mesma cada vez com um valor menor e, n=0 é o critério de parada da função. � ESTRUTURA CONDICIONAL (Controle de Fluxo) ALGORITMOS SE condição ENTÃO comando Se a condição for verdadeira o comando é executado. Essa condição será uma comparação que possui dois valores: verdadeiro ou falso. SE condição ENTÃO INICIO Comando1 Comando2 Comando3 FIM ESTRUTURA CONDICIONAL COMPOSTA SE condição ENTÃO INICIO comando1 comando2 FIM SENÃO INÍCIO comando3 comando4 FIM C/C++ SIMPLES - IF IF (condição) { comando1; comando2; } Se a condição for verdadeira o comando será executado. Quando há mais de um comando é obrigatório utilizar as chaves ({}). Ex.: Entre com um número e verifique se é igual, menor ou maior que 10. #include <stdio.h> int main() { int num; printf("Digite um numero: "); scanf("%d",&num); if (num>10) printf("\n\nNumero maior que 10"); if (num==10) { printf("\n\Acertou!\n"); printf("Numero igual a 10."); } if (num<10) printf("\n\nNumero menor que 10"); getch(); } COMPOSTA – IF/ELSE if (condição) { comando1; comando2; } else { comando3; comando4; } Se a condição for verdadeira o comando será executado, caso contrário (se for falso) será executado a segunda rotina. As condições devem estar entre parênteses. Exemplo: Criar um menu #include <stdio.h> void main() { char opcao; puts ("MENU"); puts (""); puts ("1. Incluir "); puts ("2. Excluir "); puts ("3. Alterar "); puts ("4. Sair "); printf("Entre com a opção: [ ]\b\b"); opcao = getche(); if (opcao == '1') printf ("\n INCLUSAO"); else if (opcao == '2') printf ("\n EXCLUSAO"); else if (opcao == '3') printf ("\n ALTERACAO"); else if (opcao == '4') printf ("\n SAIR"); else puts("\nEscolha opção correta"); getch(); } ESTRUTURA CASE - SWITCH switch (variável) { case valor1 : lista de comandos; break; case valor2: lista de comandos; break; ... default: lista de comandos; } O comando switch acima avalia o valor de uma variável para decidir qual case será executado. E cada case é associado a uma variável. O comando break é utilizado para impedir que sejam executados os comandos definidos nos cases seguintes. Quando o valor da variável não coincidir com aqueles especificados nos cases será executado em default. Exemplo: Criação de menus #include <stdio.h> void main() { char opcao; puts ("MENU"); puts (""); puts ("1. Incluir "); puts ("2. Excluir "); puts ("3. Alterar ");puts ("4. Sair "); printf("Entre com a opção: [ ]\b\b"); opcao = getche(); switch (opcao) { case '1' : printf("\nInclusao"); break; case '2' : printf("\nExclusao"); break; case '3' : printf("\nAlteracao"); break; case '4' : printf("\nSair"); break; default : puts("\nEscolha uma opcao correta"); break; } getch(); } OPERADORES LÓGICOS Podem ser: &&, || e ! significam respectivamente e, ou e não (conjunção, disjunção e negação). EXEMPLO Faça um programa que receba as quatro notas bimestrais de um aluno e imprima uma mensagem dizendo se está aprovado ou reprovado, se a média for maior ou igual a 4. Apresentar junto, a mensagem a média do aluno. ALGORITMO DECLARE bim1, bim2, bim3, bim4, media : real LEIA bim1, bim2, bim3, bim4 media ( (bim1 + bim2 + bim3 + bim4)/ 4 SE (media >= 5) ENTÃO ESCREVA “Aluno aprovado com média: ”, media SENÃO ESCREVA “Aluno reprovado com média: ”, media FIM_SE FIM_ALGORITMO. #include <stdio.h> int main() { int media, bim1, bim2,bim3, bim4; printf("Entre com as 4 notas bimestrais: "); scanf("%d",&bim1); scanf("%d",&bim2); scanf("%d",&bim3); scanf("%d",&bim4); media = (bim1 + bim2 + bim3 + bim4)/4; if (media >= 5) printf("Aluno aprovado com media %d", media); else printf("Aluno reprovado com media %d", media); getch(); } � EXERCÍCIOS A média final de um estudante é calculada com base em três notas atribuídas a um trabalho prático (peso 2), avaliação semestral (peso 3) e exame final (peso 5). A média das três notas é dada com base nos pesos. Faça um programa (pseudocódigo e C/C++) que receba as três notas, calcule, exiba a média ponderada e a conceito: MÉDIA PONDERADA CONCEITO 8,0 (( 10,0 A 7,0 (( 8,0 B 6,0 (( 7,0 C 5,0 (( 6,0 D 0,0 (( 5,0 E Faça um programa (pseudocódigo e C/C++) que receba três notas de um aluno, calcule e exiba a média aritmética de acordo com a tabela. Para alunos de exame calcule e exiba a nota que deverá ser tirada no exame para aprovação, considerando que a média no exame é 6,0. MÉDIA PONDERADA MENSAGEM 0,0 (( 3,0 Reprovado 3,0 (( 7,0 Exame 7,0 (( 10,0 Aprovado Faça um programa (pseudocódigo e C/C++) que receba dois números e mostre o maior. Faça um programa (pseudocódigo e C/C++) que receba três números e mostre em ordem crescente. Faça um programa (pseudocódigo e C/C++) que receba três números obrigatoriamente em ordem crescente um quarto número que não siga esta regra. Exiba os quatro números em ordem decrescente. Faça um programa (pseudocódigo e C/C++) que receba um número inteiro e verifique se esse número é par ou ímpar. Faça um programa (pseudocódigo e C/C++) que receba quatro valores: I, A, B e C, onde I é um valor inteiro positivo e os outros são valores reais. Escreva os números reais de acordo com a tabela abaixo VALOR DE I FORMA DE ESCREVER 1 A,B,C em ordem crescente 2 A,B,C em ordem decrescente 3 O maior fica entre os outros dois n’s. Faça um programa (pseudocódigo e C/C++) que exiba um menu de opções e receba a opção do usuário e os dados necessários para executar cada operação: MENU DE OPÇÕES 1. Somar dois números; 2. Raiz quadrada de um número; Digite a opção desejada. Faça um programa (pseudocódigo e C/C++) que exiba a data e a hora do sistema nos formatos: dia/mês/ano – mês por extenso e hora:minuto. Faça um programa (pseudocódigo e C/C++) que determine a data cronologicamente maior de duas datas fornecidas pelo usuário. Cada data deve ser fornecida por três valores inteiros, onde o primeiro representa o dia, o segundo o mês e o terceiro o ano. Faça um programa (pseudocódigo e C/C++) que receba a hora de início de um jogo e a hora final do jogo (cada hora é composta por duas variáveis inteiras: hora e minuto). Calcule e exiba a duração do jogo (horas e minutos) sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. Faça um programa (pseudocódigo e C/C++) que receba o código correspondente ao cargo de um funcionário e seu salário atual e exiba o cargo, o valor do aumento e o seu novo salário. Os cargos estão abaixo: CODIGO CARGO PERCENTUAL 1 Escriturário 50% 2 Secretário 35% 3 Caixa 20% 4 Gerente 10% 5 Diretor Não tem aumento Faça um programa (pseudocódigo e C/C++) que apresente o menu de opções a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários para executar a operação e exibir o resultado. Verifique a possibilidade de opção inválida e não se preocupe com restrições como salário negativo. MENU DE OPÇÕES: 1. Imposto 2. Novo salário 3. Classificação Digite a opção desejada. TEM TRÊS OPÇÕES SALÁRIO PERCENTUAL DO IMPOSTO Menor que R$ 500,00 5% De R$ 500,00 a R$ 850,00 10% Acima de R$ 850,00 15% SALÁRIO AUMENTO Maiores que R$ 1.500,00 R$ 25,00 De R$ 750,00 a R$ 1.500,00 (inclusive) R$ 50,00 De R$ 450,00 a R$ 750,00 R$ 75,00 Menores que R$ 450,00 R$ 100,00 SALÁRIO CLASSIFICAÇÃO Até R$ 700,00 (inclusive) Mal remunerado Maiores que R$ 700,00 Bem remunerado Faça um programa (pseudocódigo e C/C++) que receba o salário de um funcionário, calcule e exiba o novo salário desse funcionário com a bonificação e o auxílio-escola SALÁRIO BONIFICAÇÃO Até R$ 500,00 5% Entre R$ 500,01 e R$ 1.200,00 12% Acima de R$ 1.200,00 Sem bonificação SALÁRIO AUXILIO-ESCOLA Até R$ 600,00 R$ 150,00 Mais de R$ 600,00 R$ 100,00 Faça um programa (pseudocódigo e C/C++) que receba o valor do salário mínimo, o número de horas trabalhadas, o número de dependentes do funcionário e quantidade de horas extras trabalhadas. Calcule e exiba o salário a receber do funcionário de acordo com as regras: - valor da hora trabalhada é igual a 1/5 do salário mínimo; - salário do mês é igual ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada. Um supermercado deseja reajustar os preços de seus produtos usando o seguinte critério: o produto poderá ter seu preço elevado ou reduzido. Para alterar o preço o produto deve preencher pelo menos um dos requisitos a seguir: VENDA MÉDIA MENSAL PREÇO TOTAL %AUMENTO %DESCONTO < 500 < R$ 30,00 10 - >= 500 E < 1200 >= R$ 30,00 e < R$ 800 15 - >= 1200 >= R$ 80,00 - 20 Com três valores dados: A, B, e C, verifique se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se não formarem um triangulo deve escrever uma mensagem. OBS.: - comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados; - chama-se triângulo eqüilátero, o triângulo que tem três lados iguais. Faça um programa que receba a altura e o peso de uma pessoa. De acordo com a tabela abaixo e exiba a classificação da pessoa: ALTURA PESO ATÉ 60 Entre 60 a 90 Acima de 90 Menores que 1,20 A D G De 1,20 a 1,70 B E H Maiores que 1,70 C F I ESTRUTURA DE REPETIÇÃO ALGORITMOS NÚMERO DEFINIDO DE REPETIÇÕES (ESTRUTURA PARA) Utilizada quando sabemos o número de vezes em que um trecho do algoritmo deve ser repetido (incrementando de um em um automaticamente). PARA I ( valor inicial ATÉ valor final FAÇA INICIO comando1 comando2 comando3 FIM Exemplo: PARA I ( 1 ATÉ 10 FAÇA comando1 // será executado 10 vezes. NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE DE INÍCIO (ESTRUTURA ENQUANTO) Utilizada quando não se sabe o número de vezes em que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se sabe esse número. Há situações que o teste condicional no início da estrutura repetição resulta em valor falso na primeiracomparação sendo assim os comandos não são executados. ENQUANTO condição FAÇA INICIO comando1 comando2 FIM Exemplo: x ( 1 y ( 5 ENQUANTO x < y FAÇA INÍCIO x ( x + 2 y ( y + 1 FIM Simulação X Y 1 5 Iniciais 3 6 5 7 7 8 9 9 NÚMERO INDEFINIDO DE REPETIÇÕES E TESTE NO FINAL (ESTRUTURA REPITA) Utilizada quando não se sabe o número de vezes em que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se sabe esse número. A diferença entre ENQUANTO e REPITA é que na última os comandos serão repetidos pelo menos uma vez, já que a condição se encontra no final. REPITA Comandos ATÉ condição Os comandos são repetidos enquanto a condição for verdadeira. Exemplo: x ( 1 y ( 5 REPITA x ( x + 2 y ( y + 1 ATÉ x >= y Simulação X Y 1 5 Iniciais 3 6 5 7 7 8 9 9 C/C++ for Utilizada quando conhecemos o número de vezes que um trecho deverá ser repetido. Sintaxe: for (i=valor inicial; condição; incremento ou decremento de i) comando; É atribuído um valor inicial à variável i que controla o número de repetições. Depois uma expressão relacional que quando for falso, finaliza a repetição. Por último, altera o valor da variável i (incrementando ou decrementando). Exemplo1: for (a=1;a<=20;a++) printf("Digite um número %d", a); Exemplo prático: Lê um string e conta quantos caracteres desta string: #include <stdio.h> int main() { char string[100]; /* string ate 99 caracteres */ int i, cont; printf("\nDigite uma frase: "); gets(string); /* Le a string */ printf("\n\nFrase digitada: \n%s", string); cont = 0; for (i = 0; string[i] |= '\0'; i=i+1) { if (string[i] == 'c') /* se for a letra 'c' */ cont = cont + 1; /* incrementa contador */ } printf("\nNumero de caracteres c= %d", cont); getch(); } Exercício: Crie um programa que imprima o alfabeto de A até Z. break Utilizado para interrompe qualquer tipo de repetição. continue Permite que não se execute o restante do bloco, passando para o próximo. Não interrompe o loop apenas para para o próximo sem completar o atual. while Utilizada quando o número de repetição não é fixo. Os comandos serão repetidos até a condição assumir o valor falso. Quando o teste condicional ocorre no início, a possibilidade da repetição não ser executada, quando a condição for falsa. Sintaxe: WHILE (condição) { comando1; comando2; …………….. } Exemplo: soma todos números inteiros entre 1 e 1000 #include <stdio.h> main() { long i = 1000, soma = 0; while (i) soma += i--; printf("\nSoma encontrada foi %ld", soma); getch(); } do-while Utilizada quanto o número de repetições necessárias não é fixo. Os comandos serão repetidos até a condição assumir valor falso. Nesse tipo de estrutura o teste condicional ocorre no fim, garantindo a execução de pelo menos uma vez. Sintaxe: do { comandos; } while (condição); Exemplo: Some todos os números inteiros entre 1 e 100: #include <stdio.h> main() { long i = 1000, soma = 0; do soma += i--; while (i); printf("\nSoma encontrada foi %ld", soma); getch(); } EXEMPLOS Apresentar o total da soma dos cem primeiros números inteiros (1+2+3+4+5+6+7+…+97+98+100). ALGORITMO DECLARE soma, contador : inteiro soma ( 0 PARA contador de 1 até 100 passo 1 FAÇA soma ( soma + contador FIM_PARA FIM_ALGORITMO #include <stdio.h> int main(void) { int soma, contador; soma = 0; for (contador=1;contador<=100;contador++) { soma = soma + contador; } printf("%d", soma); getch(); } EXERCÍCIOS Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se que: a) esse funcionário foi contratado em 1995 com salário inicial de R$ 1.000,00; b) em 1996 recebeu aumento de 1,5% sobre seu salário inicial; c) a partir de 1997 (inclusive), os elementos salariais sempre corresponderam ao dobro do percentual do ano anterior. Faça um programa que determine o salário atual desse funcionário. Faça um programa que leia N e que indique quantos valores inteiros e positivos devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo o valor lido e o fatorial desse valor. Faça um programa que leia cinco pares de valores (a, b), todos inteiros e positivos, um de cada vez. Mostre os números inteiros pares de a até b (inclusive). Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Exiba o número do aluno mais alto e o número do aluno mais baixo junto com suas alturas. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados: a) código da cidade; b) número de veículos de passeio (1999); c) número de acidentes de trânsito com vítimas (1999). Deseja-se saber: a) maior e o menor índice de acidentes de trânsito e a que cidades pertencem; b) média de veículos nas cinco cidades unidas; c) média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio. Uma empresa possui dez funcionários com as seguintes características: código, número de horas trabalhadas no mês, turno de trabalho (matutino, vespertino ou noturno), categoria (operária ou gerente), valor da hora trabalhada. Sabendo-se que essa empresa deseja informatizar sua folha de pagamento, faça um programa que: a) Leia as informações dos funcionários, exceto o valor da hora trabalhada, não permitindo que sejam informados turnos nem categorias inexistentes. Trabalhar sempre com a digitação de letras maiúsculas; b) calcule o valor da hora trabalhada, conforme abaixo: CATEGORIA TURNO VALOR DA HORA TRABALHADA G N 18% do salário mínimo G M ou V 15% do salário mínimo O N 13% do salário mínimo O M ou V 10% do salário mínimo Adote o valor de R$ 350,00 para o salário mínimo. c) calcule o salário mínimo dos funcionários com base no valor da hora trabalhada e no número de horas trabalhadas. d) calcule o valor do auxílio-alimentação recebido por funcionário de acordo com o seu salário inicial, conforme a tabela a seguir: SALÁRIO INICIAL AUXILIO-ALIMENTAÇÃO Até R$ 300,00 20% do salário inicial Entre R$ 300,00 e R$ 600,00 15% do salário inicial Acima de R$ 600,00 5% do salário inicial uma empresa contratou 15 funcionários temporários. De acordo com o valor das vendas mensais, os funcionários adquirem pontos que determinarão seus salários ao final de cada mês. Sabemos que esses funcionários trabalharão nos meses de novembro a janeiro do ano subseqüente. Faça um programa que: a) leia as pontuações nos três meses de cada funcionário; b) calcule e exiba a pontuação geral de cada funcionário nos três meses; c) calcule e exiba a média das pontuações de cada funcionário nos três meses; d) determine e exiba a maior pontuação atingida entre todos os funcionários nos três meses. Faça um programa que monte os oito primeiros termos da seqüência de Fibonacci: 0-1-1-2-3-5-8-13-21-34-55-.... Faça um programa que receba duas notas de seis alunos, calcule e exiba: a) média aritmética das duas notas de cada aluno; b) mensagem de acordo com a tabela: MÉDIA ARITMÉTICA MENSAGEM Até 3,0 Reprovado Entre 3,0 e 7,0 Exame Acima de 7,0 Aprovado Faça um programa que calcule a soma dos primeiros 50 números pares. Esse programa não recebe valor do teclado. Os primeiros números são: 2, 4, 6,... Um campeonato de futebol existem cinco times e cada time possui onze jogadores. Faça um programa que receba a idade, o peso e a altura de cada um dosjogadores, calcule e exiba: - quantidade de jogadores com idade inferior a 18 anos; - média das idades dos jogadores de cada time; - média das alturas de todos os jogadores do campeonato; - percentagem de jogadores com mais de 80 quilos entre todos os jogadores do campeonato. Faça um programa que receba dois números, calcule e exiba: a) soma dos números pares desse intervalo de números, incluindo os números digitados; b) multiplicação dos números ímpares desse intervalo de números, incluindo os números digitados. Faça um programa que receba um número inteiro maior que 1 e verifique se o número fornecido é primo ou não. Exibir mensagem de número primo ou de número não primo. OBS. Número primo quando é divisível apenas pelo próprio número e por ele mesmo. Em uma fábrica trabalham homens e mulheres divididos em três classes: a) trabalhadores que fazem até 30 peças por mês – classe 1; b) trabalhadores que fazem de 31 a 35 peças por mês – classe 2; c) trabalhadores que fazem mais de 35 peças por mês – classe 3. A classe 1 recebe salário mínimo. A classe 2 recebe salário mínimo mais 3% do salário mínimo por peça, acima das 30 peças iniciais. A classe 3 recebe salário mínimo mais 5% do salário mínimo por peça, acima das 30 peças iniciais. Faça um programa que receba o número do operário, número de peças fabricadas no mês, o sexo do operário e que também calcule e mostre: - o número do operário e seu salário; - total da folha de pagamento da fábrica; - o número total de peças fabricadas no mês; - a média de peças fabricadas pelos homens; - a média de peças fabricadas pelas mulheres; - o número do operário ou operária de maior salário. A fábrica tem 15 operários. Foi feita uma pesquisa para determinar o índice de mortalidade infantil em um certo período. Faça um programa que: a) leia o número de crianças nascidas no período; b) o sexo (M ou F) e o tempo de vida para cada criança nascida. Calcule e exiba: a) percentagem de crianças do sexo feminino mortas no período; b) percentagem de crianças do sexo masculino mortas no período; c) percentagem de crianças que viveram 24 meses ou menos no período. Faça um programa que receba o valor de uma dívida e exiba uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e o valor da parcela. Os juros e a quantidade de parcelas seguem-se abaixo: QUANTIDADE DE PARCELAS % JUROS SOBRE O VALOR INICIAL DA DÍVIDA 1 0 3 10 6 15 9 20 12 25 Exemplos de saída do programa: VALOR DA DÍVIDA JUROS QTDE PARCELAS VALOR DA PARCELA R$ 1000,00 0 1 R$ 1000.00 R$ 1100,00 100 3 R$ 366,67 R$ 1150,00 150 6 R$ 191,67 Faça um programa que determine e exiba os cincos primeiros múltiplos de 3, considerando números maiores que 0. Faça um programa para calcular a área de um triângulo. Esse programa não pode permitir a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Faça um programa que receba o salário de um funcionário chamado Porsidonio. Sabe-se que o funcionário Godofredo tem um salário equivalente a um terço do salário de Porsidonio e ele aplicará seu salário integralmente na caderneta de poupança, que está rendendo 2% ao mês e Godofredo aplicará seu salário integralmente no fundo de renda fixa, que está rendendo 5% ao mês. Calcule e exiba a quantidade de meses necessários para que o valor pertencente a João iguale ou ultrapasse o valor pertencente a Carlos. VETORES ALGORITMOS Vetor ou array é uma variável composta homogênea unidimensional formada por uma seqüência de variáveis, todas do mesmo tipo, mesmo identificados (nome) e alocadas seqüencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura. DECLARAÇÃO DO VETOR Declare nome [tamanho] tipo Exemplo: DECLARE x[5] NUMÉRICO X 1 2 3 4 5 x[1] ATRIBUINDO VALORES AO VETOR X[1] ( 50 X[4] ( 9 X 50 9 1 2 3 4 5 CARREGANDO UM VETOR PARA i ( 1 ATÉ 5 FAÇA INÍCIO ESCREVA “Digite o ”, i, “º número” LEIA X[i] FIM C/C++ DECLARAÇÃO DO VETOR Os vetores são identificados pela existência de colchetes logo após o nome da variável no momento da declaração. Dentro dos colchetes deve-se colocar o número de posições do vetor. Exemplos: int ver[10]; Este vetor possui 10 posições iniciando com 0 e terminando em 9 em cada posição podemos armazenar números inteiros (int) char x[5]; Este, possui cinco posições, começando pela posição 0 e indo até a 4. ATRIBUINDO VALORES AO VETOR Exemplos: vet[0] = 1; /*Atribui valor 1 ao primeiro elemento do vetor.*/ strcpy(nome, “Genoveva”); Atribui o nome Genoveva ao vetor nome, declarado assim: char nome[6]. CARREGANDO UM VETOR Lê os dados do teclado, atribuindo a um vetor. for (i = 0; i <10;i++) cin >> vetor[i]; IMPRIMINDO UM VETOR for (i=0; i<10;i++) cout << vetor[i]; Exemplo: Receber cinco notas de aluno, calcular a média e exibir o resultado: #include <stdio.h> #include <conio.h> int main(void) { int i; float media; float nota[5]; for (i=0; i<5; i++) { printf("\nEntre com a %d nota: ", i+1); scanf("%f", ¬a[i]); } media = (nota[0]+nota[1]+nota[2]+nota[3]+nota[4])/5; printf ("\nMedia das notas: %3.1f", media); getch(); } EXEMPLO Criar um programa que efetue a leitura dos nomes de 20 pessoas e em seguida apresentar na mesma ordem em que foram informados. ALGORITMO DECLARE nome[20] : caractere i : inteiro PARA i de 1 até 20 passo 1 FAÇA LEIA nome[i] FIM_PARA PARA i de 1 até 20 passo 1 FAÇA ESCREVA nome[i] FIM_PARA FIM_ALGORITMO. #include <stdio.h> main() { char nome[20]; int i; for (i=0;i<=20;i++) printf("\nEntre com o %d nome: %s", i,nome[i]); scanf("%s",&nome[i]); for (i=0;i<=20;i++) printf("\Nome: %s", nome[i]); getch(); } Receber as notas de cinco alunos, calcular a média geral da turma e verificar quantos conseguiram ficar acima da média: ALGORITMO DECLARE soma, media, conta NUMERICO PARA x de 1 ATÉ 5 FAÇA INICIO LER nota[x] soma ( soma + nota[x] FIM FIM_PARA Media ( soma / 10 PARA n de 1 ATÉ 5 FAÇA SE nota[n] > media Então Conta ( conta + 1 FIM_SE FIM_PARA FIM_ALGORITMO. #include <stdio.h> #include <string.h> int main() { int x, conta; double nota[5]; double soma, media; soma = 0.0; media = 0.0; conta = 0; for (x=0;x<5;x++) { scanf("%lf",¬a[x]); soma = soma + nota[x]; } media = soma / x; for (x=0;x<5;x++) { if (nota[x] > media) conta = conta + 1; } printf("%lf %d\n", media); printf("%lf %d\n", conta); getch(); } 3) Exemplo de ordenação de valores (ascendente) utilizando o define. #include <stdio.h> #define tamanho 10 main() { int a[tamanho] = {2, 4, 5, 6, 7, 89, 10, 12, 11,50}; int i, pass, hold; printf ("Itens na ordem original\n"); for (i=0;i<=tamanho-1;i++) printf("%4d",a[i]); for (pass=1;pass<=tamanho-1;pass++) /* passadas */ for (i=0;i<=tamanho-2;i++) /*uma passada*/ if (a[i] > a[i+1]) /* comparação*/ { hold = a[i]; a[i] = a[i +1]; a[i + 1]= hold; } printf("\nItens de dados na ordem ascendente\n"); for (i=0;i<=tamanho-1;i++) printf("%4d",a[i]); printf("\n"); getch(); } EXERCÍCIOS Faça um programa que carregue um vetor de nove elementos numéricos inteiros, calcule e exiba os números primos e suas respectivas posições. Faça um programaque receba a quantidade de peças vendidas por vendedor e armazene essas quantidades em um vetor. Recebe também o preço da peça vendida de cada vendedor e armazene esses preços em outro vetor. Existem apenas 10 vendedores e cada vendedor pode vender apenas um tipo de peça, isto é, para cada vendedor existe apenas um preço. Calcule e exiba a quantidade total de peças vendidas por todos os vendedores e para cada vendedor calcule e exiba o valor total da venda (quantidade de peças * preço de peça). Faça um programa que carregue dois vetores de dez elementos numéricos cada um e exiba um vetor resultante da intercalação desses dois vetores. Vetor1 3 5 4 2 2 5 3 2 5 9 1 2 3 4 5 6 7 8 9 10 Vetor2 3 5 4 2 2 5 3 2 5 9 1 2 3 4 5 6 7 8 9 10 Faça um programa que carregue um vetor com oito números inteiros, calcule e exiba dois vetores resultantes. O primeiro vetor resultante deve contar os números positivos e o segundo, os números negativos. Cada vetor resultante vai ter no máximo oito posições, sendo que nem todas devem ser obrigatoriamente utilizadas. Faça um programa que carrega um vetor com 10 números inteiros. Calcule e exiba um vetor resultante ordenando de maneira decrescente. X 3 5 4 2 1 6 8 7 11 9 1 2 3 4 5 6 7 8 9 10 Ordenado 11 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 Faça um programa que no momento de carregar um vetor com oito números inteiros já o carregue de maneira ordenada crescente. Faça um programa que efetue reserva de passagens aéreas de uma certa companhia. O programa deverá ler informações sobre os vôos (número, origem e destino) juntamente com o número de lugares disponíveis para 12 aviões (um vetor para cada um desses dados). O programa deverá apresentar um menu com as seguintes opções: Consultar; Efetuar reserva; Sair Quando a opção escolhida for Consultar deverá ser disponibilizado mais um menu com as seguintes opções: Número de vôo; Origem; Destino. Quando a opção escolhida for EFETUAR RESERVA deverá ser perguntado o número do vôo no qual a pessoa deseja viajar. O programa deverá dar as seguintes respostas: Reserva confirmada – caso exista o vôo e lugar disponível dando baixa nos lugares disponíveis; Vôo lotado – caso não exista lugar disponível nesse vôo; Vôo inexistente – caso o código do vôo não exista. A opção Sair é a única que permite sair do programa. Faça um programa para corrigir provas de múltipla escolha. Cada prova tem dez questões e cada questão vale 1 ponto. O primeiro conjunto de dados a ser lido é o gabarito da prova. Os outros dados serão os números dos alunos e suas respectivas respostas. Existem 15 matriculados. Calcule e exiba: Para cada aluno seu número e sua nota; A percentagem de aprovação, sabendo-se que a nota mínima é 6,0. Faça um programa que receba a temperatura média de cada mês do ano e armazene-as em um vetor. Calcule e exiba a maior e a menor temperatura do ano em que mês elas ocorreram (exiba o mês por extenso: 1 – Janeiro, 2 – Fevereiro, ...). Faça um programa que carregue um vetor com os modelos de cinco carros (exemplos de modelos: FUSCA, GOL, VECTRA etc). Carregue um outro vetor com o consumo desses carros, isto é, quantos quilômetros cada um desses carros faz com um litro de combustível. Calcule e exiba: Modelo do carro mais econômico; Quantos litros de combustível cada um dos carros cadastrados consome para percorrer uma distância de 1000 quilômetros. Faça um programa que carregue um vetor com dez números inteiros. Calcule e exiba os números superiores a 50 e suas respectivas posições. Exiba a mensagem se não existir nenhum número nessa condição. Faça um programa que receba seis números inteiros, calcule e exiba a soma dos números pares e a quantidade dos números ímpares, exiba o relatório a seguir: Vetor 2 4 5 6 3 7 1 2 3 4 5 6 Relatório Os números pares são: Número 2 na posição 1 Número 4 na posição 2 Número 6 na posição 4 Soma dos pares = 12 Os números impares são: Número 5 na posição 3 Número 3 na posição 5 Número 7 na posição 6 Quantidade de números ímpares = 3 � MATRIZ DEFINIÇÃO Variável composta homogênea bidimensional formada por uma seqüência de variáveis, todas do mesmo tipo com o mesmo identificador (mesmo nome), alocadas seqüencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue são os índices que referenciam sua localização dentro da estrutura. Uma variável do tipo matriz é composta por linhas e colunas. DECLARAÇÃO DE MATRIZ DECLARE nome[linha,coluna] tipo Onde nome é o nome da variável, linha é a quantidade de linhas que vão compor a matriz, coluna a quantidade de colunas que vão compor a matriz e tipo é o nome do tipo de dados. EXEMPLO DE MATRIZ DECLARE a[3, 5] NUMÉRICO 1 2 3 4 5 1 a 2 3 a[1,1] a[3,4] ATRIBUINDO VALORES À MATRIZ Exemplos: a[1,1] ( 45 a[2,1] ( 13 a[2,5] ( 0 a[3,3/ ( -4 1 2 3 4 5 1 45 a 2 13 0 3 -4 CARREGANDO UMA MATRIZ PARA i ( 1 ATÉ 3 FAÇA INÍCIO PARA j ( 1 ATÉ 5 FAÇA INICIO ESCREVA “Digite o número da linha ”, i, “ e coluna ”, j LEIA x[i,j] FIM FIM Ficaria assim: 1 2 3 4 5 1 12 9 3 7 -23 X 2 15 4 2 34 -4 3 3 45 3 0 -3 EXIBINDO OS ELEMENTOS DE UMA MATRIZ PARA i ( 1 ATÉ 3 FAÇA INCIO PARA j ( 1 ATÉ 5 FAÇA INICIO ESCREVA x[i,j] FIM FIM C/C++ Podemos declarar matrizes unidimensionais (vetores), bidimensionais e multidimensionais. O padrão ANSI prevê, no mínimo, 12 dimensões, entretanto, o limite de dimensões fica por conta da quantidade de recursos disponível ao compilador. Apesar disso, as mais utilizadas são de duas dimensões. DECLARAÇÃO DE MATRIZ Sintaxe: tipo_dados nome_variável [dimensao1] [dimensao2] [...] Exemplo: float x[2] [6]; Como os vetores, os índices iniciam em 0. temos então, duas linhas (0 e 1) e seis colunas (0 a 5): 0 1 2 3 4 5 x 0 1 ATRIBUINDO VALORES x[1] [4] = 5 0 1 2 3 4 5 x 0 1 5 Carregando uma matriz Para ler dados do teclado e atribuir a uma matriz já declarada como int mat[7] [3]: for (i=0; i<7; i++) { for (j=0; j<3; j++) cin >> mat[i] [j] } Interpretando: a matriz possui 7 linhas, o for externo deve variar de 0 a 6 e o for interno deve variar de 0 a 2. EXIBINDO ELEMENTOS DA MATRIZ Para exibir uma matriz declarada como por exemplo, float x[10] [6]: for (i=0;i<10;i++) { for (j=0;j<6;j++) cout << x[i] [j]; } Exemplo: Criar uma matriz de caracteres #include <stdio.h> void main() { int i; char lista_time[][12]={"SANTOS", "CORINTHIANS", "PALMEIRAS", "SAO PAULO", "FLAMENGO"}; for (i=0; i<5; i++) { printf("\nO time de indice %d e: %s", i, lista_time[i]); } getch(); } EXEMPLOS 1. Ler duas matrizes do tipo vetor, sendo A com 20 elementos e B com 30 elementos. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter a capacidade de armazenar 50 elementos. Apresentar a matriz C. ALGORITMO DECLARE a[1,20], b,[1,30], c[1,50], i NUMÉRICO PARA i ( 1 até 20 FAÇA LEIA a[i] FIM_PARA PARA i ( 1 até 30 FAÇA LEIA b[i] FIM_PARA PARA i ( 1 até 50 FAÇA SE (i <= 20) ENTÃO c[i] ( a[i] SENÃOc[i] ( b[i - 20] FIM_SE FIM_PARA PARA i (1 ATÉ 50 FAÇA ESCREVA c[i] FIM_PARA FIM_ALGORITMO #include <stdio.h> int main() { int i; double a[20], b[30], c[50]; for (i=0;i<20;i++) { scanf("%lf",&a[i]); } for (i=0;i<30;i++) { scanf("%lf",&b[i]); } for (i=0;i<50;i++) { if (i <=20) c[i] = a[i]; else c[i] = b[i-20]; } for (i=0;i<50;i++) { printf("%lf",c[i]); } getch(); } 2. Lê 5 strings e exibe na tela: #include <stdio.h> int main() { char strings [5] [100]; int conta; for (conta = 0; conta<5;conta++) { printf ("\n\nDigite a string numero: "); gets (strings[conta]); } printf("\n\n\nAs strings que digitadas foram:\n\n"); for (conta=0;conta<5;conta++) printf("%s\n", strings[conta]); getch(); } EXERCÍCIOS Faça um programa que carregue uma matriz 2 x 2, calcule e exiba uma matriz resultante que será a matriz digitada multiplicada pelo maior elemento da matriz. Faça um programa que carregue uma matriz 10 x 3 com as notas de dez alunos em três provas. Exiba um relatório com o número do aluno (linha) e a prova em que cada aluno obteve menor nota. Ao final do relatório, exiba quantos alunos tiveram menor nota na prova1, quantos tiveram menor nota na prova2 e quantos tiveram menor nota na prova3. Faça um programa que carregue: a) um vetor com oito posições com os nomes das lojas; b) um vetor com quatro posições com os nomes dos produtos; c) uma matriz com os preços de todos os produtos em cada loja. Faça um programa que carregue uma matriz 10 x 20 com números inteiros e some cada uma das linhas, armazenando o resultado das somes em um vetor. A seguir, multiplique cada elemento da matriz pela soma da linha e exiba a matriz resultante. Faça um programa que carregue a primeira matriz de ordem 4 x 5 e uma segunda com ordem 5 x 2, calcule e exiba a matriz resultante do produto matricial das duas matrizes anteriores, armazenando em uma terceira matriz de ordem 4 x 2. faça um programa que carregue uma matriz 15 x 5 com números inteiros, calcule e exiba quais os elementos da matriz que se repetem e quantas vezes cada um está repetido. faça um programa que carregue: - vetor com os nomes de cinco produtos; - matriz 5 x 4 com os preços dos cinco produtos em quatro lojas diferentes; - vetor com o custo do transporte dos cinco produtos. Calcule a segunda matriz 5 x 4 com os valores dos impostos de cada produto de acordo com a tabela? PREÇO % DE IMPOSTO Até R$ 50,00 5 Entre R$ 50,01 e R$ 100,00 10 Acima de R$ 100,00 20 Faça um programa que carregue uma matriz 7 x 7 de números inteiros e crie dois vetores de sete posições cada um e que contenham, respectivamente, o maior elemento de cada uma das linhas e o menor elemento de cada uma das colunas. Escreva a matriz A e os dois vetores. faça um programa que receba as vendas semanais (de um mês) de cinco vendedores de uma loja e armazene essas vendas em uma matriz. Calcule e exiba: - total de vendas por mês de cada vendedor; - total de vendas de cada semana (todos os vendedores juntos); - total de vendas do mês. Faça um programa que carregue: - um vetor com cinco números inteiros; - um outro vetor com dez números inteiros; - uma matriz 4 x 3, também com números inteiros. Calcule e mostre: - maior elemento do primeiro vetor multiplicado pelo menor elemento do se vetor. O resultado dessa multiplicação adicionado aos elementos digitados na matriz dará origem a uma segunda matriz (resultante); - soma dos elementos pares de cada linha da matriz resultante; - a quantidade de elementos entre l e 5 em cada coluna da matriz resultante. MANIPULANDO CARACTERES EM C/C++ Em C/C++ não existe um tipo de dados similar à string da linguagem PASCAL. Em vez disso, para armazenar uma cadeia de caracteres utilize vetores (matrizes unidimensionais), onde cada posição representa um caractere. Os compiladores em C/CC++ identificam o fim de uma cadeira de caracteres por meio do caractere nulo, ou seja ‘\0’, deve-se declarar sempre o vetor com uma posição a mais para armazenar o caracteres nulo. Exemplo: ALGORITMO, devemos declarar um vetor do tipo char com 9 posições: char palavra[9] Índice ... 0 1 2 3 4 5 6 7 8 ... Valor ... A L G O R I T M O ... Posição memória ... 863 864 865 866 867 868 869 870 871 ... FUNÇÃO strcpy() Para armazenar uma cadeira de caracteres em uma variável, usamos uma função strcpy (variável, valor), que faz parte da biblioteca string.h. Copia a string origem para a string destino. Exemplo: strcpy(disciplina, “Algoritmos”); Sintaxe: strcpy(string_destino, string_origem); Exemplo prático: #include <stdio.h> #include <string.h> int main() { char str1[100], str2[100], str3[100]; printf("Entre com uma string: "); gets(str1); strcpy(str2,str1); /* copia str1 em str2 */ strcpy(str3,"Você digitou a string "); /* copia o texto para str3*/ printf("\n\n%s%s",str3,str2); getch(); } FUNÇÃO strcat() Sintaxe: strcat(string_destino, string_origem); A origem continuará inalterada e será anexada ao fim da string destino. Exemplo prático: #include <stdio.h> #include <string.h> int main() { char str1[100], str2[100]; printf("Entre com uma string: "); gets(str1); strcpy(str2,"Você digitou a string "); /* copia o texto para str3*/ strcat(str2,str1); /* str2 armazena o texto mais o conteúdo */ printf("\n\n%s",str2); getch(); } FUNÇÃO strlen() Sintaxe: strlen(string); Retorna o comprimento da string fornecida. O terminador nulo não é contado. Exemplo prático: #include <stdio.h> #include <string.h> int main() { int size; char str[100]; printf("Entre com uma string: "); gets (str); size = strlen(str); printf("\n\nA string que voce digitou tem tamanho %d", size); getch(); } FUNÇÃO strchr() Sintaxe: strchr(str1, ch) Retorna um ponteiro para a posição da cadeia str1, onde o ch é o caractere encontrado pela primeira vez. FUNÇÃO strstr() Sintaxe: strstr(string1,string2); Retorna um ponteiro para a posição da cadeia str1, onde a cadeia str2 é encontrada pela primeira vez. FUNÇÃO strcmp() Sintaxe: strcmp(string1,string2); Compara a string1 com a string2, se ambas forem idênticas a função retorna 0, caso contrário retorna não-zero. Exemplo prático: #include <stdio.h> #include <string.h> int main() { char str1[100],str2[100]; printf("Entre com uma string: "); gets (str1); printf("\n\nEntre com outra string: "); gets(str2); if (strcmp(str1,str2)) printf("\n\nAs duas strings são diferentes."); else printf("\n\nA duas strings são iguais."); getch(); } EXERCÍCIO Faça um programa que leia quatro palavras pelo teclado e armazene cada palavra em uma string. Depois, concatene todas as strings lidas numa única string. Por fim, apresente esta como resultado final. Faça um programa que receba uma frase, calcule e exiba a quantidade de palavras na frase digitada. Faça um programa que receba o nome completo de uma pessoa e exiba os nomes intermediários abreviados. Exemplo: SIMONE MARIA VIANA ( SIMONE M. VIANA. Faça um programa que receba o nome completo de uma pessoa e reescreva conforme o exemplo: SIMONE MARIA VIANA ( VIANA, S. M. Faça um programa que receba duas frases e gere uma terceira que representa a combinação das palavras das duas frases lidas. Faça um programa que receba uma frase e coloque as palavras em ordem crescente. REGISTROS (Estruturas) São estruturas que podem agregas diferentes informações. Assim, são feitas de diferentes
Compartilhar