Beruflich Dokumente
Kultur Dokumente
DISCIPLINA:
Algoritmo e Programação de Computadores
CURSOS:
Sistema de Informação
PROFESSOR:
Cleyton Ferrari
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 2
SUMÁRIO
1.3 Instruções....................................................................................................................................... 5
4.5 Atribuição..................................................................................................................................... 15
5 Expressões ............................................................................................................................................ 16
5.1.1 Soma......................................................................................................................................... 16
5.1.5 Exponenciação..........................................................................................................................17
5.1.6 Resto..........................................................................................................................................17
5.2 Relacional......................................................................................................................................17
6 Funções................................................................................................................................................. 21
7.3 Só Reforçando.............................................................................................................................. 33
1.1 Lógica
A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de
sistemas e programas, ela permite definir a seqüência lógica para o desenvolvimento.
Então o que é lógica?
1.3 Instruções
Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para
a realização ou emprego de algo”.
Em informática, porém, instrução é a informação que indica a um computador uma ação elementar
a executar.
Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é
necessário um conjunto de instruções colocadas em ordem seqüencial lógica.
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma
série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc...
É evidente que essas instruções têm que ser executadas em uma ordem adequada – não se podem
descascar as batatas depois de fritá-las.
Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o
resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.
1.4 Algoritmo
Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa.
Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 6
uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição,
devem ser claras e precisas.
Como exemplos de algoritmos podem citar os algoritmos das operações básicas (adição,
multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais
de aparelhos eletrônicos, como um videocassete, que explicam passo-a-passo como, por exemplo,
gravar um evento.
Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por exemplo:
“Chupar uma bala”.
Pegar a bala
Retirar o Papel
Chupar a bala
Jogar o papel no lixo
“Somar dois números quaisquer”.
Escrever o primeiro número no retângulo A
Escrever o segundo número no retângulo B
Some o número do retângula A com número do retângulo B e coloque o resultado no
retângulo C
Retângulo A Retângulo B Retângulo C
FAAr – Faculdades Associadas de Ariquemes
+ =
1.5 Programas
Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de
computador (C, Pascal, C#, Java entre outras) e que são interpretados e executados por uma
máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por
natureza muito específica e rígida em relação aos algoritmos da vida real.
2 Desenvolvendo Algoritmos
2.1 Pseudocódigo
Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à
posterior implementação em uma linguagem de programação, ou seja, quando for programar em
uma linguagem, por exemplo, C# (C Sharp), estaremos gerando código em C#. Por isso os algoritmos
são independentes das linguagens de programação. Ao contrário de uma linguagem de programação
não existe um formalismo rígido de como deve ser escrito o algoritmo.
O algoritmo deve ser fácil de interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário
entre a linguagem falada e a linguagem de programação.
Ser objetivo
Procurar usar palavras que não tenham sentido impreciso
2.3 Fases
Já foi apresentado que algoritmo é uma seqüência lógica de instruções que podem ser executadas.
É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um
algoritmo, como por exemplo:
COMO FAZER ARROZ DOCE
Ou então
CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três
fases fundamentais.
ENTRADA
» PROCESSAMENTO
» SAÍDA
Onde Temos:
Entrada: São os dados de entrada do algoritmo
Processamento: São os procedimentos utilizados para chegar ao resultado Final
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 8
3 Diagrama de Bloco
3.2 Simbologia
Existem diversos símbolos em um diagrama de bloco. No decorrer do curso apresentaremos os mais
utilizados.
Veja no quadro abaixo alguns dos símbolos que iremos utilizar:
Símbolo Função
Terminal
Processamento em geral
Exemplo: Calculo de dois números
Processamento
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não nos dizem nada. Veja no
exemplo a seguir:
Exemplo de diagrama de Bloco
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 11
Veja que no exemplo da bala seguimos uma seqüência lógica somente com informações diretas, já
no segundo exemplo da média utilizamos cálculo e exibimos o resultado do mesmo.
4.1 Constates
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 de constantes:
FAAr – Faculdades Associadas de Ariquemes
4.2 Variáveis
Variável é a representação simbólica dos elementos de certo conjunto. Cada variável corresponde a
uma posição de memória, cujo conteúdo pode ser alterado ao longo do tempo durante a execução
de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante.
Exemplo de variáveis:
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 13
A seguinte tabela mostra os tipos de variáveis e os valores possíveis de se armazenar em cada uma
delas.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 14
Nomes Válidos:
Media, alt, a2, PESO
Nomes Não-Válidos:
2w – começa por algarismo.
Media aluno – o caractere espaço não é permitido.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 15
Um dos objetivos de se declarar uma variável no início do algoritmo é para que seja alocada
(reservada) uma área na memória (endereço de memória) para a variável. Outro objetivo da
declaração de variáveis é que, após a declaração, o algoritmo sabe os tipos de operações que cada
variável pode realizar; explicando: algumas operações só podem ser realizadas com variáveis do
tipo inteiro, outras só podem ser realizadas com variáveis dos tipos inteiro ou real, outras só com
variáveis de caractere etc.
Exemplos:
int x;
bool opcao;
string texto1;
4.5 Atribuição
É a principal forma de se armazenar um dado em uma variável. Esse comando permite que você
forneça um valor a uma variável, onde o tipo desse valor tem de ser compatível com a variável.
Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a qualquer
momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “=”.
Identificador = expressão ;
Legenda:
Identificador é o nome da variável à qual está sendo atribuído um valor.
FAAr – Faculdades Associadas de Ariquemes
Exemplo:
x = 10; //Lê se: a variável x recebe o valor 10, ou, x recebe 10
opcao = false;
texto1 = "Cleyton Ferrari";
5 Expressões
O conceito de expressões em termos computacionais está intimamente ligado ao conceito de
expressão (ou fórmulas) matemáticas, onde um conjunto de variáveis e constantes numéricas
relaciona-se por meio de operadores compondo uma fórmula que, uma vez avaliada, resulta num
valor. As expressões dividem-se em:
5.1 Aritméticas
Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro
ou real. Somente o uso de operadores aritméticos e variáveis numéricas é permitido em expressões
deste tipo.
Como exemplo:
5.1.1 Soma
Na matemática, representada pelo sinal + e, em expressões em termos computacionais, pelo
mesmo sinal.
A + B Expressão que simboliza a soma do valor de duas variáveis.
2+3 Nessa expressão, o valor retornado é a soma dos valores dados, isto é, 5.
5.1.2 Subtração
FAAr – Faculdades Associadas de Ariquemes
5.1.3 Multiplicação
Na matemática, representada pelos sinais X ou . e, em expressões em termos computacionais, pelo
sinal *.
B*D Expressão que simboliza a multiplicação do valor de duas variáveis.
3*2 Nessa expressão, o valor retornado é o produto dos valores dados, isto é, 6.
5.1.4 Divisão
Na matemática, representada pelo sinal ÷ e, em expressões computacionais, pelo sinal /.
A / B Expressão que simboliza a divisão do valor de duas variáveis.
6/2 Nessa expressão, o valor retornado é a divisão dos valores dados, que, no caso, será 3.
5/2 Nessa expressão, o valor retornado é a divisão dos valores dados, que, no caso, será 2.5.
Dica: Normalmente, as linguagens de programação assumem que a divisão é uma operação que
retorna um valor REAL. Atenção especial, portanto, para variáveis que receberão o resultado de
uma divisão.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 17
5.1.5 Exponenciação
Na matemática, representada pela base e por um expoente e em expressões em termos
computacionais pela função Math.Pow( ).
Math.Pow(A, 2); Expressão que simboliza o valor da variável ao quadrado.
Math.Pow(3, 2); Nessa expressão, o valor retornado é o resultado da exponenciação do valor 3
ao quadrado 2 que, no caso, será equivalente a 9.
Math.Pow(2, 3); Nessa expressão, o valor retornado é o resultado da exponenciação do valor 2
ao cubo 3, que no caso será equivalente a 8.00.
5.1.6 Resto
É usado em expressões em termos computacionais quando se deseja encontrar o resto da divisão de
dois números inteiros. Em termos computacionais pelo símbolo %
K % Y Expressão que simboliza a intenção de achar o resto da divisão do valor da variável K pelo
valor da variável Y.
5 % 2 Nessa expressão, o valor retornado é o resto da divisão do primeiro pelo segundo número,
que, no caso, será equivalente a 1.
7 % 4 Nessa expressão, o valor retornado é o resto da divisão do primeiro pelo segundo número,
que, no caso, será equivalente a 3.
FAAr – Faculdades Associadas de Ariquemes
5.2 Relacional
Uma expressão relacional, ou simplesmente relação, é uma comparação realizada entre dois
valores de mesmo tipo básico. Estes valores são representados na relação através de constantes,
variáveis ou expressões aritméticas.
Como exemplos de operadores relacionais matematicamente conhecidos têm:
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 18
Símbolo Função
Decisão
0 1 0
1 0 0
1 1 1
Nesse exemplo, somente o quarto candidato seria chamado para a entrevista, pois o operador &&
(e) só considera a expressão como verdadeira se todas as expressões testadas forem verdadeiras.
Nesse exemplo, somente o primeiro candidato não seria chamado para a entrevista, pois o
operador || (ou) considera a expressão como verdadeira se pelo menos uma expressão testada for
verdadeira.
Camisa Saída
! (A > B) Falso
! (B < A) Falso
! (B <> B) Verdadeiro
! (A == B) Verdadeiro
a + b == 0 && c <> 1 Essa expressão verifica se o resultado da soma dos valores das variáveis
a e b é igual a 0 (zero) e (&&) se o valor da variável c é diferente de 1. O resultado será
considerado verdadeiro se as duas expressões relacionais foram verdadeiras.
Cor == “azul” || a * b > c Essa expressão verifica se o conteúdo armazenado na variável cor é
azul ou (||) se o resultado do produto dos valores variáveis a e b é maior do que o valor
armazenado na variável c. O resultado será considerado verdadeiro se, pelo menos uma das
expressões relacionais for verdadeira.
O resultado obtido de uma avaliação de uma expressão lógica é sempre um valor lógico, isto é,
falso ou verdadeiro. Por esse motivo, pode-se considerar uma única relação como sendo uma
expressão lógica.
6 Funções
Uma função é um instrumento (Sub–algoritmo) que tem como objetivo retornar um valor ou uma
informação.
A chamada de uma função é feita através da citação do seu nome seguido opcionalmente de seu
argumento inicial entre parênteses.
As funções podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o
seu interesse.
Exemplos:
FAAr – Faculdades Associadas de Ariquemes
Função em C# Descrição
Math.PI; Função que resulta no valor 3.14159265. Sem Argumentos
Função que resulta no valor do seno de um ângulo qualquer em
Math.Sin(x); radianos.
Função que resulta no valor do co-seno de um de um ângulo
Math.Cos(x); qualquer em radianos.
Função que resulta no valor d tangente de um ângulo qualquer em
Math.Tan(x); radianos.
Math.Abs(x); Função que resulta no valor absoluto de um número qualquer.
Função que resulta no valor do número e elevado a um número
Math.Exp(x); qualquer.
Função que resulta no valor do logaritmo neperiano de um número
Math.Log(x); qualquer.
Função que resulta no valor da raiz quadrada de um número
Math.Sqrt(x); positivo.
(int)x; Função que converte um número real em inteiro.
O método substring aceita como parâmetro a posição inicial que queremos obter e quantos
caracteres devem ser extraídos. Caso não seja informado o número de caracteres a ser extraído, a
função retornará o restante da string a partir da posição inicial informada.
A função String.Format é uma das funções mais versáteis da classe string. Esta função permite a
criação de uma string baseada em um padrão. Podemos colocar dentro do padrão da string de
formatação alguns tokens que poderam ser substituídos por variáveis passadas por parâmetro no
comando format.
No exemplo acima, o padrão da string (primeiro parâmetro) contém um token {0}. Este token indica
que este valor deve ser substituído pelo segundo parâmetro passado para a função (neste caso a
palavra “parâmetro”).
No exemplo acima, temos o padrão da string com mais de um token, com números de 0 à 2. A
função também recebe 3 parâmetros adicionais que correspondem aos valores que serão
substituídos na string. Além de informarmos os tokens, podemos informar regras de formatação que
serão utilizadas de acordo com o tipo de dado passado por parâmetro, conforme o exemplo.
// Codigo ineficiente
string sql;
sql = "SELECT * FROM Products";
sql += " WHERE CategoryId=1 AND";
sql += " AND UnitPrice>10";
// Codigo Eficiente
StringBuilder sb = new StringBuilder();
sb.Append("SELECT * FROM Products");
sb.Append(" WHERE CategoryId=1 AND");
sb.Append(" AND UnitPrice>10");
FAAr – Faculdades Associadas de Ariquemes
sql = sb.ToString();
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 26
Algoritmo 1
using System;
class Program
{
static void Main()
{
Console.Write("Aprendendo Algoritmos!!!");
}
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
Aprendendo Algoritmo!!!
Esse algoritmo faz com que seja exibida, na tela do computador, a mensagem: Aprendendo
Algoritmo!!!
Neste nosso algoritmo desenvolvido em C# é possível notar a semelhanças com as demais linguagens
de programação a baixo:
Linguagem: Java
Linguagem: Pascal
program imp1;
uses crt;
begin
writeln('Aprenda Algoritmo!!!');
end.
Linguagem: C
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Aprenda Algoritmo!!!");
return(0);
}
Agora que criamos o nosso primeiro algoritmo em C# é possível notar que o importante é a nossa
lógica e não a sintaxe da linguagem.
FAAr – Faculdades Associadas de Ariquemes
Algoritmo 2
using System;
class Program
{
static void Main()
{
Console.Write("Aprendendo algoritmos!!!");
Console.Write("Com Cleyton Ferrari");
}
}
Vídeo:
Embora tenhamos duas linhas de comandos, o que nos levaria a pensar que teríamos duas linhas no
vídeo, o interpretador só alimenta linha se assim especificarmos através do símbolo \n. Esse
símbolo é uma string e deverá vir entre aspas.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 28
Algoritmo 3
using System;
class Program
{
static void Main()
{
Console.Write("Aprendendo algoritmos!!!");
Console.Write("\nCom Cleyton Ferrari");
}
}
Vídeo:
Aprendendo algoritmo!!!
Com Cleyton Ferrari
Algoritmo 4
using System;
class Program
FAAr – Faculdades Associadas de Ariquemes
{
static void Main()
{
Console.Write("Aprendendo algoritmos!!!\n");
Console.Write("Com Cleyton Ferrari");
}
}
Vídeo:
Aprendendo algoritmo!!!
Com Cleyton Ferrari
Observe que o símbolo \n poderá ser colocado ao final da linha anterior ou no início da próxima
linha que produzirá o mesmo efeito, mas, lembre-se, sempre entre aspas.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 29
Algoritmo 5
using System;
class Program
{
static void Main()
{
Console.Write("Aprendendo algoritmo !!!\nCom Cleyton
Ferrari\n\nFica muito mais fácil !!!"); //digite tudo na mesma linha
}
}
Vídeo:
Observe que podemos, usando um único comando Console.Write() e fazendo uso do símbolo \n,
mostrar várias mensagens em várias linhas, inclusive deixando linha em branco quando colocamos
\n\n.
Ou simplesmente usar o comando Console.WriteLine(); que já quebra a linha automaticamente no
final de cada frase.
using System;
class Program
{
static void Main()
{
Console.WriteLine("Aprendendo algoritmo !!!");
Console.WriteLine("Com Cleyton Ferrari");
Console.WriteLine("Fica muito mais fácil !!!");
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 30
Algoritmo 6
using System;
class Program
{
static void Main()
{
int x;
x = 10;
Console.Write(x);
}
}
Vídeo:
10
Esse trecho é de muita importância, pois x recebe o valor 10. Como já vimos, na memória do
computador, existe uma variável chamada x e o valor 10 seria armazenado dentro da variável.
Quando o comando Console.Write(x) é executado, o valor de x, que está na memória do
computador, é exibido pelo comando no vídeo.
FAAr – Faculdades Associadas de Ariquemes
Algoritmo 7
using System;
class Program
{
static void Main()
{
int x;
x = 10;
Console.Write("Valor de x= {0}", x);
}
}
Vídeo:
Valor de x = 10
Esse trecho permite a exibição de uma mensagem e do conteúdo de uma variável na tela do
computador. Ao executar o comando Console.Write() o valor entre aspas {0} será substituído pelo
valor do primeiro parâmetro passado ao comando, no caso pelo valor da variável x.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 31
Algoritmo 8
using System;
class Program
{
static void Main()
{
int x;
x = 10;
Console.Write("Valor de x= {0}", x+1);
}
}
Vídeo:
Valor de x = 11
Esse trecho é bem parecido com o anterior. O conteúdo da variável x é copiado da memória e
acrescido de um, sendo impresso, após a string, no lugar de {0}, sem alterar o valor de x na
memória.
É o comando que permite que o usuário digite dados, possibilitando um “diálogo com o
computador”. O dado digitado é armazenado temporariamente em um registrador e, depois,
copiado para a posição de memória indicada no comando. Lembre-se de que o nome de uma
variável representa uma posição na memória.
Exemplo:
using System;
class Program
{
static void Main()
{
string nome = "";
Console.Write("Digite seu Nome: ");
nome = Console.ReadLine(); //Lê-se: leia um valor para a
variavel nome
Console.Write("Seu Nome é: {0}",nome);
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 32
Algoritmo 9
using System;
class Program
{
static void Main()
{
string c, c1, d, d1;
Console.Write("\n Digite palavra 1: ");
c = Console.ReadLine();
Console.Write("\n Digite palavra 2: ");
c1 = Console.ReadLine();
Console.Write("\n tamanho da 1 palavra: {0}", c.Length);
Console.Write("\n concatenando sem armazenar: {0}", c + c1);
d = c;
Console.Write("\n o conteúdo de d: {0}", d);
d1 = c + c1;
Console.Write("\n concatenação: {0}", d1);
Console.Write("\n primeiro caractere: {0}", c.Substring(0, 1));
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
tamanho da 1 palavra: 8
concatenando sem armazenar: TESTANDOUAL
o conteúdo de d: TESTANDO
concatenação: TESTANDOUAL
primeiro caractere: T
último caractere: L
todos menos o primeiro: ESTANDOUAL
o terceiro elemento: T
os três primeiro elementos: TES
os três últimos elementos: UAL
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 33
Observe que o usuário digitou TESTANDO para o valor da primeira palavra que foi armazenado na
variável c, depois foi solicitado que o usuário digita-se a segunda palavra, no caso, UAL, que foi
armazenado na variável c1, imprimiu na tela o tamanho da primeira palavra armazenada em c,
concatenou c com c1 sem armazenar em nenhuma variável e imprimiu na tela, copiou o conteúdo
de c para a variável d, imprimiu na tela o conteúdo de d, concatenou c e c1 e armazenou em d1, e
imprimiu na tela o valor de d1, imprimiu o primeiro caractere da variável c, o último da c1, todos
menos o primeiro da d1, o terceiro elemento da variável c, que neste caso é T, pois a função
Substring() começa a contar da posição zero, depois, imprimiu os três primeiros elementos de c,
os três últimos elementos de d1.
7.3 Só Reforçando
Todas as palavras reservadas são escritas com letras minúsculas.
O Operador de atribuição deverá ser formado pelo sinal =
Os identificadores (nome do algoritmo e das variáveis deverão começar por uma letra ou
algarismo).
Os comandos: Write(), ReadLine(), atribuição e as declaração de variáveis terminam com ;
8 Estruturas de Seleção
8.1 Conceitos
Nossos algoritmos até agora seguiram um mesmo padrão: entrava-se com dados, estes eram
processados e alguma informação era mostrada na tela.
Dessa forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos
conceitos, como a estrutura de seleção, nos dará uma visão maior da complexidade de tarefas que
ele poderá executar.
Vamos refletir sobre a importância dessa estrutura, lendo com atenção as afirmativas a seguir:
A. Distribuição gratuita de cestas básicas.
B. Distribuição gratuita de cestas básicas para famílias com 4 ou mais componentes.
C. Distribuição gratuita de ingressos para o teatro, sendo dois para pessoas do sexo feminino e
um para pessoas do sexo masculino.
Se observarmos essas afirmativas pode concluir que:
Na primeira, todas as pessoas recebem a cesta básica, o que equivaleria a um comando
seqüencial.
FAAr – Faculdades Associadas de Ariquemes
Na segunda, só recebem as cestas básicas as famílias com pelo menos quatro integrantes.
Na terceira, dependendo do sexo, recebe-se um ou dois ingressos.
Assim, podemos avaliar a importância do teste nas duas últimas afirmativas, pois ações diferentes
são executadas de acordo com o resultado.
Chupar Bala
FAAr – Faculdades Associadas de Ariquemes
Outro exemplo do nosso dia-a-dia: Imagine-se diante de um caixa eletrônico e suponha que sua
senha seja 1234.
Sintaxes
if (condição)
{
comando ; ou
< seqüência de comandos separados por ; >
}
A sintaxe acima representa à afirmativa B, pois se a família tiver, no mínimo, quatro componentes,
recebe a cesta básica; mas se a família tiver menos que quatro componentes não recebem nada.
if (condição)
{
comando ; ou
< seqüência de comandos separados por ; >
}
FAAr – Faculdades Associadas de Ariquemes
else
{
comando ; ou
< seqüência de comandos separados por ; >
}
A sintaxe acima representa à afirmativa C onde, dependendo do sexo, recebe-se um ou dois
convites.
Observações
a) A condição pode ser uma simples expressão relacional formada de dois operandos do
mesmo tipo e de um operador relacional ( >, <, >=, <=, == e !=).
A>B lê-se: o conteúdo da variável A é maior que o conteúdo da variável B?
A < 12 lê-se: o conteúdo da variável A é menor do que 12?
resp != “S” lê-se: o conteúdo da variável resp é diferente da letra S.
resp == “BRASIL” lê-se: o conteúdo da variável resp é igual a BRASIL?
b) A condição pode ser uma expressão lógica formada de pelo menos duas expressões
relacionais que precisarão ser unidas por um dos operadores lógicos (&& ou ||)
A >= 1 && A < 9 lê-se: o conteúdo da variável A é maior ou igual a 1 e
menor que 0?
resp == “S” || resp == “s” lê-se: o contudo da variável resp é igual a S ou igual a s?
4ª linha: }
Indica o fim do bloco caso a condição testada seja verdadeira.
5ª linha: else
Este comando faz parte da estrutura do se e só deverá ser usado quando pelo menos uma ação tiver
de ser executada se a condição testada for falsa.
6ª linha: {
Indica o início do bloco caso a condição testada seja falsa.
3ª linha: }
FAAr – Faculdades Associadas de Ariquemes
Algoritmo 10
using System;
class Program
{
static void Main(string[] args)
{
double numero = 0;
Console.Write("Digite um número: ");
numero = double.Parse(Console.ReadLine());
if (numero > 20)
{
Console.WriteLine("Metade: {0}", numero/2);
}
}
}
Vídeo:
Digite um número: 40
FAAr – Faculdades Associadas de Ariquemes
Metade: 20.0
Algoritmo 11
using System;
class Program
{
static void Main(string[] args)
{
double numero = 0;
Console.Write("Digite um número: ");
numero = double.Parse(Console.ReadLine());
if (numero % 2 == 0)
{
Console.WriteLine("PAR");
}
else
{
Console.WriteLine("IMPAR");
}
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 40
Vídeo:
Digite um número: 24
PAR
Digite um número: 25
IMPAR
Algoritmo 12
double a, b, c, max = 0;
Console.Write("Digite primeiro número: ");
a = double.Parse(Console.ReadLine());
Console.Write("Digite segundo número: ");
b = double.Parse(Console.ReadLine());
Console.Write("Digite terceiro número: ");
c = double.Parse(Console.ReadLine());
if ( a > b)
{
if (a > c)
{ max = a; }
else
{ max = c; }
}
else
{
if (b > c)
{ max = b; }
else
{ max = c; }
}
Console.WriteLine("O maior número é: {0}", max);
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 41
Vídeo:
Algoritmo 13
if ( num > 0)
{
Console.WriteLine("POSITIVO");
}
else
{
if (num < 0)
{
Console.WriteLine("NEGATIVO");
}
else
{
Console.WriteLine("NULO");
}
}
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 42
Vídeo:
Digite um número: -5
NEGATIVO
Digite um número: 4
POSITIVO
Digite um número: 0
NULO
{
static void Main(string[] args)
{
double num = 0;
Console.Write("Digite um número: ");
num = double.Parse(Console.ReadLine());
if (num > 0)
{ Console.WriteLine("POSITIVO"); }
if (num < 0)
{ Console.WriteLine("NEGATIVO"); }
if (num == 0)
{ Console.WriteLine("NULO"); }
}
}
Resposta: Esta solução, embora você consiga atingir os objetivos do algoritmo, apresenta um
grande inconveniente: sempre serão executados três testes, mesmo quando já tivermos
classificado o número. Entretanto, na 1ª solução, outro texto só será executado se ainda não
tivermos chegado a uma conclusão sobre o número.
Essa estrutura precisa de vários ciclos para ser executada; portanto, evite usá-la
desnecessariamente.
default:
comando1;
break;
}
Considerações:
1. A expressão é avaliada e o valor será comparado com um dos rótulos.
2. A opção default é opcional.
3. O rótulo será aqui definido com uma constante caracter ou uma constante numérica
inteira, pode ser usada constante caracter com mais de um caracter.
4. A estrutura é muito usada em algoritmos com menus, tornando-os mais claros do que
quando usamos if aninhados.
Algoritmo 14
Escrever um algoritmo que leia um peso na Terra e o número de um planeta e imprima o valor do
seu peso neste planeta. A relação de planetas é dada a seguir juntamente com o valor das
gravidades relativas à Terra:
# gravidade relativa planeta
1 0,37 Mercúrio
2 0,88 Vênus
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 44
3 0,38 Marte
4 2,64 Júpiter
5 1,15 Saturno
6 1,17 Urano
using System;
class Program
{
static void Main(string[] args)
{
int op = 0;
double pterra = 0;
Console.WriteLine("Planetas que podem ser analisados: ");
Console.WriteLine("1 Mercúrio");
Console.WriteLine("2 Vênus");
Console.WriteLine("3 Marte");
Console.WriteLine("4 Júpiter");
Console.WriteLine("5 Saturno");
Console.WriteLine("6 Urano");
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
No exemplo do diagrama de blocos abaixo, é recebido uma variável “Op” e testado seu conteúdo,
caso uma das condições seja satisfeita, é atribuído para a variável titulo a string “Opção X”, caso
contrário é atribuído a string “Opção Errada”.
FAAr – Faculdades Associadas de Ariquemes
Símbolo Função
Exemplo:
FAAr – Faculdades Associadas de Ariquemes
Sintaxe
Já vimos que os operadores ++ e -– são equivalentes aos comandos de atribuição quando a variável
é incrementada ou decrementada de 1; por isso, o primeiro e o terceiro exemplos poderiam ser
escritos assim:
a ++; A variável a é incrementada em 1.
x --; A variável x é decrementada de 1.
Observações
a. O identificador tem de ser do tipo int.
b. Os valores iniciais e finais poderão ser constantes numéricas inteiras, funções que retornem
números inteiros ou expressões que retornem números inteiros.
c. O valor que é incrementado ou decrementado da variável poderá ser constante ou outra
variável.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 48
Algoritmo 15
Criar um algoritmo que entre com cinco números e imprimir o quadrado de cada número.
using System;
class Program
{
static void Main(string[] args)
{
int c = 0;
int num = 0;
for (c = 1; c <= 5; c++)
{
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
Digite o 1º número: 2
4
Digite o 2º número: 4
16
Digite o 3º número: 5
25
Digite o 4º número: 8
64
Digite o 5º número: 12
144
Vamos explicar:
1. Após serem reservadas posições na Memória Principal para as variáveis c e num, é
executado o comando for.
2. O primeiro argumento c = 1 só é executado uma vez antes do loop.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 49
Algoritmo 16
Vídeo:
2
4
6
8
10
Vamos explicar:
1. Após ser reservada uma posição na Memória Principal para a variável c, o comando for é
executado.
2. O primeiro argumento c = 2 só é executado uma vez antes do loop.
3. O comando Console.WriteLine(c); é executado pela primeira vez.
4. Após }, o comando c = c + 2 é executado.
5. O comando c <= 10 é executado e enquanto a variável c estiver armazenando um valor
menor ou igual a 10, o bloco se repete; mas, quando o valor ultrapassar 10, o fluxo do
algoritmo passa para o primeiro comando após }.
6. Nenhuma série tem entrada de dados no bloco de repetição.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 50
1 1º abdominal
2 2º abdominal
3 3º abdominal
4 4º abdominal
5 5º abdominal
6 Quando ia contar o 6º abdominal, PAROU e voltou a correr
3 3ª volta na Lagoa
1 1º abdominal
2 2º abdominal
3 3º abdominal
4 4º abdominal
3 5 5º abdominal
4 6 Quando ia contar o 6º abdominal, PAROU e voltou a correr
6 Quando ia contar a 4ª volta, PAROU e foi para casa
Vejamos como poderíamos representar em algoritmo:
Algoritmo 17
using System;
class Program
{
static void Main(string[] args)
{
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 51
int voltaLagoa = 0;
int abdominais = 0;
for (voltaLagoa = 1; voltaLagoa <= 3; voltaLagoa++)
{
Console.WriteLine("{0}ª volta na Lagoa", voltaLagoa);
for (abdominais = 1; abdominais <= 5; abdominais++)
{
Console.WriteLine("{0}º abdominal", abdominais);
}
}
}
}
Vídeo:
1ª volta na Lagoa
1º abdominal
2º abdominal
3º abdominal
4º abdominal
5º abdominal
2ª volta na Lagoa
1º abdominal
2º abdominal
FAAr – Faculdades Associadas de Ariquemes
3º abdominal
4º abdominal
5º abdominal
3ª volta na Lagoa
1º abdominal
2º abdominal
3º abdominal
4º abdominal
5º abdominal
Você pode observar que, cada vez que chegava em frente ao Clube do Flamengo, começava a conta
a partir do 1 seus abdominais e só parava quando sua próxima contagem fosse 6.
Algoritmo 18
using System;
class Program
{
static void Main(string[] args)
{
int num;
while (num > 0)
{
Console.Write("Digite um número: ");
num = int.Parse(Console.ReadLine());
Console.WriteLine("Dobro do Número: {0}", num * 2);
}
}
}
Vídeo:
Explicando:
A primeira tendência quando aprendemos a estrutura do while é tentar montar o corpo da
repetição da mesma forma que fazíamos com o for.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 53
Mas tendo em vista que assumiremos que as variáveis não são inicializadas automaticamente,
teremos problema com a estrutura do while.
Como fazer um teste com uma variável que não tem nenhum valor?
Algoritmo 19
using System;
class Program
{
static void Main(string[] args)
{
int num;
Console.Write("Digite um número: ");
num = int.Parse(Console.ReadLine());
while (num > 0)
{
Console.WriteLine("Dobro do Número: {0}", num * 2);
}
}
}
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
Digite um número: 8
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
Dobro do Número: 16
... Observação: O algoritmo entra em loop
Explicando:
Tendo em vista que nossa experiência anterior falhou, nossa segunda tendência é deslocar a leitura
para fora da estrutura.
Mas, desta vez, teremos outro problema: o algoritmo entra em loop, pois nunca mais atribuímos
valor à variável num. É preciso interromper pressionando < ctrl >+< c >.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 54
Algoritmo 20
using System;
class Program
{
static void Main(string[] args)
{
int num;
Console.Write("Digite um número: ");
num = int.Parse(Console.ReadLine());
while (num > 0)
{
Console.WriteLine("Dobro do Número: {0}", num * 2);
Console.Write("Digite um número: ");
num = int.Parse(Console.ReadLine());
}
}
}
Vídeo:
Digite um número: 8
Dobro do número: 16
FAAr – Faculdades Associadas de Ariquemes
Digite um número: 45
Dobro do número: 90
Digite um número: 0
Explicando:
Depois de várias tentativas, percebemos que precisaríamos de um comando de leitura para poder
entrar na estrutura do while e um para poder sair.
Algoritmo 21
using System;
class Program
{
static void Main(string[] args)
{
int a;
a = 1;
while ( a <= 5 )
{
Console.WriteLine(a);
a++;
}
}
}
Vídeo:
1
2
3
4
FAAr – Faculdades Associadas de Ariquemes
Sua diferença em relação ao while é que ela testa ao final, significando que ela executa o trecho
pelo menos uma vez.
Muitas pessoas não entendem por que existe essa estrutura se a estrutura do while pode fazer o
que ela faz. Na verdade, tem muito programador que nem faz uso dela e, quando faz, é em
programas que usam menus:
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 56
Exemplo:
Sintaxe:
FAAr – Faculdades Associadas de Ariquemes
do
{
< bloco de comandos >
}
while(condição);
Algoritmo 22
using System;
class Program
{
static void Main(string[] args)
{
int a;
a = 1;
do
{
Console.WriteLine(a);
a++;
}
while (a <= 5);
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 57
Vídeo:
1
2
3
4
5
Agora veremos com criar um algoritmo que funcione através do menu a seguir:
Algoritmo 23
using System;
class Program
{
static void Main(string[] args)
{
string op, menor, p1, p2, p3, np = "";
int n = 0;
double num = 0;
do
{
FAAr – Faculdades Associadas de Ariquemes
Console.Clear();
Console.WriteLine("MENU – um pouco de tudo");
Console.WriteLine("A – Armazena na variável menor e imprime o nome que
tiver o menor número de caracteres entre três");
Console.WriteLine("B – Gera e imprime uma nova palavra");
Console.WriteLine("C – Calcula e imprime o dobro de um número");
Console.WriteLine("F - Finalizar");
Console.Write("OPÇÃO: ");
op = Console.ReadLine();
if (op == "A" || op == "a")
{
Console.Write("Digite 1ª palavra: ");
p1 = Console.ReadLine();
Console.Write("Digite 2ª palavra: ");
p2 = Console.ReadLine();
Console.Write("Digite 3ª palavra: ");
p3 = Console.ReadLine();
if (p1.Length < p2.Length)
menor = p1;
else
menor = p2;
if (p3.Length < menor.Length)
menor = p3;
Console.WriteLine(menor);
}
else
{
if (op == "B" || op == "b")
{
Console.Write("Digite uma palavra: ");
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 58
p1 = Console.ReadLine();
if (p1.Length > 5)
{
n = p1.Length - 1;
p2 = p1.Substring(0, 1);
p3 = p1.Substring(1, n);
np = p3 + p2;
Console.WriteLine(np);
}
else
Console.WriteLine("UUU" + p1 + "UUU");
}
else
{
if (op == "C" || op == "c")
{
Console.Write("Digite um número: ");
num = double.Parse(Console.ReadLine());
if (num > 0)
Console.WriteLine("Dobro do número: {0}", num * 2);
else
Console.WriteLine("NãoPode!");
}
else
{
if (op == "F" || op == "f")
Console.WriteLine("Programa Finalizado");
FAAr – Faculdades Associadas de Ariquemes
else
Console.WriteLine("Opção Invalida!");
}
}
}
Console.ReadLine();
} while (op != "F" && op != "f");
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 59
Vídeo:
Dicas:
2 4 5 8 12 3 56 34
0 1 2 3 4 5 6 7
A[ 2 4 5 8 12 3 56 34 ]
Esse é um vetor de 8 elementos, isto é, tem 8 variáveis, todas com o mesmo nome e diferentes por
sua posição dentro do arranjo que é indicada por um índice.
FAAr – Faculdades Associadas de Ariquemes
Quando se tem somente uma linha, podemos omiti-la e colocar somente a coluna.
A0=2 A1=4 A2=5 A3=8 A4=12 A5=3 A6=56 A7=34
Em algoritmos, representamos da seguinte forma:
A[0]=2 A[1]=4 A[2]=5 A[3]=8 A[4]=12 A[5]=3 A[6]=56 A[7]=34
Para dimensionar um vetor, usamos o seguinte comando na declaração de variáveis:
[5] 5 elementos ( de 0 a 4 )
Um algoritmo com vetor implica vários trechos para que possa funcionar corretamente. Esses
trechos são independentes.
TRECHOS DE DIMENSIONAMENTO – já visto anteriormente.
TRECHO DE ENTRADA DE DADOS
o Normalmente, uma estrutura de repetição.
o Se for a estrutura do for, deverá ter o valor final igual à última posição do vetor -1.
o Se for a estrutura do while ou do while, deverá ter uma variável que será
incrementada e nunca poderá assumir um valor igual ou maior do que a última
posição do vetor.
for (L = 0; L <= < tamanho vetor - 1 >; L++)
{
Console.Write("Digite o {0}º nome: ", L+1);
nomes[L] = Console.ReadLine();
}
o O trecho anterior poderá ser incrementado com outros comandos;
o Nunca deverá ter um comando Write ou WriteLine tendo como argumento o
nomedovetor [L].
o Poderá ter: estrutura de seleção, atribuição, outro for etc.
TRECHO DE SAÍDA
FAAr – Faculdades Associadas de Ariquemes
Algoritmo 24
Criar um algoritmo que entre com cinco nomes e imprima uma listagem contendo todos os nomes.
using System;
class Program
{
static void Main(string[] args)
{
int L = 0;
string[] nomes = new string[5];
//trecho de entrada
for (L = 0; L <= 4; L++)
{
Console.Write("Digite o {0}º nome: ", L+1);
nomes[L] = Console.ReadLine();
}
//fim do trecho de entrada
//trecho de saída
for (L = 0; L <= 4; L++)
{
Console.WriteLine(nomes[L]);
}
FAAr – Faculdades Associadas de Ariquemes
Vídeo:
Algoritmo 25
Criar um algoritmo que armazene nome e duas notas de 5 alunos e imprima uma listagem contendo
nome, as duas notas e a média de cada aluno.
using System;
class Program
{
static void Main(string[] args)
{
int L = 0;
string[] nomes = new string[5];
double[] pr1 = new double[5];
double[] pr2 = new double[5];
double[] media = new double[5];
//trecho de entrada
for (L = 0; L <= nomes.Length - 1; L++)
{
Console.Write("Digite o {0}º nome: ", L + 1);
nomes[L] = Console.ReadLine();
Console.Write(">>Digite a 1ª nota: ");
FAAr – Faculdades Associadas de Ariquemes
pr1[L] = double.Parse(Console.ReadLine());
Console.Write(">>Digite a 2ª nota: ");
pr2[L] = double.Parse(Console.ReadLine());
media[L] = (pr1[L] + pr2[L]) / 2;
}
//fim do trecho de entrada
//trecho de saída
for (L = 0; L <= nomes.Length - 1; L++)
{
Console.WriteLine("{0} - {1}", L + 1, nomes[L]);
Console.WriteLine("{0:0.00} - {1:0.00} - Média:
{2:0.00}", pr1[L], pr2[L], media[L]);
}
//fim do trecho de saída
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 64
Vídeo:
1ª Fase
1º passo: Se o nome da posição 0 na ordem alfabética vier depois do nome na posição 1, então
inverta-os. Como isso não acontece tudo fica igual.
ANTES DEPOIS
NOMES AUX NOMES
0 JOAO 0 JOAO
1 RUI 1 RUI
2 IVO 2 IVO
3 BIA 3 BIA
4 ANA 4 ANA
2º passo: Se o nome da posição 0 na ordem alfabética vier depois do nome na posição 2, então
inverta-os.
FAAr – Faculdades Associadas de Ariquemes
ANTES DEPOIS
NOMES AUX NOMES
0 JOAO JOAO 0 IVO
1 RUI 1 RUI
2 IVO 2 JOAO
3 BIA 3 BIA
4 ANA 4 ANA
3º passo: Se o nome da posição 0 na ordem alfabética vier depois do nome na posição 3, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 IVO IVO 0 BIA
1 RUI 1 RUI
2 JOAO 2 JOAO
3 BIA 3 IVO
4 ANA 4 ANA
4º passo: Se o nome da posição 0 na ordem alfabética vier depois do nome na posição 4, então
inverta-os.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 66
ANTES DEPOIS
NOMES AUX NOMES
0 BIA BIA 0 ANA
1 RUI 1 RUI
2 JOAO 2 JOAO
3 IVO 3 IVO
4 ANA 4 BIA
Após essas comparações e trocas, conseguimos colocar na posição 0 o nome ANA.
Partiremos para a busca do segundo nome da lista.
Não mais nos preocuparemos com a posição 0.
2ª Fase
1º passo: Se o nome da posição 1 na ordem alfabética vier depois do nome na posição 2, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 ANA RUI 0 ANA
1 RUI 1 JOAO
FAAr – Faculdades Associadas de Ariquemes
2 JOAO 2 RUI
3 IVO 3 IVO
4 BIA 4 BIA
2º passo: Se o nome da posição 1 na ordem alfabética vier depois do nome na posição 3, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 ANA JOAO 0 ANA
1 JOAO 1 IVO
2 RUI 2 RUI
3 IVO 3 JOAO
4 BIA 4 BIA
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 67
3º passo: Se o nome da posição 1 na ordem alfabética vier depois do nome na posição 4, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 ANA IVO 0 ANA
1 IVO 1 BIA
2 RUI 2 RUI
3 JOAO 3 JOAO
4 BIA 4 IVO
Após essas comparações e trocas, conseguimos colocar na posição 1 o nome BIA.
Partiremos para a busca do terceiro nome da lista.
Não mais nos preocuparemos com as posições 0 e 1.
3ª Fase
1º passo: Se o nome da posição 2 na ordem alfabética vier depois do nome na posição 3, então
inverta-os.
ANTES DEPOIS
FAAr – Faculdades Associadas de Ariquemes
2º passo: Se o nome da posição 2 na ordem alfabética vier depois do nome na posição 4, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 ANA JOAO 0 ANA
1 BIA 1 BIA
2 JOAO 2 IVO
3 RUI 3 RUI
4 IVO 4 JOAO
Após essas comparações e trocas, conseguimos colocar na posição 2 o nome IVO.
Partiremos para a busca do quarto nome da lista.
Não mais nos preocuparemos com as posições 0, 1 e 2.
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 68
4ª Fase
1º passo: Se o nome da posição 3 na ordem alfabética vier depois do nome na posição 4, então
inverta-os.
ANTES DEPOIS
NOMES AUX NOMES
0 ANA RUI 0 ANA
1 BIA 1 BIA
2 IVO 2 IVO
3 RUI 3 JOAO
4 JOAO 4 RUI
Conclusões
Apesar de termos cinco nomes só tiveram quatro fazes, pois quando comparamos o
penúltimo com o último foi diminuído em cada fase. Isso se explica porque o número de
combinação também estava diminuído, uma vez que diminuía o número de nomes abaixo do
que estava em evidência.
Vamos tentar montar o trecho de ordenação:
FAAr – Faculdades Associadas de Ariquemes
1ª Linha:
for ( L = 0; L <= 4; L++) Por que de 0 até < 4?
Porque as fases envolveram as buscas das posições 0,
1, 2 e 3.
2ª Linha:
{ Inicia o bloco do para.
3ª Linha:
for ( c = L + 1; c <= 4; c++) Por que de L + 1 até <= 4?
Porque, em cada fase, comparávamos a posição em
evidência com todas as outras posições até a última.
4ª Linha:
{ Inicia o bloco do para.
5ª Linha:
if ( Pense no L como sendo a fase e, em c como sendo
string.CompareOrdinal(nomes[L], uma das etapas da fase.
nomes[c]) > 0)
6ª Linha:
{ Inicia o bloco do se.
7ª Linha / 8ª Linha / 9ª Linha:
aux = nomes[L]; Este trecho permite a troca entre as duas variáveis.
nomes[L] = nomes[c];
nomes[c] = aux;
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 69
10ª Linha:
} Finaliza o bloco do se.
11ª Linha:
} Finaliza o bloco para.
12ª Linha:
} Finaliza o bloco do para.
Programa de Ordenação
using System;
class Program
{
static void Main(string[] args)
{
int L = 0;
int c = 0;
string[] nomes = new string[5];
string aux = "";
//trecho de entrada
for (L = 0; L <= nomes.Length - 1; L++)
{
Console.Write("Digite o {0}º nome: ", L + 1);
nomes[L] = Console.ReadLine();
FAAr – Faculdades Associadas de Ariquemes
}
//fim do trecho de entrada
//trecho de processamento/ORDENAÇÃO
for ( L = 0; L <= 4; L++)
{
for ( c = L + 1; c <= 4; c++)
{
if ( string.CompareOrdinal(nomes[L], nomes[c]) > 0)
{
aux = nomes[L];
nomes[L] = nomes[c];
nomes[c] = aux;
}
}
}
//fim do trecho de processamento
//trecho de saída
for (L = 0; L <= nomes.Length - 1; L++)
{
Console.WriteLine("{0} - {1}", L + 1, nomes[L]);
}
//fim do trecho de saída
}
}
Prof. Cleyton Ferrari – cleytonferrari@hotmail.com – (69) 9975-0504
Algoritmo e Programação de Computadores 70
Algoritmo 26
Criar um algoritmo que armazene cinco nomes em um vetor e depois possa ser digitado um número
que corresponde a uma pessoa imprimir esse nome.
using System;
class Program
{
static void Main(string[] args)
{
int L = 0;
int num = 0;
string[] nomes = new string[5];
for (L = 0; L <= nomes.Length - 1; L++)
{
Console.Write("Digite o {0}º nome: ", L + 1);
nomes[L] = Console.ReadLine();
}
Console.Write("Digite o número da pessoa: ");
num = int.Parse(Console.ReadLine());
while (num < 1 || num > 5)
{
Console.WriteLine("Número fora do intervalo");
FAAr – Faculdades Associadas de Ariquemes
Vídeo: