OpoTests/Public/md/gemini/007.visual-studio.refuerzo.md
2026-02-28 09:34:33 +01:00

74 lines
2.6 KiB
Markdown

> **EXAME TEMA 1: FUNDAMENTOS DE .NET (Sintaxe, Variables e Estruturas)**
# Pregunta 1: Sintaxe e Lóxica (Mezclado)
Analiza o seguinte fragmento de pseudocódigo/lóxica e dime se hai algún erro ou como o optimizarías:
> *"Necesito comprobar unha variable 'idade'. Se é menor de 18, imprimir 'Menor'; se é exactamente 18, imprimir 'Xusto'; e se é maior de 18, imprimir 'Adulto'."*
- ¿Que estrutura de control usarías para que fose o máis eficiente posible (If...Then...Else ou Select Case)? Xustifica a túa resposta.
## Resposta
No caso de .Net usaríase o `Select Case` ou `Switch`. No caso de F#, a opción ven sendo un `match` e no caso de C++ non existe esta opción polo que nun nivel óptimo acádase o `if else if else`.
```vb
Public Function idade_rango(ByVal idade as Integer) As String
Select Case Idade
Case Is < 18:
Return "Menor de idade."
Case 18:
Return "Ten 18 anos."
End Select
Return "Maior de Idade."
End Function
```
```cs
public string idade_rango(int idade){
switch(idade){
case int _ when idade < 18:
return "Menor de idade.";
case 18:
return "Ten 18 anos.";
}
return "Maior de Idade."
}
```
```fs
let idade_rango idade:int = match idade with
| < 18 -> "Menor de idade."
| 18 -> "Ten 18 anos."
| _ -> "Maior de Idade."
```
```cpp
string idade_rango(int idade){
switch(idade){
case < idade:
return "Menor de idade.";
case idade:
return "Ten 18 anos.";
}
return "Maior de Idade";
}
```
# Pregunta 2: Tipos de Datos Específicos (Castellano)
¿Qué diferencia existe entre el tipo de datos Decimal, Double y Single? Si estuvieras desarrollando una aplicación para la gestión económica de la Xunta (contabilidad), ¿cuál de los tres elegirías para manejar importes monetarios y por qué?
## Respuesta
- **Decimal**: o *decimal* Es un valor numérico de punto flotante con capacidad a poder desplazar la compa variando la proporción de la mantisa cara su parte entera o decimal. Posee una precisión de 128 bits (16 bytes).
- **Double** o *double*: Es un valor numérico de punto flotante con una precisión de 64 bits (8 bytes).
- **Single** o *float*: Es un valor numérico de punto flotante con una precisión de 32 bits (4 bytes).
Para valores monetarios, siempre Decimal por su capacidad de precisión a 128 Bit, además de poder trabajar con un desplazamiento de la coma sobre su Parseo.
```cs
public decimal coger_cantidad(string cantidad){
return decimal.Parse(cantidad.Replace(",", "."));
}
```