243 lines
6.0 KiB
Markdown
243 lines
6.0 KiB
Markdown
# PEC 3
|
|
|
|
**Índice**
|
|
- [PEC 3](#pec-3)
|
|
- [5. Estructura de control alternativa](#5-estructura-de-control-alternativa)
|
|
- [5.1. Estructura alternativa](#51-estructura-alternativa)
|
|
- [5.2. Codificación de una estructura de control alternativa](#52-codificación-de-una-estructura-de-control-alternativa)
|
|
- [6. Tipos de datos: Vectores y matrices](#6-tipos-de-datos-vectores-y-matrices)
|
|
- [6.1. Vectores](#61-vectores)
|
|
- [6.1.1. Cadenas de caracteres o strings](#611-cadenas-de-caracteres-o-strings)
|
|
- [6.1.2. Representación de memoria](#612-representación-de-memoria)
|
|
- [6.1.3. Inicialización](#613-inicialización)
|
|
- [6.2. Matrices](#62-matrices)
|
|
- [7. Cambio de tipos de datos en C](#7-cambio-de-tipos-de-datos-en-c)
|
|
- [7.1. Reglas de coneversión](#71-reglas-de-coneversión)
|
|
- [7.2. Cambio explícito de tipos de datos](#72-cambio-explícito-de-tipos-de-datos)
|
|
- [8. Cadenas de carácteres en C](#8-cadenas-de-carácteres-en-c)
|
|
- [8.1. Cadenas de caracteres o strings](#81-cadenas-de-caracteres-o-strings)
|
|
- [8.1.1. Definición](#811-definición)
|
|
- [8.1.2. Asignación](#812-asignación)
|
|
- [8.1.3. Comparación](#813-comparación)
|
|
- [8.2. Programación segura](#82-programación-segura)
|
|
|
|
|
|
## 5. Estructura de control alternativa
|
|
|
|
Estructuras de control de flujo.
|
|
|
|
### 5.1. Estructura alternativa
|
|
|
|
- *Consulta sobre el estado actual o condición* - Reacciona en función del valor obtenido. Tendrá como respuesta un valor lógico (verdadero o falso), pudiendo de esta forma tomar una decisión entre dos caminos distintos.
|
|
- *Qué hacer cuando la condición es verdadera* - Conjunto de instrucciones que se ejecutarán en caso verdadero.
|
|
- *Qué hacer cuando la condición es falsa (opcional)* - Conjunto de instrucciones que se ejecutarán en caso falso.
|
|
- *Fin* - Continua la ejecución del resto del programa.
|
|
|
|
### 5.2. Codificación de una estructura de control alternativa
|
|
|
|
| Partes | Codificiación en lenguaje algorítmico |
|
|
| ------------------------------------------- | ------------------------------------- |
|
|
| Consulta sobre el estado actual o condición | `If` *estructura condicial* `then` |
|
|
| Qué hacer cuando la condición es verdadero | *bloque de instrucciones* |
|
|
| Qué hacer cuando la condición es falso | `else` |
|
|
| | *bloque de instrucciones* |
|
|
| Marca de fin de estructura alternativa | `end if` |
|
|
|
|
|
|
Ejemplos:
|
|
|
|
Si un número es par mostrar un mensaje.
|
|
```c
|
|
algorithm ex4
|
|
var
|
|
n: integer;
|
|
end var
|
|
|
|
n := readInteger();
|
|
|
|
if n mod 2 = 0 then
|
|
writeString("Es par");
|
|
end if
|
|
|
|
end algorithm
|
|
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char** argv) {
|
|
int n;
|
|
scanf("%d", &n);
|
|
|
|
if (n%2 == 0) {
|
|
printf("Es par");
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
```
|
|
|
|
Si la temperatura es menor que 21ºC encender la calefacción. Si la temperatura es mayor o igual que 21ºC apagar la calefacción.
|
|
```c
|
|
algorithm ex5
|
|
var
|
|
t: real;
|
|
end var
|
|
t := readReal();
|
|
if t < 21 then
|
|
switchOnHeating();
|
|
else
|
|
switchOffHeating();
|
|
end if
|
|
end algorithm
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char** argv) {
|
|
float t;
|
|
scanf("%f", &t);
|
|
|
|
if (t < 21) {
|
|
switchOnHeating();
|
|
} else {
|
|
switchOffHeating();
|
|
}
|
|
return 0;
|
|
}
|
|
```
|
|
|
|
Si la temperatura es menor que 18ºC encender la calefacción. Si la temperatura es mayor que 26ºC encender el aire acondicionado. En cualquier otro caso apagar la calefacción y el aire acondicionado.
|
|
```c
|
|
algorithm ex6
|
|
var
|
|
t: real;
|
|
end var
|
|
t := readReal();
|
|
if t < 18 then
|
|
switchOnHeating():
|
|
else
|
|
if t > 26 then
|
|
switchOnAirConditioning();
|
|
else
|
|
switchOffHeating();
|
|
switchOffAirConditioning();
|
|
end if
|
|
end if
|
|
end algorithm
|
|
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char** argv) {
|
|
float t;
|
|
scanf("%f", &t);
|
|
|
|
if (t < 18) {
|
|
switchOnHeating();
|
|
} else {
|
|
if (t > 26) {
|
|
switchOnAirConditioning();
|
|
} else {
|
|
switchOffHeating();
|
|
switchOffAirConditioning();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
```
|
|
|
|
Si la edad es menor que 18 años mostrar un mensaje. Si la edad es mayor o igual que 18 años preguntar si tiene carnet de conducir. Si tiene carnet de conducir mostrar un mensaje. Si no tiene carnet de conducir mostrar otro mensaje.
|
|
```c
|
|
algorithm carPooling
|
|
var
|
|
age: integer;
|
|
hasDrivingLicense: boolean;
|
|
end var
|
|
writeString("How old are you?");
|
|
age := readInteger();
|
|
if age < 18 then
|
|
writeString("You still cannot drive");
|
|
else
|
|
writeString("Do you have a driving licence?");
|
|
hasDrivingLicense := readBoolean();
|
|
if hasDrivingLicense then
|
|
writeString("Nice, we can share the car");
|
|
else
|
|
writeString("I do. If you want we can use my car");
|
|
end if
|
|
end if
|
|
end algorithm
|
|
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
int main(int argc, char **argv) {
|
|
int age;
|
|
bool hasDrivingLicense;
|
|
int aux;
|
|
printf("How old are you?\n");
|
|
scanf("%d", &age);
|
|
if (age < 18){
|
|
printf("You still cannot drive\n");
|
|
} else {
|
|
printf("Do you have driving licence?\n");
|
|
scanf("%d", &aux);
|
|
hasDrivingLicense = aux;
|
|
if (hasDrivingLicense) {
|
|
printf("Nice, we can share the car\n");
|
|
} else {
|
|
printf("I do. If you want we can use my car\n");
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
```
|
|
|
|
|
|
## 6. Tipos de datos: Vectores y matrices
|
|
|
|
Podemos definir variables que contienen varios elementos de un mismo tipo. Según estas variables tengan 1 o 2 dimensiones, las llamaremos vectores o matrices respectivamente.
|
|
|
|
### 6.1. Vectores
|
|
|
|
#### 6.1.1. Cadenas de caracteres o strings
|
|
|
|
|
|
#### 6.1.2. Representación de memoria
|
|
|
|
|
|
#### 6.1.3. Inicialización
|
|
|
|
|
|
|
|
### 6.2. Matrices
|
|
|
|
|
|
|
|
## 7. Cambio de tipos de datos en C
|
|
|
|
### 7.1. Reglas de coneversión
|
|
|
|
|
|
|
|
### 7.2. Cambio explícito de tipos de datos
|
|
|
|
|
|
|
|
## 8. Cadenas de carácteres en C
|
|
|
|
### 8.1. Cadenas de caracteres o strings
|
|
|
|
#### 8.1.1. Definición
|
|
|
|
|
|
|
|
#### 8.1.2. Asignación
|
|
|
|
|
|
|
|
#### 8.1.3. Comparación
|
|
|
|
|
|
|
|
|
|
### 8.2. Programación segura
|