Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introdução
51) Escreva um programa que leia 3 notas de uma aluno (teórica, prática e
projeto). As notas deverão estar no intervalo 0-20. A nota final é dada pela
soma pesada das notas (TEOR=50% PRAT=30% PROJ=20%) O aluno será aprovado se a
soma das 3 notas for superior a 30 ou no caso de a nota prática e teórica
serem ambas iguais ou superiores a 13. O aluno deverá ser submetido a um exame
oral se a nota teórica for 8 ou 9 ou no caso de a média final ser superior a
14. O programa deverá indicar todos os resultados.
52) Crie um programa para determinar se um aluno passou na disciplina de TP I a
partir dos valores das duas frequências (F1, F2) e do trabalho (T). A fórmula
para obter a nota final (NF) é a seguinte:
F = (F1+F2)/2(arredondado às unidades)
NF = F * (20-T) / 20 + T (arredondado às unidades)
Para passar o aluno deverá ter uma nota igual ou superior a 8 em ambas as
frequências e uma nota igual ou superior a 10 na média das duas frequências
(F). O programa deverá verificar se os valores introduzidos para as
frequências estão no intervalo entre 0 e 20. O trabalho deverá ter um valor
entre 0 e 4.
53) Crie um programa que leia 3 notas de um aluno: N1, N2, N3 e indique se o
aluno passou à disciplina. Para passar à disciplina o aluno deverá ter uma
nota igual ou superior a 8 nas 3 notas e a soma de N1 e N2 deverá ser igual ou
superior a 20. As notas deverão estar no intervalo de 0 a 20.
54) Escreva um programa que leia 3 números inteiros do utilizador, garantindo
que todos eles são positivos e diferentes entre si. Se o utilizador tentar
introduzir um valor igual a um valor já introduzido, o programa deverá repetir
o pedido de introdução do valor.
55) Crie um programa o valor de vendas de uma empresa em 4 anos consecutivos:
2000, 2001, 2002 e 2003. Os valores deverão ser positivos. O programa deverá
indicar em quantos anos neste período o valor de vendas cresceu em relação ao
ano anterior (o valor de saída será entre 0 e 3). Deverá indicar ainda o
crescimento percentual entre o ano 2000 e 2003.
Números aleatórios
56) Crie um programa que apresente um número inteiro aleatório entre dois
valores inteiros dados pelo utilizador.
57) Crie um programa que apresente um número aleatório double entre dois
números introduzidos pelo utilizador.
58) Crie um programa que determine um número aleatoriamente, tendo o utilizador
de o adivinhar. O programa dará pistas (maior, menor,...).
59) Crie um programa que proponha os 6+1 números do totoloto (sem repetições!).
60) Desenvolva um programa para ensinar adições a alunos do ensino básico a
partir de 10 problemas de adição aleatórios. O programa deverá indicar, por
exemplo, (3+6=). O aluno deverá colocar o resultado e o programa indicará se
está correto ou não.
61) Crie um programa que apresente uma vogal aleatória.
62) Crie um programa que simule lançamentos de dois dados e produza uma
estatística. Deverá ter contadores para cada um dos resultados possíveis entre
2 e 12.
Métodos
63) Crie um método que receba 2 valores inteiros como argumentos e retorne a
sua soma. Se o valor da soma for negativo o método deverá retornar o valor 0.
64) Crie um método que receba 3 valores double como argumento e retorne o maior
valor absoluto.
65) Crie um método que receba dois valores double como argumentos e retorne o
valor da raiz quadrada da soma dos quadrados.
66) Crie um método que receba um número inteiro como argumento e retorne o
maior valor primo inferior a esse argumento. Se o argumento for negativo, o
método deverá retornar o valor zero.
67) Crie um método ContaPrimos()que receba dois valores inteiros como
argumentos e retorne o número de números primos entre estes dois números,
inclusive. P. Ex. ContaPrimos(3,10) deverá retornar o valor 3 (3, 5, 7). O
método deverá ser testado sendo que os dois valores são introduzidos pelo
utilizador.
68) Crie um método que receba 2 notas (F1 e F2) de um aluno e retorne um
booleano indicando se o aluno passou. Para passar, a soma das notas deve ser
igual ou superior a 19 e ambas devem ser superiores a 7.
69) Crie um método que receba dois valores inteiros como argumentos e retorne
um valor booleano indicando se os números são divisíveis.
70) Crie um método que receba um número inteiro como argumento e retorne o
número da série de Fibonacci correspondente.
71) Crie um método que receba um número inteiro e retorne a soma dos seus
algarismos.
72) Crie um método que receba 3 valores inteiros (a, b, c) e retorne um valor
booleano true se a>b>c e false em caso contrário.
73) Crie um método que verifique se um número é primo (deverá retornar um valor
booleano).
74) Crie um método que receba um número inteiro n e retorne o n-ésimo número
primo.
75) Crie um método que receba três inteiros como argumentos (ano, mês, dia) e
verifique se se trata de um data válida. O ano deverá estar entre 1900 e o
presente ano. Deverá retornar um valor booleano.
76) Crie um método void que receba 3 variáveis inteiras como argumento e altere
o valor das variáveis, colocando-as no máximo dos 3 valores.
77) Crie um método void que receba um valor inteiro como argumento e o altere
para o seu simétrico (negativo passa a positivo e vice-versa).
78) Crie e teste um método TestaSoma(int a, int b, int c) (os valores são
introduzidos pelo utilizador) que receba três valores inteiros como argumento
e retorne um valor booleano true se a soma dos valores for um número primo. Ou
seja, se a soma dos três valores for um número primo o método deverá retornar
o valor true.
Vetores
79) Escreva um programa que preencha um vetor de 100 posições com os primeiros
100 números pares.
80) Escreva um programa que procure e indique o maior valor (e a respetiva
posição) de um vetor de 10 posições introduzido pelo utilizador.
81) Escreva um programa em que 20 valores inteiros entre 1 e 10 são
introduzidos pelo utilizador num vetor. Depois, o utilizador deverá indicar um
valor e o programa deverá indicar em que posição ou posições este valor existe
no vetor. Se o valor não existir no vetor o programa deverá dar a respetiva
mensagem.
82) Crie um programa que apresente a soma de todos os valores de um vetor de
inteiros de 10 posições. Os valores devem ser introduzidos pelo utilizador.
83) Escreva um programa que determine o 2º maior valor de um vetor.
84) Crie um programa que leia um vetor de 10 valores inteiros do utilizador,
não permitindo a introdução de valores repetidos.
85) Crie um programa que leia um conjunto de valores inteiros do utilizador e
os coloque num vetor. O programa deverá terminar a leitura quando for
introduzido um número que já exista no vetor, ou seja, quando for introduzido
um número repetido. No final deverá apresentar o vetor.
86) Crie um programa que leia um vetor de n inteiros, sendo n um valor
introduzido pelo utilizador, não havendo restrições. O programa deverá
converter todos os valores negativos do vetor para 0, imprimir o vetor
resultante e indicar quantos valores foram alterados.
87) Crie um programa que leia 10 números double, coloque-os num vetor e calcule
a sua média.
88) Escreva um programa que preencha um vetor de 20 posições com os primeiros
20 números primos.
89) Crie um programa que leia um vetor de 10 inteiros. Os valores deverão estar
no intervalo [0,100]. O programa não deverá aceitar valores fora deste
intervalo. O programa deverá indicar a soma dos inteiros múltiplos de 5
existentes no vetor.
90) Escreva um programa que indique se todos os valores de um vetor são iguais,
se são todos diferentes, ou se há valores repetidos no vetor. Para testar
utilize um vetor cujo tamanho e valores inteiros são introduzidos pelo
utilizador.
91) Crie um programa que leia um vetor de inteiros cujo tamanho será
introduzido pelo utilizador, tamanho esse que nunca será inferior a 5 ou
superior a 25.O programa deverá indicar ao utilizador se o vetor é constituído
(ou não) por valores pares e ímpares alternados. Exemplo: O vetor
[1,2,5,6,3,2] verifica esta condição.
92) Escreva um programa que verifique se todos os elementos de um determinado
vetor existem noutro vetor.
93) Escreva um programa que inverta a ordem dos elementos de um vetor de
inteiros. Compare os resultados com o método Array.Reverse.
94) Crie um programa que conte o número de números primos num vetor de
inteiros.
95) Escreva um programa que peça as idades de 32 alunos de uma turma. O
programa deve guardar estes valores num vetor e no final indicar a idade
máxima, mínima média e moda da turma.
96) Crie um programa para somar 2 vetores de tamanhos diferentes e colocar o
resultado num 3º vetor.
97) Crie um programa para determinar o maior valor entre as posições de dois
vetores e colocar o resultado num 3º vetor.
98) Escreva um programa que leia as notas de um determinado número alunos a um
conjunto de disciplinas. O número de alunos e o número de disciplinas são
introduzidos pelo utilizador. Os valores das notas deverão estar entre 0 e 20
e guardados numa matriz. Depois deverá indicar a média de cada aluno, a nota
mais alta, a nota mais baixa, a média de cada disciplina e o número de alunos
com média superior a 9,5.
99) Crie um programa que simule 100 lançamentos de 2 dados, guarde os
resultados em vetores e produza uma estatística.
100) Escreva um programa para determinar o valor mais comum (moda) num vetor de
inteiros. Teste com um vetor de 100 posições preenchido aleatoriamente com
valores entre 0 e 10.
101) Desenvolva um programa para simular o embaralhar de um baralho de cartas.
Use um vetor e embaralhe as cartas fazendo trocas entre os elementos. Depois
dê 4 mãos de 13 cartas.
102) Crie um programa que preencha um vetor de 25 posições com valores
aleatórios entre 1 e 100 (inclusive). No fim deverá indicar se há algum valor
repetido (e qual ou quais valores estão repetidos no vetor).
103) Crie um método que aceite um valor inteiro e um vetor de inteiros como
argumentos e retorne um valor booleano indicando se o valor existe no vetor.
104) Crie um método que aceite um valor inteiro e um vetor de inteiros como
argumentos e retorne um valor inteiro indicando o número de ocorrências do
valor no vetor.
105) Crie um método que aceite dois vetores de inteiros como argumentos e
retorne 1 se a soma dos valores do primeiro vetor for superior à do segundo, 0
se forem iguais e –1 se for inferior.
106) Crie um método que aceite um vetor de “double” como argumento e divida
todos os valores por 2. Crie um overload para inteiros.
107) Crie um método que receba um vetor de inteiros e um valor inteiro como
argumentos e multiplique todos os elementos do vetor por esse valor.
108) Crie um método que receba um vetor de inteiros como argumento e converta
todos os valores negativos para zero
109) Crie um método SomaPositivos() que aceite como argumento um vetor de
valores inteiros vec e retorne a soma dos seus elementos positivos. Exemplo:
se vec=[2,3,-4,5,-1] o método retornará o valor 10 (2+3+5).
110) Crie um método que aceite um vetor de notas dos alunos e retorne a
percentagem de notas negativas. (double).
111) Método Moda(…) que receba uma um vetor de inteiros como argumento e
retorne o valor que surge mais vezes no vetor. Em caso de empate entre dois ou
mais elementos, o método deverá retornar o de menor valor. Sugestão: Utilize
um vetor auxiliar.
112) Método MeioSoma(…) que receba um vetor de inteiros como argumento e
retorne o número de elementos do vetor que são iguais à soma do valor do
elemento anterior com o valor do elemento seguinte. ex. - No vetor [2 5 3 6 3
4 0 4], há 2 valores nestas condições (5 e 6). Neste caso o método deverá
retornar o valor 2.
113) Crie dois métodos TodosDiferentes() e TodosIguais() que recebam um vetor
de inteiros como argumento e retornem um valor booleano indicando
respectivamente se os elementos do vetor são todos diferentes ou todos iguais.
Crie overloads para vetores de strings e double.
114) Crie um método InverteVetor(...) que receba um vetor de inteiros - e
inverta a posição dos seus elementos, ou seja o último elemento do vetor
passará a ser o elemento 0 e vice-versa. O método deverá retornar um valor
inteiro indicando o número total de elementos negativos do vetor. Crie
overloads para vetores de strings e double.
115) Crie um método que receba um vetor de inteiros como argumento e retorne o
número de valores que sejam iguais ou superiores aos números adjacentes. No
caso do primeiro elemento, este será apenas comparado com o segundo elemento.
O último elemento será comparado com o penúltimo. Exemplo: No vetor
{3,2,4,6,4,5,7,8,2,5,3} há 4 elementos superiores aos números adjacentes
(3,6,8,5).
116) Crie um método que receba dois vetores de inteiros como argumentos e
retorne um booleano indicando se os vetores possuem exatamente os mesmos
valores, podendo estes estar numa ordem diferente. Sugestão: Ordenar. Crie
overloads para vetores de strings e double.
117) Crie um método que receba um vetor bidimensional de inteiros como
argumento e retorne o maior valor.
118) Crie dois métodos em overload que recebam um vetor bidimensional (num caso
de inteiros, no outro de double) e retorne a soma dos elementos do vetor.
119) Crie um método que receba um vetor bidimensional de inteiros como
argumento e retorne o valor booleano true se todas as linhas somarem o mesmo
valor.
120) Crie um método que receba um vetor bidimensional de inteiros como
argumento e retorne o número de linha onde se situa o maior valor do vetor.
121) Crie um método que receba um inteiro e um vetor bidimensional de inteiros
como argumentos e retorne o número da coluna onde se encontra o valor. Deverá
retornar -1 se não encontrar o valor. Crie um overload para valores double.
122) Crie um método que receba um vetor bidimensional de inteiros como
argumento e retorne o número de valores negativos no vetor.
123) Crie um método que receba um vetor linear de inteiros e um vetor
bidimensional de inteiros como argumentos e retorne o valor booleano true se
todos os elementos do vetor linear existirem no vetor bidimensional.
124) Crie um método que receba um inteiro e um vetor bidimensional de inteiros
como argumentos e retorne um valor correspondente ao número de linhas em que
este valor inteiro surge (exemplo: se o valor aparece em 3 linhas o valor
retornado deverá ser 3 mesmo que este surja mais do que uma vez numa
determinada linha!).
125) Crie um método que receba um vetor bidimensional de inteiros e o preencha
com valores aleatórios entre 0 e 9, inclusive.
Ordenação de vetores
strings
133) Crie um programa que leia o nome próprio do utilizador e imprima uma
mensagem personalizada do tipo: "Olá João!"
134) Altere o programa de modo a que se o nome for "Bartolomeu", o programa
imprima "Dá cá o meu!".
135) Altere o programa anterior para que a mensagem surja para todos os nomes
terminados em "eu". Exemplo:> Olá Zebedeu! Dá cá o meu!
136) Crie um programa que “limpe” os espaços iniciais e finais de uma string.
137) Crie um programa que leia 2 strings do utilizador e indique qual das
strings está primeiro na ordem alfabética.
138) Crie um jogo com 3 advinhas do tipo "Qual a cor do cavalo branco do
Napoleão?", cada uma com 3 alternativas, apresentando o resultado final.
139) Crie um programa que inverta uma string.
140) Crie um programa que, numa string substitua todas as letras “v” por “b” e
todas as ocorrências de “ão” por “om”.
141) Crie um programa que remova todas as ocorrências de uma substring dentro
de uma string.
142) Crie um programa que leia um nome de um utilizador e apresente apenas o
primeiro e o último nome.
143) Crie um programa de modo a que uma string seja imprimida do seguinte modo:
S
St
Str
Stri
Strin
string
Interface Gráfico
172) Crie um programa para converter entre graus, radianos e grados usando
RadioButtons.
173) Crie um programa com 4 labels e uma textBox. O primeiro e o terceiro label
terão um número inteiro aleatório entre 1 e 10. O segundo label um operador
aleatório (+,-,*). O quarto label um sinal de igual. O utilizador deverá fazer
a conta aritmética e o programa indicará se a resposta está correcta. Ex.:
2+3=? Ou 3*7=? (o operador também é aleatório)
174) Crie um programa em que o texto introduzido numa textBox seja copiado para
uma lista ao ser premido um botão. Não deverá aceitar valores repetidos.
175) Este documento deverá ter uma caixa de texto, um label e um botão
(Converter). Ao ser introduzido texto na caixa de texto, este deverá ser
passado para o label ao se premir o botão. Deverá ainda ser apagado da caixa
de texto. Deverá corresponder ás seguintes condições:
a. Se a caixa de texto estiver vazia o label deverá indicar “por favor
introduza um texto”.
b. O tamanho máximo do texto deverá ser de 20 caracteres.
c. O texto deverá ser convertido para maiúsculas.
d. Todas as palavras começadas pela letra “T” e terminadas em “A” deverão
ser eliminadas.
e. No caso de o texto ser apenas “Trofa” (ignorando maiúsculas e
minúsculas) todos os controlos deverão desaparecer, deverá surgir um
novo label com uma mensagem de erro e o fundo do documento deverá
surgir a vermelho.
176) Crie um interface de múltiplos documentos (MDI), incluindo um menu com
três possibilidades, correspondendo aos títulos dos exercícios seguintes:
Documento 1 (Converter)
a. Este documento deverá ter uma caixa de texto, um label e um botão (OK).
Na caixa de texto serão introduzidos números inteiros. O botão OK
confirma a introdução do número.
b. O programa deverá dar uma mensagem se, por engano, o utilizador
introduzir texto ou algo que não seja um número inteiro.
c. Se o utilizador introduzir um número primo a introdução de valores
termina, ficando a caixa de texto inactiva.
d. O programa deverá contar quantos números foram introduzidos e deverá
dar uma indicação (no label ou numa caixa de mensagem) quando um número
for igual ao número anterior.
Documento 2 (Notas)
e. Este programa servirá para determinar se um aluno passou a uma
determinada disciplina. O programa deverá ter duas caixas de texto para
a nota prática e teórica. Deverá ainda ter dois RadioButton para
indicar se realizou ou não trabalho prático. No caso de o utilizador
indicar que o trabalho prático foi realizado deverá ainda surgir outra
caixa de texto para introdução desta nota.
f. Ao ser premido o botão, o programa deverá indicar num label se o aluno
foi aprovado. Para ser aprovado o aluno deverá obedecer às seguintes
condições:
g. Se não realizou o trabalho prático, ambas as notas deverão ser iguais
ou superiores a 10.
h. Se realizou o trabalho prático o aluno será aprovado se NP>9 e NT>9 ou
se a soma das três notas for igual ou superior a 30.
i. O programa deverá indicar a nota final do aluno, apenas no caso de ter
sido aprovado. A nota final é igual a:
i. a. Se não realizou trabalho: média das duas notas (prática e
teórica), arredondada às unidades.
ii. b. Se realizou trabalho, a nota será igual à média pesada das 3
notas (teórica: 40%; prática 40%; trabalho: 20%)
Documento 3 (Jogo)
j. Este documento deverá ter um pequeno jogo. Para isso terá um label e
três RadioButtons. No label deverá surgir uma adição simples (Por
exemplo 4+2=?) onde os operandos serão números aleatórios entre 0 e 9.
Nos RadioButtons estarão 3 soluções possíveis entre as quais a resposta
correcta (nenhuma resposta estará seleccionada inicialmente). A posição
da resposta correcta deverá ser aleatória entre as 3 possíveis. As
respostas alternativas também deverão ser obtidas aleatoriamente entre
0 e 18. O programa deverá indicar se a solução escolhida é a correcta e
passar à pergunta seguinte. Não é necessário contar as respostas
correctas.
177) Este documento deverá ter uma caixa de texto, um caixa de texto não
editável e um botão (Converter). Ao ser introduzido texto na caixa de texto,
este deverá ser passado para a caixa de texto não editável ao se premir o
botão. Deverá ainda ser apagado da caixa de texto original. Deverá
corresponder ás seguintes condições:
a. O botão apenas ficará activo quando a caixa de texto não estiver vazia.
Enquanto a caixa de texto estiver vazia o botão manter-se-á inactivo.
b. O tamanho máximo do texto deverá ser de 20 caracteres.
c. A inicial de cada palavra deverá ser convertida para maiúsculas. Todas
as outras letras deverão ser minúsculas.
d. Todas as palavras que contenham mais de 3 vogais deverão ser
eliminadas.
e. Se o texto introduzido tiver 2 palavras (e apenas duas palavras) deverá
ser apresentada uma mensagem de erro, ficando todos os controlos
desactivados.
178) Crie um programa com duas caixas de texto (Limite Inferior e Limite
Superior) e um botão (OK). O utilizador deverá colocar valores inteiros nas
caixas de texto e o programa deverá gerar um valor aleatório inteiro entre o
Limite Inferior e o Limite Superior, apresentando-o num label. Cada vez que o
botão é premido um novo valor deverá surgir e as caixas de texto devem ser
limpas.
a. Antes de converter a string, o programa deverá garantir que o
utilizador introduziu um número inteiro. Se o utilizador introduzir
texto, deverá receber uma mensagem de erro.
b. O programa deve verificar que o Limite Superior é maior do que o limite
inferior. Em caso contrário deverá indicar uma mensagem de erro e não
calcular o valor aleatório.
179) Este documento conterá três botões (START e STOP, INVERTE) e um label com
a contagem dos segundos. Ao ser premido o botão START, deverá iniciar-se a
contagem dos segundos que será apresentada no label. Ao ser premido o botão
STOP é parada a contagem dos segundos. Ao ser premido o botão INVERTER é
invertida a contagem dos segundos. O valor máximo é de 59 segundos e mínimo de
0 segundos. Ao serem atingidos estes limites a contagem deverá inverter
automaticamente.
180) Este programa deverá verificar se uma matrícula de um automóvel português
é válida. Para isso deverá ter 3 caixas de texto editáveis e um botão
“Verifica”. As caixas de texto terão no máximo 2 caracteres. Ao ser premido o
botão o programa verificará se a matrícula é válida. Para isso deverá
corresponder a um dos seguintes casos:
a. 2 letras + 2 algarismos 2 algarismos
b. 2 algarismos + 2 letras + 2 algarismos
c. 2 algarismos + 2 algarismos + 2 letras
181) Neste documento ao ser premido um botão será apresentado ao utilizador uma
soma (num label com tamanho de letra 16) em que os operandos são números entre
1 e 20 (inclusive), por exemplo (5+14=?). Estes valores deverão ser obtidos
aleatoriamente. Deverá existir uma caixa de texto onde o utilizador dará a
resposta. O programa deverá indicar de alguma maneira se o resultado está ou
não exacto e indicar a resposta correcta.
a. Antes de converter para string, o programa deverá garantir que o
utilizador introduziu um número inteiro. Se o utilizador introduzir
texto, deverá receber uma mensagem de erro.
b. O programa indicará a percentagem de respostas correctas.
182) O programa deverá ter duas caixas de texto para a nota prática (NP) e
teórica (NT). Deverá ainda ter dois RadioButton para indicar se realizou ou
não trabalho prático. No caso de o utilizador indicar que o trabalho prático
foi realizado deverá ainda surgir outra caixa de texto para introdução desta
nota. Coloque os controlos de validação indicado para as notas, que não
deverão estar em branco e deverão ter valores numéricos entre 0 e 20.
a. Ao ser premido um botão (e se as condições referidas acima forem
cumpridas), o programa deverá indicar num label se o aluno foi
aprovado. Para ser aprovado o aluno deverá obedecer às seguintes
condições:
b. Se não realizou o trabalho prático, ambas as notas deverão ser iguais
ou superiores a 8 e a sua soma deverá ser superior a 18.
c. Se realizou o trabalho prático o aluno será aprovado se NP>9 e NT>9 ou
se a soma das três notas for igual ou superior a 28.
d. O programa deverá indicar a nota final do aluno, apenas no caso de ter
sido aprovado. A nota final é igual a:
i. Se não realizou trabalho: média das duas notas (prática e
teórica), arredondada às unidades.
ii. Se realizou trabalho, a nota será igual à média pesada das 3
notas (teórica: 40%; prática 40%; trabalho: 20%)