Física Computacional
2011-2
I N T R O D U Ç Ã O À L Ó G I C A D E P R O G R A M A Ç Ã O
P R O F . L U Í S F E R N A N D O D E O L I V E I R A
UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES
Exercícios
A prática da lógica de programação é tão importante
quanto o conhecimento dos elementos da lógica.
Se você não praticar, o conhecimento apresentado
até então não se fixará.
Pratique o máximo que puder para, assim, gerar
dúvidas, avaliar as deficiências e fixar o
conhecimento.
Os exercícios propostos possuem diferentes graus de
dificuldade.
Pratique.
Exercícios
Identificação de elementos de informação.
Todo algoritmo trata informações. É imprescindível que os
elementos de informação sejam identificados corretamente. No algoritmo propriamente dito, estes elementos de
informação precisam ser declarados.
Numa operação matemática como somatório, quem são os
elementos de informação? Exemplifique.
Numa operação matemática como um produtório, quem são os
elementos de informação? Exemplifique.
Na expressão algébrica de uma reta, quem são os elementos de
informação? Exemplifique.
Dê exemplos de elementos de informação na identificação de
Exercícios
Dentre os elementos de informação, alguns podem mudar seu
conteúdo, outros não. Essa particularidade identifica as variáveis e as constantes.
Em uma equação de reta, o que é tradicionalmente constante e
o que é tradicionalmente variável? Exemplifique.
Em um polinômio de grau n, o que é tradicionalmente
constante e variável? Exemplifique.
Quais são os tipos de variáveis e constantes? Exemplifique.
No algoritmo, como se declaram uma variável e uma constante
que armazenam números? Exemplifique.
Como se declaram uma variável e uma constante que
Exercícios
Como se declaram uma variável e uma constante que
armazenam valores lógicos? Exemplifique.
Existe uma estrutura de dados próprio para armazenar valores
homogêneos de forma indexada. Que estrutura é esta?
No algoritmo, como é a declaração da estrutura homogênea
que armazena 50 números?
No algoritmo, como é a declaração da estrutura homogênea
que armazena uma matriz de 20 por 20 elementos lógicos?
No algoritmo, como é a declaração da estrutura homogênea
que armazena 10 strings de 30 caracteres?
Como é a declaração de um vetor de números cujo índice
Exercícios
Normalmente, não se usa o símbolo ‘=’ para atribuir uma
informação à uma variável. Que símbolo é tradicionalmente usado? Exemplifique.
Escreva uma instrução que some duas variáveis e armazene o
resultado em uma terceira.
Escreva uma instrução que multiplique duas variáveis e
armazene o resultado em uma terceira.
Escreva uma instrução que promova a divisão de dois números
e guarde o resultado em uma variável.
Escreva uma instrução onde o conteúdo de uma variável seja
atualizado com seu valor inicial elevado ao quadrado.
Escreva uma instrução onde uma variável é primeiro somada
Exercícios
Escreva duas instruções que atribuam o valor lógico FALSO a
uma variável e o valor lógico VERDADEIRO a outra.
Escreva uma instrução que opere estas duas variáveis com a
operação lógica E. Qual o resultado?
Escreva uma instrução que opere estas duas variáveis com a
operação lógica OU. Qual o resultado?
Existe uma operação lógica chamada de OU EXCLUSIVO. Ela
opera sobre dois valores lógicos. Esta operação retorna
VERDADEIRO se e somente se um valor é FALSO e o outro é VERDADEIRO. Escreva a tabela verdade desta operação.
Escreva uma instrução que realize a operação de OU
Exercícios
Escreva a tabela verdade da operação NÃO E.
Escreva a tabela verdade da operação NÃO OU.
A operação NÃO E pode ser construída usando as operações
NÃO e OU. Mostre como.
A operação NÃO OU pode ser construída usando as operações
NÃO e E. Mostre como.
Quais são os operadores relacionais? Exemplifique.
Qual o resultado de uma operação relacional?
Escreva uma instrução que retorne VERDADEIRO se o
conteúdo de uma variável numérica está entre os valores -10 e 10.
Escreva uma instrução que retorne VERDADEIRO se o
Exercícios
Escreva uma instrução que retorne VERDADEIRO se o
conteúdo de uma variável numérica é não nulo.
Admita a existência de uma função chamada inteiro( ) que
retorna a parte inteira de um valor numérico, exemplo:
inteiro(5,5) retorna 5, inteiro(0,8) retorna 0. Se o argumento da função for uma variável numérica (ou uma constante
numérica) , ela retorna a parte inteira do conteúdo, exemplo:
a 3,1415 {a é uma variável}
b inteiro(a) {b recebe o valor 3}
Escreva uma instrução que retorne a parte fracionária de uma
variável numérica usando a função inteiro( ).
Escreva uma instrução que retorne o resto da divisão de dois
Exercícios
Admita duas variáveis numéricas cujos conteúdos sejam
números inteiros. Escreva uma instrução que calcula o resto da divisão destas duas variáveis.
Além das instruções de operação (comandos de ação), a lógica
de programação admite comandos de desvio condicional. Escreva as estruturas básicas dos comandos de desvio condicional.
Escreva um trecho de algoritmo que realize a seguinte tarefa:
se o conteúdo de uma variável numérica for positiva, então multiplique ela por 2, senão, se o conteúdo for menor que -10, então some 20, senão atribua o valor nulo. Declare a variável que você for usar.
Exercícios
Escreva um trecho de algoritmo que avalie se o conteúdo de
uma variável numérica é múltiplo de 7. Declare as variáveis que você for usar. Dica: se o conteúdo for múltiplo de 7, a divisão deste conteúdo por 7 será exata, ou seja, resto nulo.
A representação binária de um número inteiro é construída
decompondo o número inteiro na base 2, por exemplo: o
número inteiro 7 (base decimal, base 10) é 1*22+1*21+1*20, ou
seja, 7 = 4+2+1. Então, na base 2 (base binária) o número 7 é 111 que são os multiplicadores de cada potência de 2. Cada dígito na representação binária (bit) corresponde a um
multiplicador e estes são ordenados em magnitude da direita para a esquerda: o bit mais a direita (chamado de bit menos significativo) é o multiplicador de 20; o bit mais a esquerda
Exercícios
Para converter um decimal em binário, precisamos, então,
dividir o decimal por 2 continuamente e verificar os restos de cada divisão. Exemplo: 7/2 = 3, resta 1; 3/2 = 1, resta 1; ½ = 0,
resta 1. A sequência de divisões termina quando o quociente de uma divisão é igual a zero. Outro exemplo, a representação do decimal 13 é: 13/2=6, resta 1; 6/2=3, resta 0; 3/2=1, resta 1; ½=0, resta 1. O binário de 13 é 1101.
Escreva um algoritmo (desde a declaração das variáveis até o
final do algoritmo) que calcule a representação binária do número 110.
Outros comandos além das instruções e dos desvios
condicionais são os comandos de repetição. Quais são e o que caracteriza cada um deles.
Exercícios
Escreva um trecho de algoritmo que implemente o comando de
repetição sequencial para contar de 0 a 100.
Escreva um trecho de algoritmo que implemente o comando de
repetição sequencial para contar de 100 a 1.
Escreva um trecho de algoritmo que implemente o comando de
repetição sequencial para contar de -1 a 1 de 0,01 em 0,01.
Escreva um trecho de algoritmo que implemente o comando de
repetição sequencial para contar de 1 a -1 de 0,1 em 0,1.
Reescreva cada um dos exercícios acima usando os comandos
de repetição condicional enquanto/fim enquanto, fazer/enquanto, repetir/até.
Exercícios
Reescreva o algoritmo de representação binária usando um
dos comandos de repetição condicional.
Busque uma tabela ASCII e identifique os índices dos
caracteres ‘0’, ... , ‘9’, ‘a’, ... , ‘z’, ‘A’, ... , ‘Z’. Admita que exista uma função chamada caractere( ) que retorne o caractere correspondente ao índice da tabela ASCII fornecido. Admita também que exista uma função chamada ascii( ) que retorne o índice de um caractere fornecido como argumento.
Escreva um algoritmo completo que solicite a entrada de uma
string e converta as letras maiúsculas em minúscula e vice-versa.
Escreva um algoritmo completo que transforme um número
Exercícios
Reescreva o algoritmo da representação binária incluindo
agora uma entrada (comando de leitura) para aceitar um
número inteiro, uma saída (comando de saída) que contenha a representação binária do número inteiro fornecido na forma de string. Obs.: a string deve ter comprimento máximo 32.
Escreva um algoritmo completo que realize o produto de uma
matriz 10 por 5 por outra de 5 por 15.
Escreva um algoritmo completo que calcule o determinante de
uma matriz 7 por 10.
Escreva um algoritmo completo que transforme uma matriz 4
Exercícios
Escreva um algoritmo completo que calcule o comprimento de
um vetor 3D. Para isso, use um vetor com 3 elementos onde o elemento da posição 1 é o x, da posição 2 é o y e da posição 3 é o z. Retorne o comprimento do vetor como saída.
Escreva um algoritmo que converta coordenadas cartesianas
2D em coordenadas polares. Para isso, use um vetor de
dimensão 2 onde o elemento de índice 1 equivale à coordenada x e o elemento de índice 2 corresponde ao y. Assuma que
existam as funções seno(), cosseno() e tangente() que recebam ângulos em radiano e as funções arcosseno(), arcocosseno() e arcotangente() como as funções trigonométricas inversas.