46
Algoritmos e Programação Algoritmos e Programação Conceitos de Programação Programa-fonte e Programa-objeto Programa-fonte é o “texto” criado utilizando uma linguagem pré-definida, também é conhecido como código-fonte. Para que os computadores processem estes códigos é necessário que eles sejam traduzidos para comandos de baixo nível (linguagem de máquina). Para isto existem os compiladores que geram o programa-objeto, ou seja, o código-objeto. Mas mesmo depois disso o computador ainda não é capaz de executar o programa, pois ainda é necessário fazer o que chamamos de “linkagem”, que é a ligação entre bibliotecas e/ou outros códigos-objeto com o nosso código-objeto. Montador (Assembler): traduz um programa-fonte em linguagem Assembly, gerando um programa-objeto. Compilador: analisa, lê e traduz um programa-fonte, menos os em Assembly, gerando um programa-objeto, que depois de transformado pelo “Linker” (Link Editor) poderá ser executado pelo computador. Interpretador: é parecido com o compilador, só que não gera um programa-objeto. Nele o programa é traduzido e executado 1 código-fonte código-objeto programa Compilador Link Editor

Introducao a Programacao

Embed Size (px)

Citation preview

Page 1: Introducao a Programacao

Algoritmos e Programação

Algoritmos e Programação

Conceitos de Programação

Programa-fonte e Programa-objeto

Programa-fonte é o “texto” criado utilizando uma linguagem pré-definida, também é conhecido como código-fonte. Para que os computadores processem estes códigos é necessário que eles sejam traduzidos para comandos de baixo nível (linguagem de máquina). Para isto existem os compiladores que geram o programa-objeto, ou seja, o código-objeto. Mas mesmo depois disso o computador ainda não é capaz de executar o programa, pois ainda é necessário fazer o que chamamos de “linkagem”, que é a ligação entre bibliotecas e/ou outros códigos-objeto com o nosso código-objeto.

Montador (Assembler): traduz um programa-fonte em linguagem Assembly, gerando um programa-objeto.

Compilador: analisa, lê e traduz um programa-fonte, menos os em Assembly, gerando um programa-objeto, que depois de transformado pelo “Linker” (Link Editor) poderá ser executado pelo computador.

Interpretador: é parecido com o compilador, só que não gera um programa-objeto. Nele o programa é traduzido e executado logo após. é um processo mais demorado, pois interpreta uma linha e executa e assim sucessivamente.

Definições Básicas

As pessoas tendem a acreditar que o raciocínio lógico é fácil de usar, mas se forem solicitadas a executarem alguma tarefa utilizando o raciocínio lógico se embaraçarão. Para podemos pensar de maneira lógica é necessário o uso de fatores como paciência, calma, experiência, criatividade, entre outros.Existem muitas definições para o raciocínio lógico, uns dizem que é um conjunto de estudos que visam determinar os processos intelectuais que são as condições gerais do conhecimento verdadeiro, outros já dizem que é a seqüência coerente,

1

código-fonte

código-objeto

programa

Compilador

Link Editor

Page 2: Introducao a Programacao

Algoritmos e Programação

regular e necessária de acontecimentos, de coisas ou fatos, ou até mesmo, que é a maneira do raciocínio particular que cabe a um indivíduo ou a um grupo. Mas podemos resumir como sendo: uma 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. Na computação ele também é como algoritmo e pode ser definido como sendo uma seqüência de instruções ou operações básicas, cuja execução, em tempo finito, resolve um problema computacional. A seqüência em que são dispostas as instruções depende de como foi definida a estratégia para a solução do problema.

Técnica Top-Down

Nesta técnica são definidas genericamente as etapas de solução do problema e em seguida, cada etapa é detalhada, obtendo-se desta forma um refinamento da solução do problema até chegar a uma seqüência de operações básicas e definição dos tipos de dados.

iníciocalcula médiaverifica situaçãoimprime situação

fim

Descrição de um Algoritmo

Eles podem ser descritos através de pseudo-códigos, fluxogramas ou diagramas de blocos.

Fluxograma: tem como finalidade descrever o fluxo, especificando os suportes usados para os dados e as informações.

Exemplo:

Diagrama de Blocos: é utilizado para descrever o método e a seqüência do processo dos planos em um computador.

Exemplo:

2

“Aprovado”

Início

Média = (Nota1+Nota2)/2

Média>= 7 “Aprovado”Fim

Vai para Exame

Sim

Não

Nota Exame

Resultado final = (Média+Nota Exame)/2

Resultado final >= 5

Sim

“Reprovado”

Não

Fim

Page 3: Introducao a Programacao

Algoritmos e Programação

Algoritmo:

Exemplo:

algoritmo Calcula médiainício

real media, nota1, nota2, exame, final;media (nota1 + nota2)/2;se (media >= 7)

então “Aprovado”;senão “Vai para Exame”;

fim seleia exame;

3

Page 4: Introducao a Programacao

Algoritmos e Programação

final (media + exame)/2;se (final >= 5)

então “Aprovado”;senão “Reprovado”;

fim sefim

Estruturas Lógicas de um Algoritmo

São três as estruturas: seqüencial, repetitiva e seletiva, isto é, um algoritmo pode ser constituído por qualquer combinação dessas três estruturas.

Implementação

É a codificação de um algoritmo em uma linguagem de programação qualquer.

Tipos de Programação

Programação Linear: os programas são executados linha a linha, começando na 1º linha do código, seguindo o fluxo do programa.

Programação Estruturada: o programa é dividido em módulos ou sub-rotinas e utiliza as estruturas lógicas

Programação Visual (Orientada a Eventos): o programa é dividido em retalhos (procedimentos ou funções) que respondem a um evento externo iniciado pelo usuário sobre um objeto. Exemplo: clique do mouse sobre um botão de comando.

Passos para a construção de um Algoritmo

1. Identificar o problema (objetivo) lendo atentamente o enunciado.2. Retirar do enunciado as “entradas de dados”, ou seja, identificar os dados que

devem ser fornecidos.3. Retirar do enunciado as “saídas de dados” que devem ser geradas como

resultado da solução.4. Determinar o que deve ser feito para transformar as “entradas” nas “saídas”

desejadas (processamento). Neste ponto deve ser determinada a seqüência de ações que levem a solução do problema.

5. Construir o algoritmo, utilizando uma forma de representação.6. Testar a solução. Execução de todas as ações do algoritmo, seguindo o fluxo

estabelecido para verificar se ele está realmente gerando os resultados esperados ou detectar possíveis erros em seu desenvolvimento.

Exemplo: Construir um algoritmo para somar 2 números.

Entradas: (O que é preciso?)Primeiro número;

4

Page 5: Introducao a Programacao

Algoritmos e Programação

Segundo número.

Processamento: (Como chegar ao que quero?)somar os números.

Saídas: (O que quero?)números somados.

Exercício A

1. Construir um algoritmo para calcular a média semestral antes do exame.

Resposta:Entradas:nota1nota2

Processamento:somar as notas e dividir por 2

Saídas:média semestral antes do exame

Estrutura Básica de um Algoritmo

algoritmo <nome>início //início do algoritmo

variáveis //declaração de variáveisconstantes //declaração de constantes{inicialização de variáveis de controle ou que receberão cálculos}{solicitação de entrada de dados}{entrada de dados}{processamento/cálculos}{saída de informações e resultados}

fim //final do algoritmo

Tipos de Dados Abstratos

Define qual o tipo de informação entrará ou sairá do programa, por exemplo se será um número inteiro, uma palavra ou cadeia de caracteres etc.Os tipos de dados são definidos sem a preocupação de como serão representados computacionalmente, isto para que não se prendam a uma única linguagem de programação.

Tipos de Dados: Os tipos de dados em uma linguagem de programação podem não representar exatamente os tipos de dados abstratos.

Tipos de Dados AbstratosInteiro Números inteiros com ou sem sinal

Exemplos: -41, 0, 52Real Números racionais com ou sem sinal

Exemplos: 13.5, -4.5, 6.023E23, -1.23E-2Booleano Valores lógicos

5

Page 6: Introducao a Programacao

Algoritmos e Programação

True (verdadeiro) e False (falso)Representados por T ou 1 e F ou 0 respectivamente

Caracter(literal)

Caracteres alfanuméricos (letras maiúsculas/minúsculas, algarismos, sinais de pontuação e símbolos especiais)Exemplo: ‘A’, ‘2’, ‘.’, ‘<’

Tipos de Dados Básicos em Linguagem C++Tipo Bit Bytes Escala

char 8 1 -128 a 127int 16 2 -32768 a 32768float 32 4 3.4E-38 a 3.4E+38double 64 8 1.7E-308 a 1.7E+308void 0 0 sem valor

Modificadoreslong ou long int (4 bytes)unsigned char (0 a 255)unsigned int (0 a 65535)short (2 bytes)

Exercício B

Indique que tipo de dados você usaria para representar as informações abaixo:a) uma nota;b) uma idade;c) um nome;d) uma letra;e) um telefone;f) um CPF;g) uma data;h) um ano;i) um horário.

Constante

É um valor fixo, ou seja, que não se altera durante a execução de um programa, ela pode ser um número, um valor lógico ou uma cadeia de caracteres, de acordo com o tipo ela pode ser classificada como numérica, lógica ou literal (caracter).

Constante numérica: é um número com ou sem parte fracionária, negativo ou positivo, podendo haver parte exponencial.

Exemplos: 25, 3.14, 7.8x103, -15.

Constante lógica: é um valor lógico, podendo ser somente falso ou verdadeiro.

Constante literal: é uma seqüência qualquer de caracteres (letras, dígitos ou símbolos especiais), elas sempre aparecem entre aspas “ “.

6

Page 7: Introducao a Programacao

Algoritmos e Programação

Exemplos: “José da Silva”, “12345”, “*A!B?-”.

Exercício C

Identificar o tipo de cada uma das constantes abaixo:j) 21;k) “Bola”;l) “Verdadeiro”;m) 0.21x102;n) falso;o) “1520”;p) verdadeiro;q) “-2.5x103”;r) “??Onde??”;s) 41025.44;

Variáveis

Uma variável corresponde a uma posição de memória, cujo conteúdo pode mudar ao longo da execução do programa. Toda variável tem um nome também conhecido como identificador. Por exemplo ax2 + bx + c = 0, o conteúdo dos identificadores a, b e c podem mudar (variar), por isso são considerados variáveis.O nome de uma variável pode ser composto de um ou mais caracteres, mas tem que seguir as regras abaixo:

1. Sempre começar com uma letra;2. Pode ser formado por letras e números;3. Pode utilizar o underline “_”;4. Não pode conter espaços;5. Não pode utilizar cedilha ou qualquer acentuação;6. Não pode ser igual as palavras reservadas;

Exemplos:

Identificadores Permitidos Identificadores Não PermitidosA X5 5B X-Y

Nota A32B E(13) Nota[1]Matricula F1G3H5 A:B B*D

Declaração de Variáveis

As variáveis só podem armazenar valores de um tipo, sendo também classificadas como numéricas, lógicas e literais.Uma vez declarada a variável o valor nela armazenado deve ser do tipo em que ela foi declarada.

Estrutura da declaração:

7

Page 8: Introducao a Programacao

Algoritmos e Programação

nome-do-tipo é a palavra-chave que indica o tipo de dados associado às variáveis.

lista-de-identificadores são os nomes escolhidos para as variáveis, e devem ser separados por vírgula;

Exemplos em pseudocódigo:

a) inteiro NOTA, CODIGO, X5;b) booleano TESTE, SIM;c) caracter NOME, END1, END2, F1F2;

Exemplos em C++:

a) int NOTA, CODIGO, X5;b) char SEXO;

Exercício D

1) Assinalar com X os identificadores válidos:( ) valor ( ) salario-liquido ( )B248( ) x2 ( ) Nota*do*Aluno ( )A1B2C3( ) 3x4 ( ) Maria ( )KM/H( ) XYZ ( ) Nomedaempresa ( )Sala215( ) “Nota” ( ) Ah! ( )M{A}

2) Supondo-se que as variáveis NOM, PROF, ID e SALARIO serão utilizadas para armazenar o nome, profissão, idade e salário de uma pessoa, escrever o conjunto de declarações necessárias para criar essas variáveis e associar às mesmas os respectivos tipos.

Operadores

Os operadores aritméticos são usados em cálculos matemáticos.Os operadores relacionais são usados para fazer comparações.Os operadores lógicos são usados testes condicionais.

Operadores AritméticosAlgoritmo Linguagem C++

Atribuição =Adição + +Subtração - -Multiplicação * *Divisão real / /Divisão inteira div sem equivalenteResto de divisão mod %Menos Unário - -

8

Page 9: Introducao a Programacao

Algoritmos e Programação

Operadores LógicosAlgoritmo Linguagem C++

Conjunção e &&Disjunção ou | |Negação não !

Operadores AritméticosAlgoritmo Linguagem C++

Menor < <Maior > >Igual = = =Diferente ! =Menor ou igual < =Maior ou igual > =

Palavras Reservadas

Em Pseudocódigointeiro se repita inícioreal então para fimbooleano senão selecione constanteleia escreva imprima registrocaracter enquanto caso

Em C++asm else _loadds sizeofauto enum long _ssbreak _es _near staticcase _export near structcatch extern new switch_cdecl _far operator templatecdecl far _pascal thischar float private typedefclass for protected unionconst friend public unsignedcontinue goto register virtual_cs huge return voiddefault if _saveregs volatiledo inline _seg whiledouble int short_ds interrupt signed

Pseudocódigo

9

Page 10: Introducao a Programacao

Algoritmos e Programação

Comando leia: recebe o que foi digitado pelo usuário. Utilizado quando desejamos receber o que foi digitado pelo usuário.

Comando escreva: exibe informações na tela. Utilizado quando desejamos exibir em tela alguma informação ao usuário, seja ela resultado de um cálculo ou procedimento, ou ainda uma mensagem.

Exemplos de Algoritmos

1) Dados dois números, calcular a soma dos mesmos.inicio

inteiro A, B, Soma;escreva “Digite o valor de A:”;leia A;escreva “Digite o valor de B:”;leia B;Soma A + B;escreva Soma;

fim

Em C++

#include <iostream.h>void main(){

int A, B, Soma;cout<< “Digite o valor de A:”;cin>> A;cout<< “Digite o valor de B:”;cin>> B;Soma = A + B;cout << “A soma e ” << Soma;

}

2) Faça um algoritmo para calcular a área de uma circunferência.inicio

real A, R;escreva “Digite o raio da circunferência:”;leia R;A 3.14159 * (R * R);escreva A;

fim

Em C++

#include <iostream.h>void main(){

float A, R;cout<< “Digite o raio da circunferência:”;

10

Page 11: Introducao a Programacao

Algoritmos e Programação

cin>> R;A = 3.14159 * (R * R);cout<< A;

} Algumas Definições da Linguagem C++

Os programas em C++ são compostos principalmente por funções, uma ou mais. A principal delas é a função main().

Estrutura básica de uma função

tipo nome( ) //nome e tipo da função{ //abertura do corpo do programa

instrução_1; //instruçõesinstrução_2;...instrução_n;

} //fechamento do corpo do programa

Exemplo:#include <iostream.h>void main( ){

cout << “Primeiro Programa”;}

A Diretiva #include

É utilizada para incluir em nosso código, um outro código-fonte, onde o processador encontra esta diretiva, ele a substitui pelo conteúdo do arquivo referenciado.

Exemplos:#include <iostream.h>#include “iostream.h”

quando são usadas aspas o compilador procura o arquivo primeiro no diretório atual se não encontra-lo, procurará no diretório INCLUDE.

Comando cout

O comando é usado para imprimir uma mensagem ou valor na tela, ele sempre está acompanhado do operador <<.

Exemplo:cout << “Primeiro Programa”;

Códigos Especiais Significado

11

Page 12: Introducao a Programacao

Algoritmos e Programação

\n Nova linha\r Retorno do cursor\t Tab\b Retrocesso\” Aspas\ \ Barra\f Salta página de formulário\0 Nulo

Comando cin

O comando é usado para ler uma informação digitada no teclado (uma entrada), ele sempre está acompanhado do operador >>.

Exemplo:cin >> n;

Exemplos de Programas

1) Programa que imprime mensagem constantes na tela.#include < iostream.h >void main( ){

int evento;char corrida;float tempo;evento = 5;corrida = ‘C’;tempo = 27.25;cout << “O tempo vitorioso na eliminatória ” << corrida;cout << “ da competição “ << evento << ” foi ” << tempo <<”.”;

}

2) Programa que calcula a conversão de temperaturas em graus Celsius para Fahrenheit.

#include < iostream.h >void main( ){

float F, C;cout << “Digite a temperatura em graus Celsius:”;cin >> C;F = (9 * C + 160) / 5;cout << “O valor é ” << F;

}

Exercício E

1) Faça um programa que leia uma temperatura em graus Celsius e converta-a para graus Fahrenheit. A fórmula de conversão é: F = (9 * C + 160) / 5, sendo

12

Page 13: Introducao a Programacao

Algoritmos e Programação

F a temperatura em Fahrenheit e C a temperatura em Celsius.

2) Faça um programa que efetue o cálculo da quantidade de litros de combustível gastos em uma viagem, utilizando-se um automóvel que faz 12Km por litro. Para obter o cálculo, o usuário deverá fornecer o tempo gasto e a velocidade média durante a viagem. Desta forma, será possível obter a distância percorrida com a fórmula DISTÂNCIA = TEMPO * VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros utilizados na viagem com a fórmula LITROS_USADOS = DISTÂNCIA / 12. O algoritmo deverá apresentar os valores da velocidade média, tempo gasto na viagem, a distância percorrida e a quantidade de litros gastos.

3) Fazer um programa que leia um número inteiro e apresente o resultado do quadrado desse número:

4) Fazer um programa que leia dois inteiros e imprima o resultado do quadrado da diferença do primeiro pelo do segundo.

5) Elaborar um programa que efetue a leitura de 3 valores (A, B e C) e apresente como resultado final a soma dos quadrados dos três valores lidos.

6) Fazer um programa para calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula: VOLUME = 3.14159 * (R * R) * ALTURA.

7) Faça um programa que calcule a área de um triângulo. Fórmula: a = (b * c) / 2.

8) Faça um programa que receba o salário de um funcionário, calcule e imprima o novo salário sabendo-se que este sofreu um aumento de 25%.

Estrutura de Condição

Este tipo de estrutura testa uma condição e de acordo com o resultado do teste (verdadeiro ou falso) executa uma operação.

Estrutura Condicional Simples

Nesta estrutura há uma única condição, que no caso de ser verdadeira, o algoritmo executará uma determinada instrução.

iniciointeiro A, B;escreva “Digite A:”;leia A;escreva “Digite B:”;leia B;se (A > B)

então escreva A;fim se

fim

13

Page 14: Introducao a Programacao

Algoritmos e Programação

Estrutura Condicional Composta

Nesta estrutura há uma única condição, que no caso de ser verdadeira, o algoritmo executará uma determinada instrução e caso não seja verdadeira, ele executará uma segunda instrução.

iniciointeiro A, B;escreva “Digite A:”;leia A;escreva “Digite B:”;leia B;se (A > B)

então escreva A;senão escreva B;

fim sefim

Estrutura Condicional Encadeada

Nesta estrutura há no mínimo duas condições, no caso da primeira ser verdadeira, o algoritmo executará uma determinada instrução, caso não seja ele testará a segunda condição que se for verdadeira ele executará uma segunda instrução, caso não seja ele pode encerrar o processo ou se houver uma terceira condição ele irá testá-la e assim sucessivamente.

inicioreal salario, novo_salario;escreva “Digite salario:”;leia salario;se (salario < 500)

então novo_salario salario * 1.15;senão se (salario <= 1000)

então novo_salario salario * 1.10;senão novo_salario salario * 1.05;

fim sefim se

fim

Estrutura Condicional com Uso de Operadores Lógicos

Nesta caso podemos utilizar qualquer uma das estruturas citadas anteriormente, mas iremos ter o uso de operadores lógicos que auxiliam na composição da condição.

iniciointeiro A, B, C;escreva “Digite A:”;leia A;

14

Page 15: Introducao a Programacao

Algoritmos e Programação

escreva “Digite B:”;leia B;escreva “Digite C:”;leia C;se (A > B) e (B < C)

então escreva B;fim se

fim

Operador Lógico ECondição 1 Condição 2 Resultado

falsa falsa falsaverdadeira falsa falsa

falsa verdadeira falsaverdadeira verdadeira verdadeira

Operador Lógico OUCondição 1 Condição 2 Resultado

falsa falsa falsaverdadeira falsa verdadeira

falsa verdadeira verdadeiraverdadeira verdadeira verdadeira

Operador Lógico NÃOCondição Resultado

falsa verdadeiraverdadeira falsa

Exemplo do uso de NÃO:

se não (x > 5)então C (A + B) * X;senão C (A - B) * X;;

fim se

Exercício F

1) Determine o resultado lógico das expressões mencionadas, assinalando se são verdadeiras ou falsas. Considere para as respostas os seguintes valores: X = 1, A = 3, B = 5, C = 8 e D = 7.

a) não (X > 3) V ( ) F ( )b) (X < 1) e não (B > D) V ( ) F ( )c) não (D < 0) e (C > 5) V ( ) F ( )d) não (X > 3) ou (C < 7) V ( ) F ( )e) (A > B) ou (C > B) V ( ) F ( )f) (X >= 2) V ( ) F ( )g) (X < 1) e (B >= D) V ( ) F ( )h) (D < 0) ou (C > 5) V ( ) F ( )

15

Page 16: Introducao a Programacao

Algoritmos e Programação

i) não (D > 3) ou não (B < 7) V ( ) F ( )j) (A > B) ou não (C > B) V ( ) F ( )

Estruturas Condicionais em C

Estrutura if

Esta estrutura é equivale à estrutura se em pseudocódigo.

if (condição)instrução;

Exemplos:

#include <iostream.h>#include <conio.h>void main( ){

char ch;ch = getche( );if (ch == ‘p’)

cout << “Você pressionou a tecla p.”;}

#include <iostream.h>#include <conio.h>void main( ){

if (getche( ) == ‘p’){

cout << “Você pressionou a tecla p.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}}

Estrutura if-else

Esta estrutura é equivale à estrutura se-então-senão em pseudocódigo.

if (condição)instrução_1;

elseinstrução_2;

Exemplos:

#include <iostream.h>#include <conio.h>

16

Page 17: Introducao a Programacao

Algoritmos e Programação

void main( ){

char ch;ch = getche( );if (ch == ‘p’)

cout << “Você pressionou a tecla p.”;else

cout << “Você não pressionou a tecla p.”;}

#include <iostream.h>#include <conio.h>void main( ){

if (getche( ) == ‘p’){

cout << “Você pressionou a tecla p.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}else{

cout << “Você não pressionou a tecla p.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}}

Estrutura if-else Encadeados

Esta estrutura é equivale à estrutura se-então-senão se em pseudocódigo.

if (condição_1)instrução_1;

else if (condição_2)instrução_2;

elseinstrução_3;

Exemplos:

#include <iostream.h>#include <conio.h>void main( ){

char ch;ch = getche( );if (ch == ‘p’)

printf(“Você pressionou a tecla p.”);

17

Page 18: Introducao a Programacao

Algoritmos e Programação

else if (ch == ‘r’)cout << “Você pressionou a tecla p.”;

elsecout << “Você não pressionou nem a tecla p e nem a r.”;

}

#include <iostream.h>#include <conio.h>void main( ){

if (getche( ) == ‘p’){

cout << “Você pressionou a tecla p.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}else if (getche( ) == ‘r’)

{cout << “Você pressionou a tecla r.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}else{

cout << “Você não pressionou nem a tecla p e nem a r.”;cout << “Pressione qualquer tecla para terminar.”;getche( );

}}

Exercício G

Façam em pseudocódigo e linguagem C++:

1) Elaborar um programa que efetue a leitura de um determinado valor, e apresentá-lo caso não seja maior que 3.

2) Dados dois números verifique qual é o maior e imprima-o.

3) Faça um algoritmo que calcule a média das notas de dois alunos e imprima a maior delas. Considerando que cada aluno possui três notas.

4) Faça um algoritmo que leia dois números e apresente a diferença do maior pelo menor.

5) Faça um algoritmo que efetue a leitura de um valor inteiro positivo ou negativo e apresente o número lido como sendo um valor positivo, ou seja, o programa deverá apresentar o módulo de um número fornecido. Lembre-se de verificar se o número fornecido é menor que zero, sendo, multiplique-o por –1.

18

Page 19: Introducao a Programacao

Algoritmos e Programação

6) Faça um algoritmo para:a) Ler um número inteiro qualquer, no caso o número N;b) Calcular o resto da divisão de N por 4, e armazenar na variável R4;c) Calcular o resto da divisão de N por 5, e armazenar na variável R5d) Verificar se ambas as variáveis possuem o valor zero, se sim apresentar a

variável N, se não, apresentar a mensagem “Não é divisível por 4 e 5”;

Exercício H

Façam em pseudocódigo e linguagem C++:

1) Faça um algoritmo que leia valores referentes a quatro notas escolares de um aluno e escreva uma mensagem dizendo que o aluno foi aprovado, se o valor da média for maior ou igual a 7. Se o valor for menor que 7, solicitar a nota de exame, somar com o valor da média e obter nova média. Se a nova média for maior ou igual a 5, escrever uma mensagem informando que o aluno foi aprovado em exame. Se for menos escrever uma mensagem informando que o aluno não foi aprovado. Apresentar junto com as mensagens o valor da média do aluno.

2) Efetuar a leitura de quatro números inteiros e apresentar os números que são divisíveis por 2 e 3.

3) Fazer um algoritmo que leia um número inteiro e apresentar uma mensagem informando se o número é par ou ímpar.

Operador Condicional Ternário “?”

Este operador tem função muito parecida com a do if-else mas o seu resultado é atribuído a uma variável.

resp = condição ? instrução_1 : instrução_2;

Exemplos:1) max = (num1 > num2) ? num1: num2;

equivale a

if (num1 > num2)max = num1;

elsemax = num2;

2) abs = (num < 0) ? –num: num;

equivale a

if (num < 0)abs = - num;

19

Page 20: Introducao a Programacao

Algoritmos e Programação

elseabs = num;

Observação: este tipo de operador melhora a eficiência do algoritmo.

Exercício I

1) Refaça os exercícios G-2, G-3, G-4, G5, H-3 utilizando no lugar do if o operador Ternário (fazer somente em C++).

Estrutura selecione

Esta estrutura é muito parecida com se-então, mas o segundo permite apenas duas alternativas de execução para cada condição, enquanto o primeiro oferece a possibilidade de escolher entre várias alternativas com uma única condição. Vejamos sua estrutura para entender melhor.

selecione (expressão constante)caso constante 1:

instruções;caso constante 2:

instruções;...padrão:

instruções;fim selecione

Exemplo: Calculadora com 4 operações.

inicioreal num1, num2;caracter op;escreva “Digite um número, operador, número”;leia num1, op, num2;selecione (op)

caso ‘+’:escreva “ = ”, num1 + num2;quebra;

caso ‘-’:escreva “ = ”, num1 - num2;quebra;

caso ‘*’:escreva “ = ”, num1 * num2;quebra;

caso ‘/’:escreva “ = ”, num1 / num2;quebra;

padrão:escreva “Operador desconhecido!”;

20

Page 21: Introducao a Programacao

Algoritmos e Programação

fim selecione}

Em C++

switch (expressão constante){

case constante 1:instruções;

case constante 2:instruções;

...default:

instruções;}

Exemplo: Calculadora com 4 operações.

#include <iostream.h>#include <conio.h>void main( ){

float num1, num2;char op;cout << “Digite um número, operador, número” << endl; cin >> num1, op, num2;switch (op){

case ‘+’:cout << “ = ” << num1 + num2;break;

case ‘-’:cout << “ = ” << num1 - num2;break;

case ‘*’:cout << “ =” << num1 * num2;break;

case ‘/’:cout << “ = ” << num1 / num2);break;

default:cout << “Operador desconhecido!”;

}getch( );

}Comando quebra

Este comando é utilizado para provocar a saída do switch. Se este comando não for utilizado o programa executará as instruções seguintes.

21

Page 22: Introducao a Programacao

Algoritmos e Programação

Exemplo: Calculadora com 4 operações sem o comando quebra.

inicioreal num1, num2;caracter op;escreva “Digite um número, operador, número”;leia num1, op, num2;selecione (op)

caso ‘+’:escreva “ = ”, num1 + num2;quebra;

caso ‘-’:escreva “ = ”, num1 - num2;quebra;

caso ‘*’:caso ‘x’:

escreva “ = ”, num1 * num2;quebra;

caso ‘/’:caso ‘\’:

escreva “ = ”, num1 / num2;quebra;

padrão:escreva “Operador desconhecido!”;

fim selecione}

Em C++

Exemplo: Calculadora com 4 operações sem o comando break.

#include <iostream.h>#include <conio.h>void main( ){

float num1, num2;char op;cout << “Digite um número, operador, número” << endl; cin >> num1, op, num2;switch (op){

case ‘+’:cout << “ = ” << num1 + num2;break;

case ‘-’:cout << “ = ” << num1 - num2;break;

case ‘*’:case ‘x’:

22

Page 23: Introducao a Programacao

Algoritmos e Programação

cout << “ =” << num1 * num2;break;

case ‘/’:case ‘\\’:

cout << “ = ” << num1 / num2);break;

default:cout << “Operador desconhecido!”;

}getch( );

}

Exercício O

1) Escreva um programa que pergunte ao usuário com qual velocidade costuma dirigir seu carro e imprima a resposta que o guarda de trânsito daria de acordo com a velocidade conforme definido na tabela abaixo.

75 km/h “Você está acima da velocidade máxima permitida.”65 km/h “Você está acima da velocidade máxima permitida.”55 km/h “Você está na velocidade máxima permitida.”45 km/h “Você está abaixo da velocidade máxima permitida.”

23

Page 24: Introducao a Programacao

Algoritmos e Programação

Estruturas de Repetição

Estrutura enquanto-repita

enquanto <condição> repita<bloco>

fim enquanto

Nesta estrutura, <bloco> só será executado se <condição> for verdadeira. Dentro de <bloco> deve haver uma instrução que altere <condição> senão <bloco> será executado infinitamente (loop).

Exemplo: Calcular os quadrados de uma lista de números inteiros positivos, enquanto eles forem maiores que zero.inicio

inteiro A, t;escreva “Digite A:”;leia A;enquanto (A > 0) repita

t A * A;escreva t;escreva “Digite A:”;leia A;

fim enquantofim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três exibindo o resultado de cada multiplicação.inicio

inteiro X, R, cont;cont 1;enquanto (cont <= 5) repita

escreva “Digite X:”;leia X;R X * 3;escreva R;cont cont + 1;

fim enquantofim

Laço while

while (condição)instrução;

Exemplo: Imprime números de 0 a 9.#include <iostream.h>void main( ){

int conta = 0;

24

Page 25: Introducao a Programacao

Algoritmos e Programação

while (conta < 10){

cout << “conta = ” << conta;conta++;

}}

Exemplo: Conta caracteres de uma frase.#include <iostream.h>void main( ){

int cont = 0;cout << “Digite uma frase: \n”;while (getche( ) != ‘\r’)

cont++;cout << “\n O numero de caracteres e ” << cont;

}

Exemplo: Conta caracteres de uma frase e dá a alternativa de contar nova frase.#include <iostream.h>void main( ){

int cont = 0;char ch = ‘S’;while (ch == ‘S’){

cout << “Digite uma frase: \n”;while (getche( ) != ‘\r’)

cont++;cout << “\n O numero de caracteres e ” << cont;cout << “\n Deseja contar os caracteres de outra frase?”;ch = getche( );

}}

Exercício J

1) Construir um algoritmo que calcule a média aritmética de vários valores inteiros positivos, lidos externamente. O final da leitura acontecerá quando for lido um valor negativo.

2) Faça um programa, utilizando um laço while, que solicite ao usuário caracteres e imprima seus códigos decimais. O programa deve terminar quando o usuário pressionar a tecla <Enter>.

Estrutura repita-enquanto

repita <bloco>

enquanto <condição>

25

Page 26: Introducao a Programacao

Algoritmos e Programação

Nesta estrutura, <bloco> é executado uma vez e após a execução se <condição> for verdadeira ela executará <bloco> outra vez e assim sucessivamente até que <condição> seja falsa.

Exemplo: Calcular os quadrados de uma lista de números inteiros positivos, enquanto eles forem maiores que zero.inicio

inteiro A, t;repita

escreva “Digite A:”;leia A;t A * A;escreva t;

enquanto (A > 0)fim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três exibindo o resultado de cada multiplicação.inicio

inteiro X, R, cont;cont 1;repita

escreva “Digite X:”;leia X;R X * 3;escreva R;cont cont + 1;

enquanto (cont <= 5)fim

Funções getche( ) e getch( )

As duas funções lêem o caracter do teclado e diferente do cout não esperam pelo <enter> para finalizar a função, a diferença entre elas é que a getch( ) lê e guarda o caracter sem exibi-lo na tela e a getche( ) exibe.

Exemplos:#include <iostream.h>void main( ){

char ch;cout << “Digite algum caracter:”;ch = getche( );cout << “\nA tecla que você pressionou é ” << ch;

}

#include <iostream.h>void main( ){

26

Page 27: Introducao a Programacao

Algoritmos e Programação

char ch;cout << “Digite algum caracter:”;ch = getch( );cout << “\nA tecla que você pressionou é ” << ch;

}

Laço do-while

Este laço tem a mesma função do laço while, a diferença entre eles é que neste é possível executar pelo menos uma vez as instruções, por que nele a condição é verificada somente no final, ou seja, quando temos um caso em que precisamos executar instruções pelo menos uma vez é que o utilizamos. Ele equivale a estrutura repita-enquanto do algoritmo.

do{

instrução;} while (condição);

Exemplo: Conta caracteres de uma frase e dá a alternativa de contar nova frase.#include <iostream.h>void main( ){

int cont = 0;char ch;do{

cout << “Digite uma frase: \n”;while (getche( ) != ‘\r’)

cont++;cout << “\n O numero de caracteres e ” << cont;cout << “\n Deseja contar os caracteres de outra frase?”;ch = getche( );

} while (ch == ‘S’);}

Exemplo: Calculadora com 4 operações.#include <iostream.h>void main(){

float num1, num2;char op, ch;do{

cout >> "Digite um numero, operador, numero \n";cin >> num1 << op << num2;switch (op){

case '+':cout << " = " << num1 + num2;

27

Page 28: Introducao a Programacao

Algoritmos e Programação

break;case '-':

cout << " = " << num1 - num2;break;

case '*':case 'x':

cout << " = " << num1 * num2;break;

case '/': case '\\':

cout << " = " << num1 / num2;break;

default:cout << "Operador Invalido";

}cout << “Deseja fazer novo cálculo? ”;ch = getche( );

} while (ch == ‘S’ || ch == ‘s’);getch();

}

Exercício K

3) Faça um algoritmo que leia o ano de nascimento de uma pessoa e escreva a idade dela em anos. Depois do cálculo pergunte se deseja calcular outra idade, se sim reinicie o laço se não encerre o programa.

4) Faça um programa que solicite um número inteiro de até 4 dígitos ao usuário e inverta a ordem de seus algarismos. Coloque no programa, utilizando um laço do-while, a opção do usuário digitar um novo número para inverter.

Estrutura com variável de controle – para-até-repita

para i = 1 até n repita<bloco>

fim para

Nesta estrutura, <bloco> será executado de 1à n vezes, ou seja, a variável i funciona como controle, ela é iniciada em 1 e chegará a atingir um valor n, enquanto isso não acontecer ela executará as instruções do <bloco>.

Exemplo: Dado um número n, calcular a soma dos n primeiros números pares.inicio

inteiro n, s, i;escreva “Digite N:”;leia n;s 0;para (i = 0; i < n; i i + 1)

se (i mod 2 = 0)então s s + i;

28

Page 29: Introducao a Programacao

Algoritmos e Programação

fim sefim paraescreva “A soma é: ”, s;

fim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três exibindo o resultado de cada multiplicação.inicio

inteiro X, R, cont;para (cont = 0; cont < 5; cont cont + 1)

escreva “Digite X:”;leia X;R X * 3;escreva R;cont cont + 1;

fim para fim

Operadores de Incremento (++) e Decremento (--)

++ incrementa de 1 seu operando- - decrementa de 1 seu operando

Exemplos:i++ eqüivale a i = i + 1i - - eqüivale a i = i - 1

Estes operadores têm duas formas de serem usados: a pré-fixada e a pós-fixada.

Pré-fixada = ++i ou - - iPós-fixada = i++ ou i - -

Na pré-fixada primeiro a variável i é incrementada/decrementada depois ela é usada e na pós-fixada primeiro a variável é usada e depois incrementada/ decrementada.

Exemplo de pós-fixada:#include <iostream.h>void main( ){

int n, x;n = 5;x = n++;cout << “x = “ << x << “, n = ” << n;

}

Saída: x = 5 n = 6

Exemplo de pré-fixada:#include <iostream.h>

29

Page 30: Introducao a Programacao

Algoritmos e Programação

void main( ){

int n, x;n = 5;x = ++n;cout << “x =” << x << “, n = “ << n;

}

Saída: x = 6 n = 6

Outros exemplos:K = 3 * n++;K = 3 * ++n;

Importante: estes operadores só podem ser usados com variáveis e não com constantes ou expressões.

Operadores Aritméticos de Atribuição +=, -=, *=, /=, %=

X op= exp;

Se X é uma variável, exp uma expressão e op um operador aritmético (+, -, *, / ou %) a expressão acima equivale a:

X = (X) op (exp);

Exemplos:i += 2; equivale a i = i + 2;x *= y + 1; equivale a x = x * (y + 1);t /= 2.5; equivale a t = t / 2.5;p %= 5; equivale a p = p % 5;d -= 3; equivale a d = d - 3;

Exemplo:#include <iostream.h>void main( ){

int total = 0, cont = 10;cout << “Total = ” << total << endl;total += cont;cout << “Total = ” << total <<endl;total += cont;cout << “Total = “ << total;

}

Laço for

for (inicialização; teste; incremento)instrução;

30

Page 31: Introducao a Programacao

Algoritmos e Programação

Exemplo: Imprime números de 0 a 9.#include <iostream.h>void main( ){

int conta;for (conta = 0; conta < 10; conta++)

cout << “conta = ” << conta << endl;}

Exemplo: Imprime números de 9 a 0.#include <iostream.h>void main( ){

int conta;for (conta = 9; conta >= 0; conta--)

cout << “conta = ” << conta << endl;}

Exemplo: Imprime números de 0 a 9 pulando de três em três.#include <iostream.h>void main( ){

int conta;for (conta = 0; conta < 10; conta += 3)

cout << “conta = ” << conta << endl;}

Exemplo: Soma e exibe os números de 0 a 9, mostrando as parciais da soma.#include <iostream.h>void main( ){

int conta, total;for (conta = 0, total = 0; conta < 10; conta++){

total += conta;cout << “conta = ” << conta << “, total = ” << total << endl;

}}

Exemplo: Imprime a soma de x + y enquanto esta soma for menor que 100.#include <iostream.h>void main( ){

int x, y;for (x = 0, y = 0; x + y < 100; x++, y++)

cout << x + y << endl;}

Exercício L

31

Page 32: Introducao a Programacao

Algoritmos e Programação

5) Faça um algoritmo que calcule e apresente a média de 10 alunos, considerando que cada aluno tenha 2 notas.

6) Faça um algoritmo que calcule o seguinte somatório, onde A e B devem ser fornecidos pelo usuário.

7) Faça um algoritmo que calcule o fatorial de um número N recebido via teclado.N! = N*(N-1)* (N-2)* (N-3)...0! = 1 e 1! = 1N pertence aos naturais (0 a 9)

Exemplos:2! = 2 * 1 = 23! = 3 * 2 * 1 = 64! = 4 * 3 * 2 * 1 = 245! = 5 * 4 * 3 * 2 * 1 = 120

8) Faça um algoritmo que leia n e calcule os valores da seguinte seqüência:S = 1, 2, 4, 8, 16, ..., nS = i + i

9) Faça um algoritmo que calcule a tabuada de multiplicação de um número fornecido pelo usuário. Exiba no seguinte formato n x i = r.

10)Dado um número real X e um número natural N, calcule e escreva o valor de xn.

11)Faça um programa que leia 5 valores para A, um de cada vez, e conte quantos deles são negativos, escrevendo esta informação.

12)Dado um número N, escreva todos os ímpares menores que N e maiores que 0, para n = 10 deverão ser exibidos os ímpares: 1, 3, 5, 7e 9.

13)Faça um programa para calcular o somatório dos pares de 0 a 100.

14)Dada um relação de 200 números, leia os mesmos e informe quantos deles são pares e ímpares.

15)Escreva um programa usando o laço for que imprima os caracteres da tabela ASCII de 32 a 255 decimal. O programa deve imprimir cada caracter, seu código decimal e seu código hexadecimal.

16)Escreva um programa usando o laço for que imprima o quadrado de todos os inteiros de 1 a 20.

32

Page 33: Introducao a Programacao

Algoritmos e Programação

Estruturas de Dados Homogêneas (Vetores e Matrizes)

Vetor

É o agrupamento de várias informações, de mesmo tipo de dados, dentro de uma mesma variável. Os vetores são chamados também de matrizes unidimensionais.

inteiro V[10];

0 1 2 3 4 5 6 7 8 9V 45 32 66 2 0 12 5 77 31 10

Durante a execução do programa temos duas formas de atribuir valores aos vetores, a primeira delas é logo após a declaração, por exemplo:

Atribui duas notas e calcula a média.

inicioreal nota[2], media;nota[ 0 ] = 5.0;nota[ 1 ] = 7.0;media (nota[0] + nota[1])/2;escreva “A media e ”, media;

fim

A outra maneira é utilizando um laço, onde utilizamos um índice para indicar que elemento do vetor estamos acessando, por exemplo:

Recebe duas notas e calcula a média.inicio

real media, nota[2];inteiro i;para (i 0; i < 2; i i+1)

escreva “Digite a nota”, i+1;leia nota[ i ];

fim paramedia (nota[0] + nota[1])/2;escreva “A media e ”, media;

fim

Carrega um vetor de 10 posições com o valores de notas.

33

nome da

tamanho do

índice

Conteúdo

Nome da variável

Page 34: Introducao a Programacao

Algoritmos e Programação

inicioreal nota[10];inteiro i;para (i 0; i < 10; i i+1)

escreva “Digite a nota:”;leia nota[ i ];

fim parafimOutro exemplo: Faça um algoritmo que leia 100 números, depois receba um número qualquer e verifique se ele existe entre os 100 anteriores e imprima a(s) posição(ões) onde ele aparece dentro do vetor.

iniciointeiro N[100], i, comp;para (i 0; i<100; i i + 1)

escreva “Digite o numero”, i+1;leia N[ i ];

fim paraescreva “Digite um numero para localizar”;leia comp;para (i 0; i<100; i i + 1)

se (N[ i ] = comp)escreva i;

fim sefim para

fim

Composição de Vetores

0 1 2 3 4 5 6 7 8 9peso 46.5 66.1 99.1 33.1 14.2 13.0 67.5 58.8 48.0 54.1

0 1 2 3 4 5 6 7 8 9idade 27 28 15 12 64 13 20 34 28 44

Cadastro de Produtos

0 1 2 3 4 5 6 7 8 9codig

o

0 1 2 3 4 5 6 7 8 9preco

34

Page 35: Introducao a Programacao

Algoritmos e Programação

0 1 2 3 4 5 6 7 8 9quant

inicioreal preco[10];inteiro codigo[10], i, quant[10];escreva “Cadastro de produtos”;para (i 0; i<10; i i + 1)

escreva “Digite o codigo: ”;leia codigo[ i ];escreva “Digite o preco: ”;leia preco[ i ];escreva “Digite a quantidade: ”;leia quant[ i ];

fim paraescreva “Os valores em estoque por produto são:”;para (i 0; i<10; i i + 1)

escreva preco[ i ] * quant[ i ];fim para

fim

Em C++

Exemplos: Atribui duas notas e calcula a média.

#include <iostream.h>void main(){

float nota[2], media;nota[ 0 ] = 5.0;nota[ 1 ] = 7.0;media = (nota[0] + nota[1])/2;cout << “A media e ” << media;

}

Recebe duas notas e calcula a média.

#include <iostream.h>void main(){

float nota[2], media;int i;for (i=0; i < 2; i++){

cout << “Digite a nota ” << i+1;cin >> nota[ i ];

}media = (nota[0] + nota[1])/2;

35

Page 36: Introducao a Programacao

Algoritmos e Programação

cout << “A media e ” << media;}

Carrega um vetor de 10 posições com o valores de notas.#include <iostream.h>void main(){

float nota[10];int i;for (i=0; i < 10; i++){

cout << “Digite a nota ”;cin >> nota[ i ];

}}

Outro exemplo: Faça um algoritmo que leia 100 números, depois receba um número qualquer e verifique se ele existe entre os 100 anteriores e imprima a(s) posição(ões) onde ele aparece dentro do vetor.

#include <iostream.h>void main(){

int N[100], i, comp;for (i=0; i<100; i++){

cout << “Digite o numero”;cin >> N[ i ];

}cout << “Digite um numero para localizar”;cin >> comp;for (i=0; i<100; i++)

if (N[ i ] == comp)cout << i;

}

Exercício M

1) Faça um algoritmo que calcule a média de 10 alunos, considerando que cada aluno tenha 2 notas. As médias devem ser armazenadas em um vetor de 10 posições.

2) Faça um algoritmo que leia 50 elementos em um vetor e apresente-os.

3) Elabore um algoritmo que contenha um vetor A de 10 valores inteiros e leia esses valores a partir do teclado, depois calcule o dobro do valor dos elementos de índices pares e exiba esta informação.

4) Construa um algoritmo leia em um vetor de 5 valores inteiros e apresente a soma de todos os elementos lidos.

36

Page 37: Introducao a Programacao

Algoritmos e Programação

5) Faça um algoritmo que contenha dois vetores de 15 elementos e leia os valores, depois guarde no segundo o resultado da multiplicação do primeiro por 3, apresente os resultados.

6) Faça um programa que lê um vetor A[6] e o escreve. Conte, a seguir, quantos valores de A são negativos e escreva esta informação.

7) Escrever um programa que lê um vetor B[30] e o escreve. Substitua, a seguir, todos os valores pares de B por 1 e escreva novamente o vetor B.

37