Você está na página 1de 24

Universidade do Grande ABC - Anhanguera

ATPS:
Construo de Algoritmos

Santo Andr
2014
1

Universidade do Grande ABC - Anhanguera

Fernando Henrique Correia / R.A. 8485939792


Natlia Thom / R.A. 9093451120
Renato Carnevali Bber / R.A. 8094909772
Ronaldo Cesar Dupim / R.A. 8407994110
Sidnei Pinhata Junior / R.A. 8097915607
Vinicius Tadeu Clementino de Oliveira / R.A. 8406983462

ATPS:
Atividade Supervisionada desenvolvida no 2 Bimestre do 1 ano do curso
Tecnologia de Redes de computadores sobre a matria Algoritmos ministrada por
Prof Claudio Buranelo na Universidade do Grande ABC Anhanguera

Santo Andr
2014
2

RESUMO

No documento apresentado abaixo, relatamos solues para os problemas 1, 2, 3 e 4,


utilizando somatria, vetores e matrizes, com fluxogramas e para pessoas leigas temos a
pseudolinguagem.

SUMRIO
1. Capa.......................................................................................................................... Pg 1
2. Contracapa............................................................................................................... Pg 2
3. Resumo..................................................................................................................... Pg 3
4. Sumrio.................................................................................................................... Pg 4
5. Introduo............................................................................................................... Pg 5
6. Desenvolvimento...................................................................................... Pg 6 at Pg 23
7. Concluso................................................................................................................ Pg 24
8. Referncias Bibliogrficas..................................................................................... Pg 25

Introduo
Como citado no trabalho abaixo, utilizamos a linguagem de programao C++ junto do
programa DEV C++, para criarmos algoritmos que possam facilitar os problemas com
clculos elevados, utilizando-se de matrizes e vetores.

Desenvolvimento

Etapa 1 Problema 1
Definir um nmero inteiro N que ser o nmero de casos de teste. Cada caso de teste uma
linha que contm dois nmeros inteiros X e Y.
algoritmo "Soma de dois nmeros." //Incio do programa
var
num1,num2,soma:inteiro
inicio
escreva("Digite o 1 e o 2 nmero: ")
leia(num1)
leia(num2)
Se (num1 mod 2 =1) ou (num2 mod 2 =1) entao
soma <- num1 + num2
escreva("A soma dos nmeros : ",soma)
Fimse
fimalgoritmo

1. Identificar os dados e variveis.


6

var
num1,num2,soma:inteiro

//Declara as variveis.

inicio
escreva("Digite o 1 nmero: ")
leia(num1)

//Faz a leitura do primeiro nmero.

escreva("Digite o 2 nmero: ")


leia(num2)

//digitar o primeiro numero

//digitar o segundo numero

//Faz a leitura do segundo nmero.

Se (num1 mod 2 =1) ou (num2 mod 2 =1) entao //Verifica a diviso dos nmeros por
2. Se o resto da diviso = 1 ento
soma <- num1 + num2

//A varivel soma vai receber a soma dos nmeros (no

caso: num1 + num2)


escreva("A soma dos nmeros : ",soma)

//Vai mostrar o resultado dos nmeros.

Fimse
fimalgoritmo

//Fim do programa

2. Descrever o algoritmo em representao grfica e em pseudo-linguagem1.

INICIO

Digite o 1
nmero

Digite o 2
nmero

No

Se num1 e num2 sobrar 1


Faa

Sim
soma = num1+num2

A soma dos
nmeros : soma

Fim

Etapa 2 Problema 1
Andreia est aprendendo Programao de Computadores. Ela acha tudo muito fcil, muito
simples. Ela vai fazer um pequeno programa que l os nomes de seus amigos e a distncia de
sua casa at a casa de cada um deles.
algoritmo "distancia"
var
nome_amigo, cont: caracter
soma, media: real
distancia, quant: inteiro
inicio
soma <- 0
quant <- 0
repita
escreva("Digite o nome do amigo: ")
leia(nome_amigo)
escreva("Digite a distancia do amigo: ")
leia(distancia)
enquanto (distancia <= 0) faca
escreva("Digite novamente a distancia: ")
leia(distancia)
fimenquanto
9

quant <- quant+ 1


soma <- soma + dist
escreva("Quer saber outro amigo? [S/N]: ")
leia(cont)
ate ((cont= "S") E (cont ="s"))
media <- soma / quant
escreva("Distncia entre a casa da Andria e a casa dos amigos de: ", media, ".0")
fimalgoritmo

10

1. Identificar os dados e variveis.

algoritmo "distancia"
var
nome_amigo, cont: caracter

//variaveis

soma, media: real


distancia, quant: inteiro
inicio
soma <- 0

//soma recebe 0

quant <- 0

//quant recebe 0

repita
escreva("Digite o nome do amigo: ")
leia(nome_amigo)

//digitar o nome do amigo

//ler o nome do amigo

escreva("Digite a distancia do amigo: ")


leia(distancia)

//ler distancia

enquanto (distancia <= 0) faca

//se distancia for 0 faa

escreva("Digite novamente a distancia: ")


leia(distancia)

//digitar a distancia

//digitar novamente a distancia

//ler novamente distancia

fimenquanto
quant <- quant+ 1

//quantidade recebe quantidade +1


11

soma <- soma + dist

//soma recebe soma + distancia

escreva("Deseja saber a distancia de outro amigo? [S/N]: ")

//deseja saber a

distancia entre outro amigo?


leia(cont)

//leia cont

ate ((cont= "S") E (cont ="s"))


media <- soma / quant

//se cont for S ou s faa


//media recebe soma dividido pela quantidade

escreva("Distncia entre a casa da Andria e a casa dos amigos de: ", media, ".0")
//mostrar ao usurio a distancia entre a casa da Andreia ate o amigo
fimalgoritmo

12

2. Descrever o algoritmo em representao grfica e em pseudo-linguagem.

Inicio

Digite Nome

Digite Distancia

Se distancia = 0

No

Distancia invalida

Se digitar n ou N

Sim

Se digitar s ou S

Media <- soma / distancia

A distancia : media

FIM
13

Etapa 3 Problema 3
Joo quer montar um painel contendo diferentes nmeros de LEDs. Como no tm muitos,
no tem certeza se vai ser capaz de montar o nmero desejado.
C++

#include <stdio.h>
main()
{
int v,n,num_leds[10]={6,2,5,5,4,5,6,3,7,6}, num, c, aux, total;
for(c=0; c<=n; c++)
{
printf("Digite o numero desejado: ");
scanf("%d",&v);
aux = v;
total = 0;
while (aux>0)
{
num = aux % 10;
total += num_leds[num];
aux /= 10;
}
printf("O numero de LEDS : %d \n", total);
}
}

1. Identificar os dados e variveis.


#include <stdio.h> //Biblioteca
main() //principal
{
//Inicio
int v,n,num_leds[10]={6,2,5,5,4,5,6,3,7,6}, num, c, aux, total; // Variaveis do tipo inteiro
for(c=0; c<=n; c++) // Contador de 0 ate N
{ //inicio
printf("Digite o numero desejado: "); // mensagem para o usurio digitar o numero
scanf("%d",&v); // ler o valor digitado
aux = v; // aux vai receber o valor digitado
total = 0;
// total igual a zero
while (aux>0) // enquanto aux receber zero ento faa
{ // inicio
num = aux % 10; // num recebe MOD 10
total += num_leds[num]; // total recebe atribuio de adio pelo num_leds
aux /= 10; //aux recebe atribuio de diviso por 10
} // Fim while
printf("O numero de LEDS : %d \n", total); //Imprimir resultado
} // Fim for
} //Fim
14

2. Descrever o algoritmo em pseudo-linguagem usando mdulos.


Pseudo-linguagem
INICIO
Variaveis
Inteiro: v,n,num_leds[10]={ 6,2,5,5,4,5,6,3,7,6}, num, c, aux, total;
PARA c=0 AT c<=n FAA
Inicio PARA
Escreva(Digite o numero desejado: );
Leia (v)
Aux <- v
Total <-0
ENQUANTO (aux>0)
Inicio ENQUANTO
num <-aux %10
total + <-num_leds[num]
aux / <-10
Fim ENQUANTO
Escreva(O numero de LEDS : , total);
Fim PARA
FIM

3. Apresentar o passo a passo do exemplo numrico apresentado no enunciado do


problema e de outro escolhido pelo grupo para mostrar o funcionamento correto do
algoritmo. Sugere-se usar desenhos e/ou representaes grficas sempre que possvel.

Passo 1

15

Passo 2

Passo 3

16

Etapa 4 Problema 4
O Problema de Josephus definido como mostrado a seguir. Vamos supor que N pessoas
esto organizadas em um crculo e que temos um inteiro positivo M N. Comeando com
uma primeira pessoa designada, prosseguimos em torno do crculo, removendo cada M-sima
pessoa. Depois que cada pessoa removida, a contagem prossegue em torno do crculo
restante.

#include <stdio.h>
main()
{
int pessoa[1000], N, M, a, b, c, d;
printf("Digite o nmero de pessoas: ");
scanf("%d", N);
printf("Digite o valor de circulos: ");
scanf("%d", M);
while (M>N)
{
printf("valor invalido, por favor digite um valor menor que 1000: ");
scanf("%d", M);
}
for (c=0; c<N; c++)
{
pessoa[a]:a ;
c:0;
d:1;
while (c<N)
{
17

b:0;
while (b<M)
while (pessoa[d]<0)
if (d=N)
{
d:1
}
else
{
d:1+1
}
}
printf("a ordem : \n");
scanf("%d", b);
printf("numero de pessoas: \n");
scanf("%d", d);
pessoa[d]:-d
c:c+1
}
}

18

1. Identificar os dados e variveis.


#include <stdio.h>
main()
{
int pessoa[1000], N, M, a, b, c, d;

//variaveis

printf("Digite o nmero de pessoas: ");


scanf("%d", N);

// digitar o numero de pessoas

//ler o numero de pessoas digitados

printf("Digite o valor de circulos: ");


scanf("%d", M);

//digitar o valor de circulos

//ler o valor de circulos

while (M>N)

//enquanto M maior que N faa

{
printf("valor invalido, por favor digite um valor menor que 1000: "); // mostrar
valor invalido
scanf("%d", M);

//ler novamente valor

}
for (c=0; c<N; c++)

//contar de 0 ate o valor digitado

{
pessoa[a]:a ;
c:0;
d:1;
while (c<N)

// enquanto cantor menor que N

{
b:0;
while (b<M)

//enquanto b menor que M

while (pessoa[d]<0)
if (d=N)

//enquanto pessoa <0 faa

//se d for igual a N


19

{
d:1
}
Else

//seno

{
d:1+1
}
}
printf("a ordem : \n");
scanf("%d", b);

//mostre a ordem

//leia a ordem

printf("numero de pessoas: \n");


scanf("%d", d);

//mostre numero de pessoas

//leia numero de pessoas

pessoa[d]:-d
c:c+1
}
}

20

2. Descrever o algoritmo em pseudo-linguagem usando mdulos


var
pessoa: vetor[1000] N, M, a, b, c, d: inteiro
inicio
escreva("Digite o nmero de pessoas: ")
leia(N)
escreva("Digite o valor de circulos: ")
leia (M)
enquanto (M > N) faa
escreva("Valor invlido, por favor digite um valor menor que 1000: ")
leia (M)
fimenquanto
para a de 0 ate N faa
pessoa[a] <- a
fimpara
c <- 0
d <- 1
enquanto (c < N) faa
d <- 0
enquanto (b < M) faa
enquanto (pessoa[a] < 0) faa
se (d = N) ento
d <- 1
seno
d <- d + 1
fimse
fimenquanto
b <- b + 1
fimenquanto
escreva("A ordem : ")
leia(b)
escreva(numero de pessoas: )
leia(d)
pessoa[d] <- -d
c <- c + 1
fimenquanto
fimalgoritmo

21

3. Apresentar o passo a passo do exemplo numrico apresentado no enunciado do


problema e de outro escolhido pelo grupo para mostrar o funcionamento correto do
algoritmo. Sugere-se usar desenhos e/ou representaes grficas sempre que possvel.
Passo 1

Passo 2

22

Concluso
Nossos colaboradores chegamos em uma concluso que: a utilizao da linguagem C++ nos
proporciona a ferramentas de simplificao de clculos, com varias funes diferentes para
assim ser simples para o usurio e completo de recursos.

23

Referncias bibliogrficas.
http://www.youtube.com/watch?v=dZq7l9Oj_c&list=PLE88CDBBDB041CC82&index=
1
http://www.facom.ufu.br/~claudio/Cursos/PP/Docs/Visualg2.pdf
https://drive.google.com/a/anhanguera.com/?tab=mo#folders/0ByrqRhRetWzEcE15
R19pUlZubkU
https://drive.google.com/a/anhanguera.com/?tab=mo#folders/0ByrqRhRetWzEcE15
R19pUlZubkU
https://drive.google.com/a/anhanguera.com/?tab=mo#folders/0ByrqRhRetWzEcE15
R19pUlZubkU

24

Você também pode gostar