Programación orientada a objetos en PHP 2: Constructores y destructores

Y aquí va la segunda entrega del minicurso de programación orientada a objetos en PHP. Esta vez toca el turno a los constructores y a los destructores. Si todo va bien mañana publicaré el enlace al vídeo.

Programación orientada a objetos en PHP 2: Constructores y destructores

Respuesta a la pregunta #2. ¿Cómo hacer un bucle infinito?

Hoy vamos a ver la respuesta a la pregunta ¿Cómo hacer un bucle infinito?.

Teníamos el código:

#include <stdio.h>
 
int main() {
	char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito (ciclo %d)\n", i);
	}
 
	return 0;
}

y se trataba de convertirlo en un bucle infinito sin modificar el for y usando números enteros. Una posible solución es:

#include <stdio.h>
 
int main() {
	unsigned char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito (ciclo: %d)\n", i);
	}
 
	return 0;
}

El problema era que el bucle no era infinito porque cuando la variable i llega a 127 y le sumamos 1 se convierte en -128. Como este es un número negativo la condición del for ya no se cumple.

Al usar un unsgined, cuando la variable i llega a 255 si la incrementamos pasa al siguiente número válido que es el 0. De esta forma ya tenemos uno de los incómodos bucles infinitos.

Pregunta de examen en C ¿es un bucle infinito?

En el siguiente programa ¿se produce bucle infinito? ¿por qué?

#include <stdio.h>
 
int main() {
	int i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito\n");
	}
 
	return 0;
}

La respuesta en un par de días.

Curso de programación en C para principiantes

Ejercicios de C resueltos y comentados

Python: sacar las iniciales de un nombre

A veces me maravillo con lo que se puede hacer en Python con un poco de imaginación. Os dejo aquí un sencillo ejemplo que permite extraer la iniciales de un nombre. Por ejemplo:

Luisa Puerros Cebollas -> LPC
Paco Larvas -> PL

Y aquí el código:

import re
 
m = re.findall('([A-Z])[A-Za-z]* *', "Luisa Puerros Cebollas")
iniciales = "".join(m)
print(m, iniciales)

La expresión regular de findall nos buscará las palabras separadas por un espacio y devolverá una lista con las iniciales. Con join juntamos los elementos de la lista en una única cadena.

PyQT (y II): Ejemplo de qLabel, qLineEdit y qButton

En esta segunda entrega de PyQT vamos a ver un ejemplo que usa una etiqueta (qLabel), un control para edición de texto (qLineEdit) y un botón (qButton).

En este ejemplo tenemos un qLineEdit cuyo contenido podemos borrar al hacer click en el botón borrar:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
 
class Controles(QWidget): 
    def __init__(self, *args): 
        QWidget.__init__(self, *args)
 
        contenedor = QVBoxLayout()
        self.setLayout(contenedor)
 
        label = QLabel("Texto: ")
        contenedor.addWidget(label)
 
        self.qle_texto = QLineEdit()
        contenedor.addWidget(self.qle_texto)
 
        btnBorrar = QPushButton("Borrar",None)
        contenedor.addWidget(btnBorrar)
        self.connect(btnBorrar, SIGNAL("clicked()"), self.borrar)
 
        btnSalir = QPushButton("Salir",None)
        contenedor.addWidget(btnSalir)
        self.connect(btnSalir, SIGNAL("clicked()"), self.salir)
 
    def borrar(self):
        self.qle_texto.setText("")
 
    def salir(self):
        exit()
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    controles = Controles()
    controles.show()
    sys.exit(app.exec_())