• Nenhum resultado encontrado

Introdução à Computação

N/A
N/A
Protected

Academic year: 2021

Share "Introdução à Computação"

Copied!
21
0
0

Texto

(1)

APROG

Civil

Introdução à Computação

(2)

APROG

Civil

Conteúdo

Ciclo

For ... Next

Apresentação da sintaxe e de exemplos deste ciclo.

Validação

de entrada de dados

Apresentação de dois algoritmos de validação de entrada de

dados através de InputBox.

Ciclos

encadeados

(3)

APROG

Civil

Ciclo For … Next

A estrutura FOR...NEXT permite construir de uma

forma compacta ciclos que percorrem o conjunto de

valores de um intervalo

predefinido

.

Sintaxe (geral)

Para <variável> = <valor inicial> até <valor final> <bloco de instruções>

Próximo valor <variável>

Explicação

A

variável de controlo

do ciclo vai percorrer o intervalo de valores

compreendidos entre o

valor inicial

e o

valor final

.

O ciclo termina quando o valor dessa variável ultrapassar o

valor

final

(num ciclo crescente).

A

variável de controlo

do ciclo deve ser do tipo integer e o seu

incremento (ou decremento) tem que ser um valor inteiro.

(4)

APROG

Civil

Sintaxe do ciclo For … Next

Há duas variantes deste ciclo.

Ciclo com incremento unitário

For <variável> = <val_inicial> To <val_final> <bloco de instruções>

Next

Ciclo com incremento definido pelo programador (positivo ou

negativo)

For <variável> = <val_inicial> To <val_final> Step <valor> <bloco de instruções>

Next Em ambos os casos:

• o incremento ou decremento da variável de controle do ciclo é

automático.

• A condição de funcionamento do ciclo é implícita.

(5)

APROG

Civil

Exemplo de aplicação

Elabore um programa que leia uma sequência de N

números inteiros, em que N é dado pelo utilizador. O

programa deverá apresentar a média dos números

introduzidos. Deverá ainda apresentar cada um dos

números lidos.

Sugestão:

Como o número de elementos a ler é antecipadamente

conhecido (neste caso, dado pelo utilizador) pode ser

utilizado um ciclo For.

(6)

APROG

Civil

Resolução - Form

txtNE - TextBox para introdução do número de elementos a ler

InputBox para leitura dos elementos

lstNUm - ListBox para apresentar os números lidos

(7)

APROG

Civil

Resolução - Código

Option Explicit

Private Sub cmdLer_Click()

Dim ne As Integer, x As Integer, s As Long, num As Integer lstNum.Clear lblMed.Caption = "" ne = Val(txtNE.Text) If ne <= 0 Then

MsgBox "Não há elementos a considerar!“, vbCritical Else

For x = 1 To ne

num = Val(InputBox("Elemento nº " & x)) lstNum.AddItem num s = s + num Next lblMed.Caption = s / ne End If End Sub

Leitura e validação do número de elementos da sequência.

Termina quando x ultrapassar o valor de ne

Incrementa x e volta ao início do ciclo.

A variável de controlo não pode ser alterada dentro

(8)

APROG

Civil

Execução passo a passo

Iteração ne x x <= ne num s 3 0 0 0 1 1 True 2 0+2 -> 2 2 2 True 3 2+3 -> 5 3 3 True 4 5+4 -> 9 4 4 False Teste com sequência de 3 elementos: 2,3,4 ... ne = Val(txtNE.Text) If ne <= 0 Then MsgBox "Não há... Else For x = 1 To ne num = Val(InputBox...) lstNum.AddItem num s = s + num Next End if ...

(9)

APROG

Civil

Ciclos encadeados

Elabore um programa que apresente numa ListBox

todos as capicuas existentes num intervalo dado pelo

utilizador (os limites do intervalo devem ser

validados).

Resolução

Um número é capicua se for idêntico à sequência dos seu

algarismos, por ordem inversa.

É preciso verificar se cada um dos números do intervalo é

capicua.

((((0*10+5)*10+4)*10+3)*10+2)*10+1 -> 54321 12345 <> 54321 => não é capicua!

(10)

APROG

Civil

Resolução - Form

Option Explicit

Private Sub cmdSair_Click() End

End Sub

lstCap – ListBox com as capicuas do intervalo

txtInf e txtSup – TextBoxes com limite inferior e superior

MsgBox com a mensagem de erro no intervalo.

(11)

APROG

Civil

Private Sub cmdProc_Click()

Dim num As Long, aux As Long, cap As Long, alg As Integer Dim inf As Long, sup As Long

lstCap.Clear

inf = Val(txtInf.Text) sup = Val(txtSup.Text)

If inf < 0 Or inf > sup Then

MsgBox "Atenção: Intervalo errado!", vbCritical Else

For num = inf To sup aux = num

cap = 0

Do While aux <> 0 alg = aux Mod 10 aux = aux \ 10

cap = cap * 10 + alg Loop

If cap = num Then

lstCap.AddItem cap End If Next End If End Sub

Resolução - Código

Leitura e validação dos limites do intervalo

É calculado o “inverso” de cada número do intervalo.

Se o número for igual ao inverso

Cada número é copiado para aux de forma a ser processado sem afectar o valor de num

A variável de controle (v.c.) do ciclo num foi também usada para guardar os sucessivos valores a processar. Fizeram-se coincidir os limites da gama a processar com os valores

(12)

APROG

Civil

Resolução - Traçagem

Iteração alg aux cap aux <> 0 0 121 0 1 TRUE 1 12 1 2 TRUE 2 1 12 3 TRUE 1 0 121 4 FALSE aux = num cap = 0 Do While aux <> 0 alg = aux Mod 10 aux = aux \ 10

cap = cap * 10 + alg Loop

Teste com num = 121

(13)

APROG

Civil

Validação de entrada de dados

Problema:

Pretende-se validar os dados introduzidos pelo utilizador

durante um ciclo, através de InputBoxes. Caso os dados

estejam errados, o utilizador deve voltar a introduzi-los.

Solução

Utiliza-se um ciclo para controlar a entrada de dados. Há

duas abordagens possíveis:

Ciclo DLU / DLW

– A leitura é feita dentro do ciclo.

Ciclo DWL / DUL

– A primeira leitura é feita fora do ciclo. Só entra no ciclo se o valor lido

(14)

APROG

Civil

Validação - Exemplo

Exemplo: leitura de notas entre 0 e 20

DLU

DWL

Do

nota = Val(InputBox("Nota nº " & x)) Loop Until nota >= 0 And nota <= 20

A InputBox informa também o utilizador do erro.

O ciclo só termina quando a nota for válida.

nota = Val(InputBox("Nota nº " & x)) Do While nota < 0 Or nota > 20

nota = Val(InputBox(“Erro: Introduza novamente “ _ & “ a nota nº " & x))

Loop

O ciclo só é executado se a nota for inválida.

(15)

APROG

Civil

Exemplo de aplicação

Elabore um programa que leia as notas dos alunos de

uma disciplina (número de alunos dado pelo utilizador)

e apresente a média das notas e a melhor e a pior

nota. Devem também ser apresentadas numa ListBox

todas as notas lidas.

Notas para a resolução:

O número de alunos deve ser validado (>0)

Como o número de alunos é conhecido, pode utilizar-se um

ciclo For para leitura das notas. Para cada nota usa-se um

ciclo para validar a nota (entre 0 e 20).

A leitura das notas é efectuada através de uma InputBox.

Para cada nota lida, verificar se é menor do que a pior ou

maior do que a melhor.

(16)

APROG

Civil

Resolução - Form

MsgBox com a mensagem de erro de Nº de alunos inválido.

InputBox para intrudução de cada uma das notas.

TextBox para introdução do Número de alunos. L i s t B o x p a r a apresentar as notas 3 Label para apresentar resultados. botão cmdLer ao qual se associa o programa

(17)

APROG

Civil

Resolução – Código (I)

Option Explicit

Private Sub cmdSair_Click() End

End Sub

Private Sub cmdLer_Click()

Dim na As Integer, nota As Integer, soma As Integer Dim max As Integer, min As Integer, x As Integer

na = Val(txtNA.Text) If na <= 0 Then

MsgBox "Erro: Número de alunos inválido!" Else

soma = 0

max = -1 ' valores iniciais min = 21

' continua ....

Comentário

Os valores iniciais devem, neste caso, ser impossíveis. Assim, na primeira iteração são de certeza alterados.

Variáveis para a melhor e pior notas até ao momento.

(18)

APROG

Civil

Resolução – Código (cont.)

For x = 1 To na

nota = Val(InputBox("Nota nº " & x)) Do While nota < 0 Or nota > 20

nota = Val(InputBox("Nota inválida! - Nota nº " & x)) Loop

lstNotas.AddItem Format(x, "00") & " - " & nota soma = soma + nota

If nota > max Then ' compara com melhor anterior max = nota

End If

If nota < min Then ' compara com pior anterior min = nota

End If Next

lblMed.Caption = soma / na ' calcula a média das notas lblMelhor.Caption = max

lblPior.Caption = min End If

Ciclo interior para validação da nota.

Se a nota é maior do que o máximo actual passa a ser o novo máximo.

Se a nota é menor do que o mínimo actual passa a ser o novo mínimo.

(19)

A função Format permite formatar o resultado de uma expressão de

acordo com as instruções contidas numa “string” de formatação.

Sintaxe:

Format

(

expressão

, string_de_formatação)

APROG

Civil

Formatação de saída de dados

Formatos especificados pelo programador - Símbolos utilizados 0 Localizador de dígitos Mostra um dígito ou um zero

# Localizador de dígitos Mostra um dígito ou nada . Separador decimal

, Separador dos milhares

% Localizador de percentagem Resultado da expressão multiplicado por 100, com % na posição especificada

(20)

APROG

Civil

Formatação de saída de dados

Formatos standard

General Number Número sem separador dos milhares

Fixed Nº c/ pelo menos 1 dígito à esquerda e 2 à direita do ponto dec. Standard Como o Fixed mas com separador dos milhares

Percent Multiplica o valor por 100 e acrescenta símbolo % Scientific Usa notação científica padrão

Currency Formato monetário

> Passa todos os caracteres para maiúsculas

< Passa todos os caracteres para minúsculas

O que é pedido O que é mostrado

meuTexto = Format(256.3, “###0.000”) 256.3

meuTexto = Format(3256.3, “fixed”) 3256.30

meuTexto = Format(0.125, “#.0000”) 0.1250

meuTexto = Format(14.3256, “000.0”) 014.3

meuTexto = Format(“Olá”, “>”) OLÁ

(21)

APROG

Civil

Conclusão

Estudamos dois ciclos:

Do … Loop

4 variantes – DWL, DUL, DLW, DLU

Pode ser utilizado em qualquer situação.

For … Next

2 variantes – ciclo crescente e decrescente

Só pode ser aplicado a intervalos de valores.

Os limites do intervalo têm que ser numéricos, inteiros e constantes.

O incremento tem que ser constante.

Introduzimos o conceito de padrão

O que permite agilizar a resolução de problemas,

identificando blocos conhecidos que se repetem

frequentemente em problemas.

Referências

Documentos relacionados

E a resposta de Jesus ao seu discípulo foi: &#34;Arreda, satanás, porque não cogitas das coisas de Deus, e sim das dos homens!&#34; Quando entendemos que é o diabo quem usa a boca

O resultado é falso apenas quando todos os operadores forem falsos. v1 V2 v1

Dados um número inteiro n, n&gt;0, e uma sequência com n números inteiros, determinar a soma dos inteiros positivos e a soma dos inteiros negativos da sequência.. Tabela

writelines(data): escreve cada elemento string da lista data na posição atual ou ao final do arquivo, dependendo do modo de abertura. Qualquer arquivo pode ser aberto e lido

Técnicas para a geração, exibição, manipulação e interpretação de modelos de objetos e de imagens utilizando o computador Modelos e imagens criados a partir de dados do mundo

a) Usando a função sqrt(x) da biblioteca matemática da linguagem Python (import math) , escreva uma função que recebe as coordenadas cartesianas de dois pontos

• Leia um número inteiro n&gt;0 e verifique se este número contém dois dígitos adjacentes iguais. • Leia um número inteiro n, n&gt;0, e uma sequência com

 Os programas de computador são, geralmente, escritos utilizando uma linguagem de programação de alto nível (na qual um código ou programa fonte é criado) e são traduzidos para