Ejercicio: Clase Complejo

Crear una clase para trabajar con números complejos.

class Complejo

Tendrán una parte real y una imaginaria, ambas de tipo float. Deben inicializarse en el constructor (con parámetros). Crear un constructor vacío que ponga 0,0

Crearemos las siguientes funciones:

sumar(complejo) ->Suma al número el número complejo que le pasamos

multiplicar(complejo)->Multiplica por el complejo que le pasamos

igual(complejo) -> devuelve true si los números complejos son iguales

Todas estas funciones trabajan con el propio número.

Crearemos también una propiedad virtual de sólo lectura que nos devuelva el valor absoluto del número complejo. El valor absoluto viene definido por la raíz cuadrada de la suma del cuadrado de a y b

Ejercicio Clases

Vamos a crear una clase Cliente que tendrá las siguientes propiedades:

  • Nombre
  • Apellido1
  • Apellido2
  • Altura (entero en cm)
  • Peso (decimal)

Creamos propiedades para todo.

Vamos a crear una propiedad NombreCompleto que nos devuelve la concatenación de nombre y dos apellidos

En el set de esta propiedad hacemos un split de la cadena que nos pasen y asignamos dependiendo de los valores obtenidos. Una palabra->al nombre, dos palabras, al nombre y 1 apellido, tres palabras, al nombre, apellido1 y apellido2, más de tres todas al último apellido

Creamos un constructor con todos los parámetros

Creamos un constructor sin parámetros que ponga en nombre ‘Anónimo’ sin apellidos, altura 170 y peso 80.

La fórmula para el IMC es el peso en kilogramos dividido por la estatura en metros cuadrados. Hagamos una propiedad que nos lo calcule.

Hagamos una propiedad Nivel que dependiendo del valor de IMC nos devuelva su nivel:

Por debajo de 18.5 Bajo peso
18.5 – 24.9 Normal
25.0 – 29.9 Sobrepeso
30.0 o más Obesidad

https://www.cdc.gov/healthyweight/spanish/assessing/bmi/adult_bmi/index.html

 

Ejercicio parámetros

Escribir una función a la que le podamos pasar cuantos números queramos y nos devuelva el mayor y el menor:

(int,int) Extremos(1,5,3,0,90,-5)–>(-5,90)

Ejercicio arrays

1.- Crear una función Diagonal que nos cree un array bidimensional de enteros con valor 0 menos la diagonal principal que vale 1

Diagonal(3)->

1 0 0

0 1 0

0 0 1

Ejercicios cadenas

1.- Crear una función InternalTrim que elimine espacios de más DENTRO de una cadena.

InternalTrim(“Hola      que    tal”)=>”Hola que tal”

2.- Crear una función ToTitleCase que nos ponga la primera letra de cada palabra en mayúsculas

ToTitleCase(“hoLA que TAL”)=>”Hola Que Tal”

3.- Crear una función VocalsCount que nos diga las vocales que hay en una cadena

VocalsCount(“Hola que tal”)=>5

4.- Lo mismo pero teniendo en cuenta acentos

Primero, pensar

https://www.microsiervos.com/archivo/ia/inteligencia-artificial-no-es-tan-lista.html

Quizá fue una sorpresa que al añadir las frases en cuestión como comienzo de las respuestas, todo mejorara mágicamente. Entre ellas están todas estas:

#1 Pensemos paso a paso.
#2 Primero,
#3 Pensemos esto con lógica.
#4 Resolvamos el problema dividiéndolo en pasos.
#5 Seamos realistas y pensemos paso a paso.
#6 Pensemos como un detective, paso a paso.
#7 Pensemos.
#8 Antes de adentrarnos en la respuesta,
#9 La respuesta va a continuación de la prueba.

Ejercicios funciones

1.- Crear una función a la que le pasamos una cadena y un tamaño y nos devuelve un array de ese tamaño con la cadena como elemento

CreateArray(“hola”,3)==>{“hola”,”hola”,”hola”}

2.- Crear una función suma a la que le pasamos un array de enteros y nos devuelva la suma

Suma({1,2,3})===>6

3.- Crear una función extremos a la que le pasamos un array de enteros y nos devuelva el mayor y el menor

Extremos({2,8,1})=>(1,8)

4.- Crear una función a la que le pasamos un tamaño y nos devuelve un array de ese tamaño de enteros rellenando con los números naturales

CreateNumbers(5)===>{1,2,3,4,5}

 

5.- Crear una función hasOrder que devuelve un booleano si el array de enteros que le pasamos está ordenado de menor a mayor

hasOrder(´{1,5,8,34})===>true

hasOrder(´{1,15,8,34})===>false

6.- Modificar la función anterior para que incluya un parámetro opcional que valga 0 o 1 indicando si queremos que el orden sea ascendente o descendente

(Si sabes hacerlo, utiliza un enum para el tipo)

7.- Crear una función ReverseNumbers que devuelva el array invertido

ReverseNumbers({1,2,3,4})====>{4,3,2,1}

Ejercicio Anagrama recursivo

Crear una función que, pasándole una palabra, nos imprima todos los anagramas posibles.

Ejemplo: Anagrama(“sol”)

Imprime:

sol

slo

osl

ols

lso

los

 

Convenciones de nombres en C#

https://github.com/ktaranov/naming-convention/blob/master/C%23%20Coding%20Standards%20and%20Naming%20Conventions.md

Object Name Notation Length Plural Prefix Suffix Abbreviation Char Mask Underscores
Namespace name PascalCase 128 Yes Yes No No [A-z][0-9] No
Class name PascalCase 128 No No Yes No [A-z][0-9] No
Constructor name PascalCase 128 No No Yes No [A-z][0-9] No
Method name PascalCase 128 Yes No No No [A-z][0-9] No
Method arguments camelCase 128 Yes No No Yes [A-z][0-9] No
Local variables camelCase 50 Yes No No Yes [A-z][0-9] No
Constants name PascalCase 50 No No No No [A-z][0-9] No
Field name camelCase 50 Yes No No Yes [A-z][0-9] Yes
Properties name PascalCase 50 Yes No No Yes [A-z][0-9] No
Delegate name PascalCase 128 No No Yes Yes [A-z] No
Enum type name PascalCase 128 Yes No No No [A-z] No