Skillbook Logo
foto profilo

Tutte le categorie


PAR GOL - Tecnico Software, con qualifica professionale EQF4 per diventare: Sistemista, Esperto di reti, Performance Tester

Gino Visciano | Skill Factory - 09/05/2024 08:07:39 | in Formazione e lavoro

Presso la nostra Academy puoi partecipare grauitamente al corso di Tecnico Software, grazie al progetto PAR GOL, finanziato dalla Regione Campania.
Il percorso di formazione è rivolto a tutti i giovani disoccupati che vogliono acquisire le competenze che servono nel mondo del lavaoro;  alla fine è previsto il rilascio della Qualifica Professionale Europea EQF4.

Il corso ha una durata di 300 ore e verrà svolto in presenza persso la nostra sede di Napoli - Centro Direzionale di Napoli isola E2.

Alla fine del percorso è previsto un tirocinio formativo presso le nostre aziende partner.

I partecipanti riceveranno un'indennità di €300,00 come rimborso spese, se avranno raggiunto l'80% delle presenze.

Il tecnico software è in grado di installare, configurare e personalizzare Sistemi Operativi, Reti e Software Applicativi secondo le esigenze del cliente. Esegue interventi di manutenzione, aggiornamento del software, di backup e recupero dati, implementa procedure di virtualizzazione ed esegue Performance Test per verificare la qualità dei sistemi.

Non perdere questa opportuntià per  acquisire le competenze che ti servono per entrare nel mondo del lavaoro, contattaci subito, il corso è a numero chiuso, appena raggiungiamo il numero d'iscrizioni richiesto, chiudiamo la selezione.


Come puoi contattarci velocemente:

Se ti sei registrato su Skillbook clicca qui e invia una richiesta d'informazioni, verrai contattato al più presto possibile.

Per registrati su Skillbook, clicca qui.

Altrimenti, se non ti sei registrato su Skillbook puoi contattarci collegandoti al nostro sito www.skillfactory.it.

In alternativa puoi inviare il tuo CV o una manifestazione d'interesse a: recruiting@skillfactory.it

oppure

chiamare ai seguenti numeri di telefono:

Tel.: 081/18181361
Cell.: 327 0870141


Per maggiori informazioni sul progetto PAR GOL, clicca qui.

Per maggiori informazioni sulle Qualifiche Professionali Europee (EQF), clicca qui.

 

 

 

Share Button

PAR GOL: Qualifiche Professionali Europee e Alfabetizzazione Informatica per tutti i giovani che non studiano e non lavorano. La Regione Campania finanzia la formazione.

Gino Visciano | Skill Factory - 25/04/2024 10:54:53 | in Formazione e lavoro

Il programma PAR GOL(Garanzia di Occupabilità dei Lavoratori) è attuato dalle Regioni e Province autonome sulla base dei Piani di attuazione regionali (PAR) approvati da Anpal.
E' un'azione di riforma prevista dal PNRR (Piano Nazionale di Ripresa e Resilienza) e ha l'obiettivo di riqualificare i servizi di politica attiva del lavoro

Mira a ridisegnare i servizi per il lavoro per favorire la formazione e l'inserimento lavorativo delle persone. Entro il 2025 coinvolgerà 3 milioni di disoccupati e inoccupati, una grande opportunità anche per i giovani che non studiano e non lavoro, che rientrano nella categoria NEET (Not in Education, Employment, or Training). I giovani NEET In Italia sono circa 2 milioni

Il programma GOL offre la possibilità di accedere a diversi corsi di formazione gratuiti, specificamente progettati per potenziare le competenze dei lavoratori, agevolarne la riqualificazione e favorire lo sviluppo del potenziale per l’inserimento o il reinserimento nel mercato del lavoro.
Questi corsi coprono una vasta gamma di settori e competenze, consentendo ai partecipanti di acquisire la abilità richieste dalle aziende.
Oltre alla formazione gratuita, è prevista anche una indennità di partecipazione e il rilascio di una Qualifica Professionale Europea (EQF).
Per approfondire l'argomento della Qualifica Professionale Europea (EQF), clicca qui.
 
 


Attraverso PAR GOL puoi anche migliorare sia le competenze digitali, sia le competenze trasversali indispensabili per qualunque ruolo professionale.

Il corso di formazione breve di "Key Competence" viene erogato in DAD (Didattica a Distanza) e prevede il rilascio della Qualifica Professionale Europea di tipo EQF2, hanno una durata di 60 ore e permettono di acquisire i contenuti seguenti:

1.Fondamenti di informatica generale;
2.Reti ed Internet;
3.Sistema operativo Windows/MS DOS;
4.Microsoft Word, Excel, PowerPoint e Outlook;
5.Organizzazione e principali processi aziendali;
6.Principi di project management;
7.Il lavoro di gruppo;
8.La gestione del tempo e delle priorità;
9.Come si crea un curriculum vitae.

 


Per partecipare al corso di formazione breve di "Key Competence", presso la nostra Academy "Skill Factory", rivolgiti al tuo centro per l'impiego (CPI), fornisci prima il codice identificativo della Skill Factory: 960 e successivamente quello del corso: 10777

Presso la nostra Academy delle Professioni Digitali, con il programma PAR GOL, puoi anche partecipare ai seguenti corsi di formazione, che ti permettono di entrare nel mercato del lavoro:


1.TECNICO DELLA PROGRAMMAZIONE E DELLO SVILUPPO DI PROGRAMMI INFORMATICI 
Codice corso: 10774

Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF5
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: Programmatore back-end (Java, C#, Python)


2.TECNICO PROGRAMMATORE SITI WEB
Codice corso: 10776

Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF5
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: Programmatore front-end (HTML/CSS, PHP, Angular, React)


3.TECNICO SOFTWARE
Codice corso: 10635

Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF4
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: Sistemista, Esperto di Cloud Computing e reti, Tester


4.TECNICO DELLA PROGETTAZIONE, IMPLEMENTAZIONE E MANUTENZIONE DI SISTEMI DI GESTIONE DI DATABASE
Codice corso: 10775

Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF5
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: SQL/NOSQL Database Administrator, Database Developer (Oracle, MS-SQL Server, MySQL, PostgreSQL, MongoDB)


5.TECNICO ESPERTO DI SICUREZZA INFORMATICA
Codice corso: 10639
Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF5
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: Sistemista, Esperto di Reti aziendali, Esperto di Cyber Security


6.SEGRETARIO-COORDINATORE AMMINISTRATIVO
Codice corso: 10778

Modalità didattica: in presenza presso Academy Skill Factory Centro Direzionale Napoli isola E2
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF5
Prerequisiti di accesso: Diploma
Sbocchi lavorativi: Responsabile Amministrazione/Segretaria aziendale, Gestione Risorse Umane, Esperto di Office Automation


7.OPERATORE DELLA INSTALLAZIONE E DELLA MANUTENZIONE DI IMPIANTI SPECIALI PER LA SICUREZZA
Codice corso: 10773
Modalità didattica: DAD (Didattica a distanza) e Tirocinio in presenza
Durata: 300 ore
Tirocinio: 80 ore
Livello Qualifica Professionale Europea: EQF3
Prerequisiti di accesso: Licenza media oppure Diploma
Sbocchi lavorativi: Tecnico di reti e d'impianti di videosorveglianza


Per maggiori dettagli sui nostri corsi di formazione del Catalogo PAR GOL clicca qui.
Per informazioni o per essere guidati sulla procedura di adesione al programma PAR GOL clicca qui per accedere al nostro sito www.skillfactory.it, seleziona il pulsante contattaci e compila e invia il form di richiesta informazioni o supporto.

Per aderire autonomamente al programma PAR GOL segui i passaggi seguenti:
1. Scegli uno dei nostri corsi formazione a cui vuoi partecipare, è importante il codice identificativo.‍
2. Se sei un giovane con età inferiore ai 30 anni iscriviti al portale Garanzia Giovani.
3. Recati al Centro Per l'Impiego (CPI) di preferenza per richiedere l'adesione al Programma GOL.
4. Comunica all'operatore del CPI il nome ed il codice identificativo del corso scelto dal catalogo formativo Skill Factory e il codice dell'agenzia:960.

Se hai bisogno di assistenza o informazioni ci puoi anche  contattarci ai seguenti recapiti:

Telefono: 08118181361
Cellulare: 327 087 0141
E-mail: segreteria@skillfactory.it

oppure puoi prenotare un appuntamento presso la nostra sede al Centro Direzionale di Napoli E2 scala A 1° piano.
Share Button

Competenze per programmare: le stringhe

Gino Visciano | Skill Factory - 13/04/2024 09:49:41 | in Tutorials


Le stringhe sono sequenze di caratteri delimitate da apici o doppi apici, ad esempio:

"Stringa delimitata da doppi apici"

oppure

'Stringa delimitata da singoli apici'.

L'uso dell'apice o del doppio apice dipende dal linguaggio di programmazione che stai utilizzando, ad esempio in Pyhton o JavaScript, per indicare le stringhe puoi usare sia gli apci che i doppi apici, in C, C++, Java e C#, devi usare i doppi apici, in SQL si usano solo gli apici. In PHP l'uso degli apici oppure dei doppi apici può avere un comportamento diverso, quindi se devi usare questo linguaggio approfondisci l'argomento.

I caratteri che compongono le stringhe sono gli stessi che si usano per scrivere e formattare il testo, in sintesi li possiamo distinguere nel modo seguente:

1) le lettere dell’alfabeto sia maiuscole, sia minuscole, incluese quelle dell'alfabeto inglese (J K W X Y);
2) le lettere accentate e i dittonghi;
3) lo spazio;
4) le cifre da 0 a 9;
5) i simboli d’interpunzione (. , ; : ? !);
6) tutti i tipi di parentesi () [] {};
7) qualunque altro tipo di simbolo usato per scrivere formule, valute, percentuali, apostrofi, accenti (+ - * /  ^ & % $ " ‘ etc.);
8) caratteri particolari utilizzati nelle diverse lingue del mondo;
9) Il carattere indefinito null;
10) i caratteri speciali per la formattazione del testo: return (vai a inizio riga) , il new line (vai sulla riga seguente) e la tabulazione (imposta più spazi tra le parole).

Quando lavori con le stringhe è importante decidere la codifica che intendi usare per il riconoscimento dei caratteri, perché se non usi la codifica giusta, il testo contenuto nelle stringhe potrebbe diventare incomprensibile.

Le codifiche principali sono 2:

1) ASCII o UTF-8;
2) UNICODE o UTF-16.

La codifica ASCII o UTF-8, la più comune, prevede 256 caratteri diversi, inclusi quelli speciali e occupa un byte per ogni carattere della stringa, mentre la codifica UNICODE o UTF-16, predefinita in Java, prevede 65536 caratteri diversi e occupa due byte per ogni carattere della stringa.

Quindi, se i caratteri di una stringa non incomprensibili, verifica sempre se la codifica che stai usando è quella giusta.

Operazioni principali per gestire le stringhe

Quando lavori con le stringhe sono fondamentali le seguenti operazioni:

1) verificare la lunghezza di una stringa;
2) convertire la stringa in maiuscolo o minuscolo;
3) trasformare un numero intero o decimale in stringa e viceversa;
4) dividere la stringa in sottostringhe;
5) scomporre una stringa in caratteri;
6) invertire i caratteri di una stringa;
7) cercare la posizione di una sottostringa in una stringa;
8) sostituire una sottostringa di una stringa con una ricorrenza diversa;
9) eliminare spazi da una stringa;
10) convertire una stringa in formato csv in un vettore di stringhe;
11) convertire un vettore di stringhe in una stringa.

Se hai già pronto l'ambiente di lavoro clicca qui.


Come preparare l'ambiente di lavoro per eseguire gli esempi Python e JavaScript

Per eseguire gli esempi di questa lezione devi prima prepare l'ambiente di lavoro svolgendo le seguenti attività:

1. Installazione di Python
Per eseguire il download del setup di Python clica qui.
Dopo il download del setup, eseguilo per installare Python.
Attenzione, durante l'installazione non dimenticare di spuntare l'opzione Add Python 3.X to PATH.
Per verificare la corretta installazione di Python, avvia il prompt dei comandi (cmd) ed esegui il comando:
python --version
Per completare l'attività su c: crea la directory lab_python, userai questa cartella per salvare gli esercizi Python.

2. Installazione Node.js (JavaScript)
Per eseguire il download del setup di Node.js clicca qui.
Dopo il download del setup, eseguilo per installare Node.js.
Per verificare la corretta installazione di Node.js, avvia il prompt dei comandi (cmd) ed esegui il comando:
node --version

In JavaScript per eseguire un input da tastiera, devi installare il modulo readline.sync.
Per eseguire questa operazione, sempre da prompt dei comandi, esegui il comando:
npm install readline-sync

Per completare l'attività su c: crea la directory lab_javascript, userai questa cartella per salvare gli esercizi JavaScript.

3. Installazione di Visual Studio Code
Per eseguire il download del setup di Visual Studio Code clicca qui.
Dopo il download del setup, eseguilo per installare Visual Studio Code.
Per verificare la corretta installazione di Visual Studio Code, avvia il prompt dei comandi (cmd) ed esegui il comando:
code --version

4. Configurazione di Visual Studio Code
Avvia Visual Studio Code cliccando sull'icona seguente:

Per configurare Python, premi i tasti ctrl ed n contemporaneamente per creare un nuovo file, altrimenti usa il menu, selezionando nuovo file di testo.
Scrivi nel file il comando seguente:
print("Hello World)

Premi i tasti ctrl ed s contemporaneamente per salvare il file, altrimenti usa il menu, selezionando file, salva.
Assicurati di salvare il file nella directory c:\lab_python, con il nome prova.py.
Conferma l'installazione di tutti i palg in proposti da Visual Studio Code.
Dopo il salvataggio, per eseguire il programma, clicca sul triangolino (Run Python File) che appare in alto a destra:

Usa la stessa procedura per creare e lanciare qualunque programma Python.

Per configurare JavaScript, premi i tasti ctrl ed n contemporaneamente per creare un nuovo file, altrimenti usa il menu, selezionando nuovo file di testo.
Scrivi nel file il comando seguente:
console.log("Hello World)

Premi i tasti ctrl ed s contemporaneamente per salvare il file, altrimenti usa il menu, selezionando file, salva.
Assicurati di salvare il file nella directory c:\lab_javascript, con il nome prova.js.
Conferma l'installazione di tutti i palg in proposti da Visual Studio Code.

Dopo il salvataggio, per eseguire il programma, apri un nuovo terminale:

Puoi eseguire questa operazione anche premendo contemporaneamente i tasti crtl shift ò.

Se il terminale proposto e di tipo Powershell (il prompt dei comandi inizia con PS), ti suggerisco di passare a quello standard, per evitare problemi di autorizzazioni.
Per passare da terminale Powershell a quello standard, esegui il comando:
cmd

Per eseguire i programmi JavaScript con Node.js, devi attivare la directory dove hai salvato i file, quindi esegui il comando seguente:
cd c:\lab_javascript

Per avviare il programma scrivi il comando:
node prova.js

Usa la stessa procedura per creare e lanciare qualunque programma JavaScript

Per imparare a programmare in Python e JavaScript clicca qui.


Gli esempi seguenti descrivono le tecniche fondamentali di programmazione per imparere a gestire le stringhe con Python e JavaScript.
Per eseguire il codice, crea un file di testo in Visual Studio Code, copia e incolla il codice dell'esempio e salvalo con estensione py nella directory c:\lab_python se è un esempio Python, altrimenti salvalo nella directory c:\lab_javascript con l'estensione js se è un esempio JavaScript

Infine, per avviare il codice procedi come indicato nell'attività:

4. Configurazione di Visual Studio Code

del capitolo "Come preparare l'ambiente di lavoro per eseguire gli esempi Python e JavaScript". 
 


Esempio 1

Visualizzare la lunghezza della stringa nominativo.

Soluzione Python:

# Lunghezza stringa
nominativo='Competenze per programmare'
print('Stringa nominativo: '+nominativo)
# La funzione len restitusce un numero intero che corrisponde alla lunghezza della stringa data come argomento
# La funzione str converte il numero intero corrispondente alla lunghezza della stringa, in stringa
# Python non riesce a concatenare stringhe con numeri interi o decimali, qundi i numeri devono essere trasformati in stringhe
print('Lunghezza stringa: '+str(len(nominativo))) 

----- OUTPUT -----

Stringa nominativo: Competenze per programmare
Lunghezza stringa: 26

Soluzione JavaScript:

// Lunghezza stringa
var nominativo='Competenze per programmare'
console.log('Stringa nominativo: '+nominativo)
console.log('Lunghezza stringa: '+nominativo.length) 

Esempio 2

Inserire due numeri da tastiera e stampare la loro somma.

Soluzione Python:

# Stampare la somma di due numeri interi inseriti da tastiera

# I numeri inseriti da tastiera sono stringhe, la funzione int li converte in numeri interi
numeroUno=int(input("Primo numero da sommare: "))
numeroDue=int(input("Secondo numero da sommare: "))
somma=numeroUno+numeroDue
# La funzione str converte i numeri interi o decimali in stringhe, perché Python concatena solo stringhe
print("La somma dei numeri "+str(numeroUno)+" e "+str(numeroDue)+" è "+str(somma)+".")

----- OUTPUT -----

Primo numero da sommare: 10
Secondo numero da sommare: 5
La somma dei numeri 10 e 5 è 15.

Soluzione JavaScript:

// Stampare la somma di due numeri interi inseriti da tastiera
// I numeri inseriti da tastiera sono stringhe, la funzione int li converte in numeri interi
var input=require("readline-sync")
var numeroUno=0
var numeroDue=0
numeroUno=parseInt(input.question("Primo numero da sommare: "))
numeroDue=parseInt(input.question("Secondo numero da sommare: "))
var somma=numeroUno+numeroDue
console.log("La somma dei numeri "+numeroUno+" e "+numeroDue+" è "+somma+".")

Esempio 3

Inserire un dividendo e un divisore da tastiera e stampare il risultato della loro divisione.

Soluzione Python:

# Stampare la divisione di due numeri decimali inseriti da tastiera

# I numeri inseriti da tastiera sono stringhe, la funzione float li converte in numeri decimali
dividendo=float(input("Dividendo: "))
divisore=float(input("Divisore: "))
risultato=dividendo/divisore
# Arrotondo il risultato a 2 cifre decimali con la funzione round
risultato=round(risultato*100)/100
print("La divisione tra "+str(dividendo)+" e "+str(divisore)+" è "+str(risultato)+".")

----- OUTPUT -----

Dividendo: 10
Divisore: 3
La divisione tra 10.0 e 3.0 è 3.33.
 

Soluzione JavaScript:

// Stampare la divisione di due numeri decimali inseriti da tastiera
// I numeri inseriti da tastiera sono stringhe, la funzione float li converte in numeri decimali
var input=require("readline-sync")
var dividendo=0.0
var divisore=0.0
var risultato=0.0
dividendo=parseFloat(input.question("Dividendo: "))
divisore=parseFloat(input.question("Divisore: "))
risultato=dividendo/divisore
// Arrotondo il risultato a 2 cifre decimali con la funzione round
risultato=Math.round(risultato*100)/100
console.log("La divisione tra "+dividendo+" e "+divisore+" è "+risultato+".")

 


Esempio 4

Inserire una frase da tastiera tutta minuscola e stampare le parole che la compongono in maiuscolo, usando lo spazio come separatore.

Soluzione Python:

# Stampa in maiuscolo le parole della frase inserita in minuscolo, usando lo spazio come separatore
frase=input("Inserisci una frase scritta in minuscolo: ")
# Estraggo tutte le parole della stringa con il metodo split, usando lo spazio come delimitatore
# Il metodo split crea una lista di stringhe che sono le parole della frase
parole=frase.split(" ")
# Leggo le parole dalla lista e le stampo in maiuscolo usando il metodo upper
for x in range(len(parole)):
    print(str(x+1)+") "+parole[x].upper())

----- OUTPUT -----

Inserisci una frase scritta in minuscolo: una bella giornata
1) UNA
2) BELLA
3) GIORNATA

Soluzione JavaScript:

// Stampa in maiuscolo le parole della frase inserita in minuscolo, usando lo spazio come separatore
var input=require("readline-sync")
var frase=""
frase=input.question("Inserisci una frase scritta in minuscolo: ")
// Estraggo tutte le parole della stringa con il metodo split, usando lo spazio come delimitatore
// Il metodo split crea una lista di stringhe che sono le parole della frase
parole=frase.split(" ")
// Leggo le parole dalla lista e le stampo in maiuscolo usando il metodo toUpperCase
for (var x=0;x<parole.length;x++){
    console.log((x+1)+") "+parole[x].toUpperCase())
}

 

Esempio 5

Inserire una frase da tastiera tutta minuscola e stampare le parole che la compongono in maiuscolo, usando lo spazio come separatore.

Soluzione Python:

# Stampa in minuscolo le parole della frase inserita in maiuscolo, usando lo spazio come separatore
frase=input("Inserisci una frase scritta in maiuscolo: ")
# Estraggo tutte le parole della stringa con il metodo split, usando lo spazio come delimitatore
# Il metodo split crea una lista di stringhe che sono le parole della frase
parole=frase.split(" ")
# Leggo le parole dalla lista e le stampo in minuscolo
for x in range(len(parole)):
    print(str(x+1)+") "+parole[x].lower())

 

----- OUTPUT -----

Inserisci una frase scritta in maiuscolo: UNA BELLA GIORNATA
1) una
2) bella
3) giornata

Soluzione JavaScript:

// Stampa in minuscolo le parole della frase inserita in maiuscolo, usando lo spazio come separatore
var input=require("readline-sync")
var frase=""
frase=input.question("Inserisci una frase scritta in maiuscolo: ")
// Estraggo tutte le parole della stringa con il metodo split, usando lo spazio come delimitatore
// Il metodo split crea una lista di stringhe che sono le parole della frase
parole=frase.split(" ")
// Leggo le parole dalla lista e le stampo in minuscolo usando il metodo toLowerCase
for (var x=0;x<parole.length;x++){
    console.log((x+1)+") "+parole[x].toLowerCase())
}

Esempio 6

Inserire una frase da tastiera e stampare i codici ASCII dei caratteri che la compongono.

Soluzione Python:

# Inserisci una frase e stampa il codice ASCII dei caratteri
frase=input("Inserisci una frase: ")
for x in range(len(frase)):
    print("["+frase[x]+"]{"+str(ord(frase[x]))+"}",end="")

----- OUTPUT -----

Inserisci una frase: Una bella giornata
[U]{85}[n]{110}[a]{97}[ ]{32}[b]{98}[e]{101}[l]{108}[l]{108}[a]{97}[ ]{32}[g]{103}[i]{105}[o]{111}[r]{114}[n]{110}[a]{97}[t]{116}[a]{97}

 

Soluzione JavaScript:

// Inserisci una frase e stampa il codice ASCII dei caratteri
var input=require("readline-sync")
var frase=""
var riga=""
frase=input.question("Inserisci una frase: ")
for (var x=0;x<frase.length;x++){
    riga+="["+frase.charAt(x)+"]{"+frase.charCodeAt(x)+"}"
}
console.log(riga)

Esempio 7

Inserire una frase da tastiera e stamparla al contrario.

Soluzione Python:

# Inserisci una frase e stampala al contrario
frase=input("Inserisci una frase: ")
for x in range(len(frase)-1,-1,-1):
    print(frase[x],end="")

----- OUTPUT -----

Inserisci una frase: Una bella giornata
atanroig alleb anU

Soluzione JavaScript:

// Inserisci una frase e stampala al contrario
var input=require("readline-sync")
var frase=""
var riga=""
frase=input.question("Inserisci una frase: ")
for (var x=frase.length-1;x>=0;x--){
    riga+=frase.charAt(x)
}
console.log(riga)

Esempio 8

Inserisci una frase da tastiera e cerca una parola, ignorando la differenza tra maiscolo e minuscolo.

 

Soluzione Python:

# Inserisci una frase e cerca una parola, ignora maiscolo e minuscolo
frase=input("Inserisci una frase: ").lower()
risposta='s'
while risposta=='s':
    parola=input("Inserisci la parola da cercare: ")
    posizione=frase.find(parola.lower())
    if posizione==-1:
        print("La parola "+parola+" non è stata trovata.")
    else:
        print("La parola "+parola+" è stata trovata alla posizione "+str(posizione+1)+".")
    risposta=input("Vuoi inserire una nuova parola da cercare (s/n)? ").lower()
    while risposta!='s' and risposta!='n':
        print("Errore: inserire s oppure n")
        risposta=input("Vuoi inserire una nuova parola da cercare (s/n)? ").lower()

----- OUTPUT -----

Inserisci una frase: Una bella giornata
Inserisci la parola da cercare: bella
La parola bella è stata trovata alla posizione 5.
 

Soluzione JavaScript:

 
// Inserisci una frase e cerca una parola, ignora maiscolo e minuscolo
var input=require("readline-sync")
var frase=""
frase=input.question("Inserisci una frase: ").toLowerCase()
do{
    parola=input.question("Inserisci la parola da cercare: ")
    posizione=frase.indexOf(parola.toLowerCase())
    if (posizione==-1){
        console.log("La parola "+parola+" non è stata trovata.")
    }else{
        console.log("La parola "+parola+" è stata trovata alla posizione "+(posizione+1)+".")
    }
    risposta=input.question("Vuoi inserire una nuova parola da cercare (s/n)? ").toLowerCase()
    while(risposta!='s' && risposta!='n'){
        console.log("Errore: inserire s oppure n")
        risposta=input.question("Vuoi inserire una nuova parola da cercare (s/n)? ").toLowerCase()
    }
}while(risposta=='s')
 

Esempio 9

Inserisci una frase da tastiera e cerca una parola, ignorando la differenza tra maiscolo e minuscolo.
Se trovi la parola cercata, sostituiscila con una nuova parola.

Soluzione Python:

# Inserisci una frase e cerca e sostituisci una parola
frase=input("Inserisci una frase: ")
risposta='s'
while risposta=='s':
    parola=input("Inserisci la parola da cercare: ")
    posizione=frase.lower().find(parola.lower())
    if posizione==-1:
        print("La parola "+parola+" non è stata trovata.")
    else:
        print("La parola "+parola+" è stata trovata alla posizione "+str(posizione+1)+".")
        parolaNuova=input("Inserisci la parola da sostituire: ")
        frase=frase.replace(parola,parolaNuova,posizione)
        print("La nuova frase è: "+frase+".")
    risposta=input("Vuoi inserire una nuova parola da cercare (s/n)? ").lower()
    while risposta!='s' and risposta!='n':
        print("Errore: inserire s oppure n")
        risposta=input("Vuoi inserire una nuova parola da cercare (s/n)? ").lower()
 

----- OUTPUT -----

Inserisci una frase: Una buona giornata
Inserisci la parola da cercare: buona
La parola buona è stata trovata alla posizione 5.
Inserisci la parola da sostituire: bella
La nuova frase è: Una bella giornata.

Soluzione JavaScript:

// Inserisci una frase e cerca e sostituisci una parola
var input=require("readline-sync")
var frase=""
var parolaCercata=""
var parolaNuova=""
frase=input.question("Inserisci una frase: ").toLowerCase()
do{
    parolaCercata=input.question("Inserisci la parola da cercare: ")
    posizione=frase.indexOf(parolaCercata.toLowerCase())
    if (posizione==-1){
        console.log("La parola "+parolaCercata+" non è stata trovata.")
    }else{
        console.log("La parola "+parolaCercata+" è stata trovata alla posizione "+(posizione+1)+".")

        parolaNuova=input.question("Inserisci la parola da sostituire: ")
        frase=frase.replace(parolaCercata,parolaNuova)
        console.log(frase)
    }
    risposta=input.question("Vuoi inserire una nuova parola da cercare (s/n)? ").toLowerCase()
    while(risposta!='s' && risposta!='n'){
        console.log("Errore: inserire s oppure n")
        risposta=input.question("Vuoi inserire una nuova parola da cercare (s/n)? ").toLowerCase()
    }
}while(risposta=='s')

Esempio 10

Inserisci una frase da tastiera e verifica se è palindroma.

Soluzione Python:

# Inserisci una frase e verifica se è palindroma
risposta='s'
while risposta=='s':
    palindroma=False
    frase=input("Inserisci una frase: ")
    # Elimino gli spazi dalla frase e la converto in minuscolo
    fraseBis=frase.replace(" ","").lower()
    # Elimino gli apostrofi dalla frase

    fraseBis=fraseBis.replace("'","")
    if len(fraseBis)<2:
        palindroma=True
    else:
        # Calcolo gli indici che servono per controllare i caratteri a sinistra della frase, con quelli a destra
        # Indice medio, che indica la fine del controllo
        indiceMedio=int(len(fraseBis)/2)
        # Indice finale, indica il primo carattere a destra, da confrontare con il primo carattere a sinistra della frase

        indiceFine=len(fraseBis)-1
        palindroma=True
        # Controllo tutti i caratteri a sinistra del punto medio della frease, con quellli a destra, se sono tutti uguali allora la frase è palindroma
        for x in range(indiceMedio):
            if fraseBis[x]!=fraseBis[indiceFine-x]:
                palindroma=False
                break
        if palindroma:
            print("La frase "+frase+" è palindroma.")
        else:    
            print("La frase "+frase+" non è palindroma.")
    risposta=input("Vuoi continuare (s/n)? ").lower()
    while risposta!='s' and risposta!='n':
        print("Errore: inserire s oppure n")
        risposta=input("Vuoi continuare (s/n)? ").lower()

 

Soluzione JavaScript:

// Inserisci una frase e verifica se è palindroma
var risposta = ''
var input = require("readline-sync")
var frase = ""
var indiceMedio = 0
var indiceFine = 0
do {
    var palindroma = false
    frase = input.question("Inserisci una frase: ")
    // Elimino gli spazi dalla frase e la converto in minuscolo
    fraseBis = frase.replace(" ", "").toLowerCase()
    // Elimino gli apostrofi dalla frase
    fraseBis = fraseBis.replace("'", "")
    if (fraseBis.length < 2) {
        palindroma = true
    } else {
        // Calcolo gli indici che servono per controllare i caratteri a sinistra della frase, con quelli a destra
        // Indice medio, che indica la fine del controllo
        indiceMedio = Math.floor(fraseBis.length / 2)
        // Indice finale, indica il primo carattere a destra, da confrontare con il primo carattere a sinistra della frase
        indiceFine = fraseBis.length - 1
        palindroma = true
        // Controllo tutti i caratteri a sinistra del punto medio della frease, con quellli a destra, se sono tutti uguali allora la frase è palindroma
        for (var x = 0; x < indiceMedio; x++) {
            if (fraseBis.charAt(x) != fraseBis.charAt(indiceFine - x)) {
                console.log(fraseBis.charAt(x))
                palindroma = false
                break
            }
        }
    }
    if (palindroma) {
        console.log("La frase " + frase + " è palindroma.")
    } else {
        console.log("La frase " + frase + " non è palindroma.")
    }
    risposta = input.question("Vuoi continuare (s/n)? ").toLowerCase()
    while (risposta != 's' && risposta != 'n') {
        print("Errore: inserire s oppure n")
        risposta = input.question("Vuoi continuare (s/n)? ").toLowerCase()
    }
} while (risposta == 's')

 

Esempio 11

Creare una stringa csv, che contiene 10 cognomi e nomi. Stampare l'elenco dei cognome e nomi della stringa, con un progressivo numerico e ordinati alfabeticamente.

Soluzione Python:

# Stampa elenco cognomi e nomi ordinato alfabeticamente
# csv = comma separated values (elenco valori separati da una virgola)
nominativiCSV="Rossi Alberto,Verdi Carla,Bianchi Roberta,Di Somma Paolo,De Gregorio Giacomo,"
nominativiCSV+="Rossi Paola,Verdi Loredana,Bianchi Alessandra,Rossi Sonia,Verdi Francesco"
# Trasformo con la funzione split, la stringa csv in una lista di nominativi
nominativi=nominativiCSV.split(",")
# Ordino il contenuto della lista in modo crescente
nominativi.sort()
for i in range(len(nominativi)):
    print(str(i+1)+") "+nominativi[i])

----- OUTPUT -----

1) Bianchi Alessandra
2) Bianchi Roberta
3) De Gregorio Giacomo
4) Di Somma Paolo
5) Rossi Alberto
6) Rossi Paola
7) Rossi Sonia
8) Verdi Carla
9) Verdi Francesco
10) Verdi Loredana

 

Soluzione JavaScript:

// Stampa elenco cognomi e nomi ordinato alfabeticamente
// csv = comma separated values (elenco valori separati da una virgola)
var nominativiCSV="Rossi Alberto,Verdi Carla,Bianchi Roberta,Di Somma Paolo,De Gregorio Giacomo,"
nominativiCSV+="Rossi Paola,Verdi Loredana,Bianchi Alessandra,Rossi Sonia,Verdi Francesco"
// Trasformo con la funzione split, la stringa csv in una lista di nominativi
var nominativi=nominativiCSV.split(",")
// Ordino il contenuto della lista in modo crescente
nominativi.sort()
for (var i=0;i<nominativi.length;i++){
    console.log((i+1)+") "+nominativi[i])
}

Esempio 12

Creare una lista che contiene 10 cognomi e nomi. Trasformare la lista in una stringa csv e stamparla.

Soluzione Python:

# Crea una lista con 10 cognomi e nomi e convertila in una stringa csv
nominativi=["Rossi Alberto","Verdi Carla","Bianchi Roberta","Di Somma Paolo","De Gregorio Giacomo",
"Rossi Paola","Verdi Loredana","Bianchi Alessandra","Rossi Sonia","Verdi Francesco"]
# Trasformo la lista di nominativi in una stringa csv
nominativiCSV=",".join(nominativi)
print(nominativiCSV)

----- OUTPUT -----

Rossi Alberto,Verdi Carla,Bianchi Roberta,Di Somma Paolo,De Gregorio Giacomo,Rossi Paola,Verdi Loredana,Bianchi Alessandra,Rossi Sonia,Verdi Francesco

Soluzione JavaScript:

// Crea una lista con 10 cognomi e nomi e convertila in una stringa csv
var nominativi=["Rossi Alberto","Verdi Carla","Bianchi Roberta","Di Somma Paolo","De Gregorio Giacomo",
"Rossi Paola","Verdi Loredana","Bianchi Alessandra","Rossi Sonia","Verdi Francesco"]
// Trasformo la lista di nominativi in una stringa csv
var nominativiCSV=nominativi.join(",")
console.log(nominativiCSV)

Che cos'è lo slicing?

In inglese ti slice significa affettare o sminuzzare; in programmazione è la tecnica che usano i programmatori per estrarre sottostringhe da una stringa.
Per eseguire questa operazione devi indicare la posizione iniziale e quella finale della sottostringa da estrarre, ricordando che l'inizio della stringa corrisponde sempre alla posizione 0, come mostra l'immagine seguente:

Con Python le posizioni si possono anche indicare con numeri negativi.

Esempio 13

Estrarre dalla stringa "La formazione crea 1000 opportunità di lavoro", la sottostringa "La formazione"

Soluzione Python:

# Estrarre la sottostringa "La formazione"
stringa="La formazione crea 1000 opportunità di lavoro"
sottostringa=stringa[0:13]
print(sottostringa)
# Oppure utilizzando le coordinate negative
sottostringa=stringa[:-32]
print(sottostringa)

 

----- OUTPUT -----

La formazione
La formazione

Soluzione JavaScript:

// Estrarre la sottostringa "La formazione"
stringa="La formazione crea 1000 opportunità di lavoro"
sottostringa=stringa.substring(0,13)
console.log(sottostringa)

 

Esempio 14

Estrarre dalla stringa "La formazione crea 1000 opportunità di lavoro", la sottostringa "1000"

Soluzione Python:

# Estrarre la sottostringa "1000"
stringa="La formazione crea 1000 opportunità di lavoro"
sottostringa=stringa[19:23]
print(sottostringa)

 

----- OUTPUT -----

1000

Soluzione JavaScript:

// Estrarre la sottostringa "1000"
var stringa="La formazione crea 1000 opportunità di lavoro"
var sottostringa=stringa.substring(19,23)
console.log(sottostringa)
 
 

Esempio 15

Estrarre dalla stringa "La formazione crea 1000 opportunità di lavoro", la sottostringa "lavoro"

Soluzione Python:

# Estrarre la sottostringa "lavoro"
stringa="La formazione crea 1000 opportunità di lavoro"
sottostringa=stringa[39:]
print(sottostringa)
# Oppure
sottostringa=stringa[-6:]
print(sottostringa)

 

----- OUTPUT -----

lavoro
lavoro

Soluzione JavaScript:

// Estrarre la sottostringa "Lavoro"
stringa="La formazione crea 1000 opportunità di lavoro"
sottostringa=stringa.substring(39)
console.log(sottostringa)

Leggi anche le altre lezioni:

COMPETENZE PER PROGRAMMARE: LA RAPPRESENTAZIONE DIGITALE DEI NUMERI INTERI E DECIMALI
COMPETENZE PER PROGRAMMARE: MONDO REALE E MONDO DIGITALE
COMPETENZE PER PROGRAMMARE: I SISTEMI DI NUMERAZIONE


Segui sul canale YouTube "Skill Factory Channel" la PlayLIst: COMPETENZE PER PROGRAMMARE
Per consultare il catalogo dei corsi online della nostra Academy ...

... collegati al nostro sito: www.skillfactory.it

 
Share Button

Competenze per programmare: la rappresentazione digitale dei numeri interi e decimali

Gino Visciano | Skill Factory - 24/03/2024 21:11:45 | in Tutorials

I numeri che usiamo si chiamano "Numeri reali", in base alle loro caratteristiche li possiamo organizzare nei seguenti insiemi:

I numeri, sia interi (relativi), sia decimali (razionali), servono per esprimere rispettivamente quantità intere o frazionarie.

Sono irrazionali i numeri che non si possono indicare attraverso il rapporto tra numeri interi, come ad esempio il pi greco, che indica il rapporto tra la misura della circonferenza di un cerchio e il suo diametro oppure il numero di Nepero (e).

In programmazione per indicare la parte decimale di un numero si usa il punto "." al posto della virgola ",", quindi negli esempi userò questa convenzione.

Esempio 1

Per indicare la quantità di auto nell'immagine seguente, basta usare il numero intero 9:

mentre per indicare la quantità di auto nell'immagine seguente, bisogna usare il numero decimale 8.5, perché l'ultima auto è divisa a metà:

 

Esempio 2

Il risultato dell'espressione 10/2 è 5 che è un numero intero, perché il numero 10 può essere diviso esattamente in due parti intere, ciascuna composta da 5 unità.

Il risultato dell'espressione 10/3 è 3.33333 che è un numero decimale, perché il numero 10 può essere diviso in 3 parti intere, ciascuna composta da 3 unità, ma ne resta una che deve essere frazionata in 3 parti decimali da 0.33333.

Attenti, quando la quantità di cifre decimali di un numero è indefinita, ovvero quando l'unità non è divisibile in parti esattamente uguali, come nel caso del riusultato della divisione 10/3 = 3.33333..., il numero può essere scritto nel modo seguente:

e si legge 3.3 periodico, perché il numero di 3 della parte decimale potrebbe essere infinito.

In programmazione, quando il numero di decimali è periodico, bisogna indicare la precisione del numero ovvero il numero di cifre da indicare dopo la virgola, per questo motivo nei linguaggi di programmazione si fa la distinzione tra numeri decimali a singola precisione (float) e doppia precisione (double). Di solito i numeri a doppia precisione si usano in ambiti scientifici, quelli a singola precisione per tutti gli altri ambiti.

Esempio 3 

I numeri si possono anche rappresentare sugli assi cartesiani, come mostra l'immagine seguente:

Se l'asse cartesiano è orizzontale si chiama asse delle ascisse e si indica con la lettera X, mentre se è verticale si chiama asse delle ordinate e si indica con la lettera Y.

Un piano su cui si disegna sia l'asse delle "Ascisse", sia l'asse delle "Ordinate" viene detto "Piano Cartesiano".

Il numero 0, si trova nel punto in cui gli assi X e Y s'incontrano e viene chiamato origine. Lo zero divide i numeri positivi (segno +) da quelli negativi (segno -) di entrambi gli assi; sia i numeri positivi, sia i numeri negativi sono infiniti.

Attenti, quando scrivete un numero positivo, non siete obbligati ad indicare il segno +, mentre quando scrivete un numero negativo il segno - è obbligatorio.

Sugli assi cartesiani, la parte decimale di un numero è sempre compresa nel segmento che unisce due numeri interi consecutivi. 

L'immagine seguente mostra la posizione del numero 2.5 sull'asse X:

Ricordate che il punto centrale di un segmento che lo divide in due parti uguali è detto punto medio.

L'immagine seguente mostra la posizione del il numero -3.2 sull'asse X:

Per indicare la parte decimale 0.2 dovete posizionarvi esattamente nel punto che corrisponde alla quinta parte del segmento, perché 1/5=0.2, come mostra l'immagine.

Come ci ha insegnato il filosofo greco Democrito, un segmento può essere diviso infinite volte, per questo motivo la quantità di cifre decimali di un numero può anche essere molto grande; maggiore è il numero di decimali, tanto maggiore è il numero di volte che vengono divise le parti del segmento. La precisione, ovvero la quantità di cifre decimali di un numero, serve per capire fino a quando dobbiamo continuare  dividere le parti del segmento, per evitare di continuare all'infinito.  

In che modo i computer memorizzano i numeri interi?

I computer sono macchine elettroniche di tipo digitale, a differenza degli uomini, per scrivere i numeri possono usare solo due cifre: 0 e 1 chiamate bit (binary digit), per questo motivo usano il sistema di numerazione binario.  

I computer memorizzano i numeri nella RAM (Random Access Memory); la memoria ad accesso casuale composta da tanti interruttori, chiamati flip-flop, che permettono di scrivere i numeri in forma binaria - se l'interruttore spento (-) la cifra è zero, se è acceso (+) la cifra è uno. 

    

Clicca qui per conoscere la differenza tra mondo reale e mondo digitale.

Nei linguaggi di programmazione le variabili oppure gli oggetti che possono contenere tipi interi si dichiarano con: int oppure Integer, ad esempio:

int x=10;

Integer y=20;

In SQL le colonne di una tabella che possono contenere numeri interi di dichiarano con la parola chiave numeric, ad esempio:

create table magazzino(id numeric(7), quantita numeric(7),...);

Quando un computer memorizza nella RAM un numero intero, usa il primo bit a sinistra (quello più significativo) per indicare il segno; se il primo bit più significativo è 0 il numero intero è positivo, altrimenti è negativo. Gli altri bit servono per indicare il modulo del numero intero.

Per i numeri positivi, il modulo è rappresentato semplicemente dal valore binario del numero da memorizzare.

Per i numeri negativi, il modulo è rappresentato in complemento a 2.

Ad esempio, se il computer usa 32 bit (4 byte) per memorizzare un numero intero con il segno (int signed), con 4 byte si può scrivere qualunque numero intero, negativo o positivo, compreso nell'intervallo: –2.147.483.648 e 2.147.483.647.

2.147.483.647 = [0](segno)[1111111 11111111 11111111 11111111](modulo = valore binario del numero 2147483647)

–2.147.483.648  = [1](segno)[00000000 00000000 00000000 00000000](modulo = complemento a 2 del numero 2147483648)

Complemento a 2

Per calcolare il complemento a 2 di un numero binario è semplice, basta invertire i valori dei bit, gli zeri diventano uno e gli uno diventano zero e aggiungere 1 al numero che si ottiene.

Ad esempio, il complemento a 2 binario del numero 10 (decimale) si calcola nel modo seguente:

1) converto il numero 10 decimale in binario:

10 (decimale) = 1010 (binario)

2) Calcolo il complemento a 1 del numero 1010 invertendo gli zeri con uno e gli uno con zero:

1010 (binario) = 0101 (complemento a 1)

3) aggiungo 1 al numero 0101:

0101+
0001=
---------
 0110 (Complemento a 2 del numero binario 1010)

Allo stesso modo possiamo calcolare il complemento a 2 del numero decimale 2.147.483.648:

1) converto il numero 2.147.483.648 decimale in binario:

2.147.483.648 (decimale) = 10000000 00000000 00000000 00000000  (binario)

2) Calcolo il complemento a 1 del numero 10000000 00000000 00000000 00000000  invertendo gli zeri con uno e gli uno con zero:

10000000 00000000 00000000 00000000  (binario) = 01111111 11111111 11111111 11111111 (complemento a 1)

3) aggiungo 1 al numero 01111111 11111111 11111111 11111111:

01111111111111111111111111111111+
00000000000000000000000000000001=
-----------------------------------------------------------
10000000000000000000000000000000 (Complemento a 2 del numero binario 01111111
111111111111111111111111)

Attenti, nella rappresentazione dei computer a 32 bit, giacché l'ultimo bit serve per il segno, vengono memorizzati solo i primi 31 bit.
 
In che modo i computer memorizzano i numeri decimali?
I numeri decimali possono essere a virgola fissa oppure a virgola mobile. In quelli a virgola fissa le quantità di decimali dopo la virgola è predefinita, quindi la posizione della virgola non cambia, mentre per quelli a virgola mobile la quantità di decimali può variare, quindi la posizione della virgola più cambiare.
 
Nei linguaggi di programmazione i tipi float e double indicano numeri decimali a virgola mobile, la differenza è la precisione, i double hanno un maggior numero di decimali dopo la virgola rispetto ai float. Il tipo decimal usato in SQL per impostare le colonne con numeri decimali è a virgola fissa. La parola chiave decimal permette di specificare sia la quantità di cifre totali che compongono il numero, sia quanti sono quelli decimali, ad esempio:
create table dipendenti (
...
stipendio decimal(9,2),
...)
 

La rappresentazione nei computer a virgola fissa è molto semplice: il byte più significativo rappresenta il segno, un certo numero di byte viene utilizzato per rappresentare la parte intera, segue quindi un altro numero di byte per rappresentare la parte decimale, come mostra l'immagine seguente:

Ad esempio, convertiamo in binario il numero decimale 17,55, immaginando di avere 16 bit a disposizione:

1) Il bit più significativo è uguale a 0, perché il numero è positivo.
2) La parte intera, immaginiamola di 7 bit, è uguale a:

2^6=64 -> 0
2^5=32 -> 0
2^4=16 -> 1
2^3=8 -> 0
2^2=4 -> 0
2^1=2 -> 0
2^0=1 -> 1

17 (decimale) = 0010001 (binario)

Se la parte intera fosse stata negativa avremmo dovuto calcolare il complemento a 2.

3) La parte decimale, immaginandola di 8 bit, è uguale a:

2^-1=0.5 -> 1
2^-2=0.25 -> 0
2^-3=0.125 -> 0
2^-4=0.0625 -> 0
2^-5=0.03125 -> 1
2^-6=0,015625 -> 1
2^-7=0,0078125 -> 0
2^-8=0,00390625 -> 0

0.55 (decimale) = 10001100 (binario)

Quindi

17.55 (decimale) =0(segno) 0010001.10001100

Ricordate che il simbolo ^ indica la potenza.
 
Per la rappresentazione dei numeri decimali in virgola mobile i computer usano lo standard IEEE 754 con il quale si definiscono due formati: uno per la precisione singola a 32 bit e l'altro per la precisione doppia a 64 bit.
 
Questo standard segue la notazione scientifica e permette al computer di memorizzare i numeri decimali attraverso tre tipi d'informazioni:
 
 
I bit per la precisione singola hanno la seguente organizzazione:

bit 31 (1) segno
bit 23-30 (8) esponente
bit 0-22 (23) mantissa

mentre per la precisione doppia l'organizzazione è la seguente:

bit 63 (1) segno
bit 52-62 (11) esponente
bit 0-51 (52) mantissa

Il numero viene composto in base alla formula seguente:
 
Numero = (-1)^segno*2^esponente*mantissa
 
Facciamo un esempio:
 
Rappresentiamo in virgola mobile a precisione singola il numero decimale 13.25:
 
1) Il bit più significativo è uguale a 0 perché il numero è positivo
2) Il modulo della parte intera 13 (decimale) è uguale a: 1101 (binario)
3) la parte decimale 0.25 è uguale a: 01 (binario)
 
Quindi
 
13.25 (decimale) = 1101.01 (binario)
 
Usando la notazione scientifica in base 2 lo riscrivo nella forma:
 
1.10101 * 2^3.
 
A questo punto ho tutte informazioni per ottenere il segno, l'esponente e la mantissa:
 
SEGNO=0
ESPONENTE=3+127=130 (decimale) = 10000010 (binario)
 
Per ottenere la mantissa basta prendere il numero 1.10101 ed escludere l'1 prima della virgola, quindi:
 
MANTISSA= 10101 (binario)
 
Il risultato finale è il seguente:
 

 INFORMATICA APPLICATA

Laboratorio

Creare un programma che trasforma i numeri interi nella rappresentazione binaria a 32 bit usata dai computer per memorizzare le informazioni numeriche.

Soluzione JavaScript


// Funzioni
function convertiBinario(numeroIntero){
    let numeroBinario=[]
    let resto
    while (numeroIntero>1){
        resto=numeroIntero%2
        numeroBinario.push(resto)
        numeroIntero=Math.floor(numeroIntero/2)
    }
    numeroBinario.push(numeroIntero)
    for(let i=31-numeroBinario.length;i>0;i--){
        numeroBinario.push(0)
    }
    numeroBinario.reverse()
    return numeroBinario
}

function complemento2(numeroBinario){
    let inverti=[1,0]
    riporto=1
    for (let i=0;i<numeroBinario.length;i++){
        numeroBinario[i]=inverti[numeroBinario[i]]
    }
    for(let i=numeroBinario.length-1;i>0;i--){
        if (numeroBinario[i]==1 && riporto==1){
            numeroBinario[i]=0
            riporto=1
        }else if (numeroBinario[i]==1 && riporto==0){
            numeroBinario[i]=1
            riporto=0
        }else if (numeroBinario[i]==0 && riporto==1){
            numeroBinario[i]=1
            riporto=0
        }else{
            numeroBinario[i]=0
            riporto=0
        }
    }
}
// Programma
let input=require("readline-sync");
let numeroIntero=0
let numeroBinario=[]
let numeroBinarioStr=""
let segno=0
numeroIntero=parseInt(input.question("Numero intero: "))
while (numeroIntero<-2147483648 || numeroIntero> 2147483647){
    print("Errore: inserire un numero compreso tra -2147483648 e 2147483647")
    numeroIntero=parseInt(input.question("Numero intero: "))
}
if (numeroIntero<0){
    segno=1
    numeroBinario=convertiBinario(-(numeroIntero))
    complemento2(numeroBinario)
}
else if (numeroIntero>0){
    segno=0
    numeroBinario=convertiBinario(numeroIntero)
}
numeroBinarioStr="["+segno+"]["
for (let i=0;i<numeroBinario.length;i++){
    if (i<31){
        numeroBinarioStr+=numeroBinario[i]
    }
}
numeroBinarioStr+="]"
console.log(numeroBinarioStr)

 

Soluzione Python


# Funzioni

# Converte numero intero in binario
def convertiBinario(numeroIntero):
    numeroBinario=[]
    while numeroIntero>1:
        resto=numeroIntero%2
        numeroBinario.append(resto)
        numeroIntero=int(numeroIntero/2)
    numeroBinario.append(numeroIntero)
    for i in range(31-len(numeroBinario)):
        numeroBinario.append(0)
    numeroBinario.reverse()
    return numeroBinario

# Calcola il complemento a due di un numero binario
def complemento2(numeroBinario):
    inverti=[1,0]
    riporto=1
    for i in range(len(numeroBinario)):
        numeroBinario[i]=inverti[numeroBinario[i]]
    for i in range(len(numeroBinario)-1,0,-1):
        if numeroBinario[i]==1 and riporto==1:
            numeroBinario[i]=0
            riporto=1
        elif numeroBinario[i]==1 and riporto==0:
            numeroBinario[i]=1
            riporto=0
        elif numeroBinario[i]==0 and riporto==1:
            numeroBinario[i]=1
            riporto=0
        else:
            numeroBinario[i]=0
            riporto=0

# Programma
numeroIntero=0
numeroBinario=[]
segno=0
numeroIntero=int(input("Numero intero: "))
while numeroIntero<-2147483648 or numeroIntero> 2147483647:
    print("Errore: inserire un numero compreso tra -2147483648 e 2147483647")
    numeroIntero=int(input("Numero intero: "))
if numeroIntero<0:
    segno=1
    numeroBinario=convertiBinario(-(numeroIntero))
    complemento2(numeroBinario)
elif numeroIntero>0:
    segno=0
    numeroBinario=convertiBinario(numeroIntero)
print("["+str(segno)+"][",end="")
for i,x in enumerate(numeroBinario):
    if i<31: print(x,end="")
print("]")


Leggi anche le altre lezioni:

COMPETENZE PER PROGRAMMARE: MONDO REALE E MONDO DIGITALE
COMPETENZE PER PROGRAMMARE: I SISTEMI DI NUMERAZIONE


Segui sul canale YouTube "Skill Factory Channel" la PlayLIst: COMPETENZE PER PROGRAMMARE
Per consultare il catalogo dei corsi online della nostra Academy ...

... collegati al nostro sito: www.skillfactory.it

 
Share Button

CV Story (Gino Visciano): "La rivoluzione WWW (World Wide Web) e i linguaggi visuali" - Terza parte, gli anni '2000 (inizio del primo decennio)

Gino Visciano | Skill Factory - 08/03/2024 18:53:50 | in Work experience

Gli avvenimenti degli anni 90', hanno contribuito molto alla rivoluzione World Wide Web che si è verificata all'inizio degli anni 2000', tra questi quelli più importanti sono stati sicuramente:

1982 - la definizione del protocollo di rete TCP/IP, fondamentale per il funzionamento di Internet.
1984 - la nascita del sistema DNS (Domain Name System), che permette di assegnare i nomi di dominio alle reti in Internet
1990 - la nascita del protocollo applicativo HTTP (Hypertext Transfer Protocol) e del linguaggio HTML (Hypertext Markup Language)

Nel 1991 il CERN (Centro Europeo di Ricerca Nucleare) annuncia la nascita del World Wide Web e inizia l'era del WEB 1.0. Ricordo che le pagine web erano statiche, ma l'utilizzo dell'HTML e dei browser rappresentava una novità significativa, perché allora eravamo abituati a lavorare principalmente con interfacce di tipo testo.

Naturalmente un ruolo importante nella diffusione del WWW lo hanno avuto i web server, a quel tempo il più diffuso era il daemon HTTP, sviluppato da Rob McCool al NCSA (National Center for Supercomputing Application), ma nel 1995 nacque APACHE, uno dei più importanti progetti proposta dall'Apache Software Foundation, una delle più grandi comunità distribuite di sviluppatori che lavorano su progetti open source.


 

Il primo browser che ho utilizzato è stato MOSAIC, creato dall'NCSA (National Center for Supercomputer Applications) dell’Università dell’Illinois, ma velocemente nascevano nuovi browser con caratteristiche sempre più evolute, come ad esempio: Netscape, Mozilla Firefox, Internet Explorer, Opera e Safari.

E' difficile descrivere le emozioni che provavo quando ho iniziato a navigare con i primi browser sul Web attraverso Internet , perché allora non avevamo ancora né le conoscenze, né le abilità per capire quello che di lì a poco avrebbe cambiato radicalmente il nostro modo di lavorare e le nostre abitudini, ma dopo la meraviglia è prevalsa voglia di scoprire e comprendere tutto quello che rappresentasse il WWW.    

Le mie prime pagine web dinamiche le ho create con il linguaggio C, utilizzando la tecnica CGI (Common Gateway Interface - interfaccia comune). Il browser inviava le richieste di pagine HTML al server web, il server leggeva la richiesta, ad esempio pagina.cgi ed eseguiva il programma c corrispondente.

Allora c'era il problema che gli interpreti HTML dei browser non erano standardizzati come accade oggi e spesso utilizzando browser diversi si ottenevano risultati differenti e inaspettati, difficili da prevedere e gestire.  

Il programma c, durante l'esecuzione, attraverso la funzione printf, come se fosse una normale operazione di output,  creava la pagina HTML da inviare al browser, come mostra il codice seguente.

#include <stdio.h>
int main(void)  {

/*informazione necessaria per la risposta*/
    printf("Content-type: text/html\n\n"); 
 
 /*Inviamo su STDOUT i tag HTML*/
  printf("<html>\n"
         "<head>\n"
         "<title>Hello World!</title>\n"
         "</head>\n"
         "<body>\n"
         "<h1><p align=\"center\">Hello World</p></h1>\n"
         "</body>\n"
         "</html>\n");
  return 0;

}

Il client inviava le richieste get/post al server esattamente come facciamo ancora oggi:

<form method="GET" action="/cgi-bin/benvenuto.cgi">
   Nome:<input type="text" name="nome"><br />
   Cognome:<input type="text" name="cognome"><br />
  <input type="submit" value="Clicca">
</form>

La tecnica CGI per creare pagine web dinamiche con il tempo è stata sostituita da quella di tipo SERVER SIDE, più semplice della precedente perché il codice HTML poteva essere utilizzato direttamente con il linguaggio di programmazione usato per creare la pagina web (HTML-embedded).

I linguaggi di tipo SERVER SIDE più conosciuti sono i seguenti:

1) PHP, originariamente conosciuto come Personal Home Page, oggi noto come Hypertext Preprocessor, processore di ipertesti. PHP combina il codice l'HTML con un linguaggio di programmazione simile a C e Perl.

2) ASP (Active Server Page), la soluzione Microsoft che permetteva di creare pagine web dinamiche, utilizzando l'HTML con il linguaggio di programmazione  VBscript oppure quello JScript. Questa tecnologia oggi è stata completamente da quella ASP.NET, che permette di creare pagine web dinamiche attraverso la scrittura di pagine Razor, che combinano codice HTML con codice C#.

3) JSP (Java Server Page), la soluzione creata da Sun Microsystems per creare pagine web dinamiche, utilizzando l'HTML con il linguaggio di programmazione Java, la stessa che usiamo ancora oggi.
 


Oltre ai linguaggi SERVER SIDE, a favorire in tutto il mondo lo sviluppo dei siti web, dei portali e dei blog, è stata anche la diffusione dei Content Management System o CMS.

CMS con cui ho lavorato sono il WordPress, Joomla, Drupal e Dreamweaver, tra questi quello che ha avuto maggiore successo è stato senza dubbio WordPress

WordPress è nato nel 2003 dall’idea congiunta di Matt Mullenweg e Mike Little, ben presto si è affermato in rete come uno dei servizi di personal publishing più scelti al mondo. Svariate ricerche condotte riguardo alla popolarità delle piattaforme di personal publishing hanno mostrato che WordPress si colloca al primo posto, seguito da Joomla e Drupal. 

A determinare ancora di più Il successo di Internet e del World Wide Web è stato il passaggio dal WEB 1.0 al WEB 2.0. Il termine WEB 2.0 fu coniato per la prima volta tra il 2004 e il 2005, dall'editore americano, “O’Reilly Media” - inizia l'era dei social network e il World Wide Web diventa accessibile a tutti.

 

I primi anni del 2000 sono anche stati caratterizzati dalla nascita dei primi linguaggi di programmazione di tipo visuale,  io conoscevo bene il Visual Basic della Microsoft, con cui ho iniziato a creare le mie prime applicazioni con interfacce grafiche (GUI - Graphical User Interface).

Le GUI di tipo desktop inizialmente le creavo con i Windows Form, poi, con il passaggio al framework .NET,  ho iniziato ad usare WPF o Windows Presentation Foundation, che creava le GUI, con il linguaggio xaml (extensible application markup language).

Ben presto però, con la diffusione delle applicazioni Web, anche l'uso della tecnologia WPF, venne sostituita dai Web Form, che permettevano di creare GUI di tipo HTML.

Tutto quello che riuscivo a fare con il Visual Basic, lo avevo imparato leggendo il libro "Visual Basic 5", della McGraw-Hill scritto da Gary Cornell e il libro "Sviluppare con componenti Visual Basic 6.0", della Mondadori, scritto da Guy Eddon e Henry Eddon. 

Conservo ancora questi libri nella mia libreria, tra gli altri libri d'informatica, che spesso consulto per ricordare i concetti che con il tempo si perdono oppure per confrontare il presente con il passato, per capire come cambiano ed evolvono gli strumenti e le tecniche che applichiamo nel nostro lavoro.

La frase che mi colpì subito del libro "Visual Basic 5" fu: "un immagine vale più di mille parole", perché in sintesi descriveva il cambiamento che stavamo vivendo.     

Così ho iniziato a creare applicazioni Windows con GUI che, oltre ai normali controlli, contenevano anche menu ed icone. Usavo DDE (Dynamic Data Exchange) e oggetti OLE (Object Linking and Embedding) per far comunicare le applicazioni che creavo altre applicazioni di Windows e utilizzavo controlli ActiveX per rendere più potenti le mie applicazioni Web.

Naturalmente per sviluppare applicazioni con Visual Basic e gestire la persistenza dei dati ero diventato anche un esperto di disegno, amministrazione e implementazione di SQL Server.

Ho lavorato e fatto il docente di Visual Basic fino al 2002, quando la Microsoft, per contrastare il crescente dominio di Java, creato dalla Sun Microsystems, introdusse il nuovo framework .NET (DOTNET), un ecosistema composto dai nuovi linguaggi: Visual Basic .NET e Visual C# .NET. Le caratteristiche principali di DOTNET erano le seguenti:

  • Linguaggi di programmazione ad oggetti
  • Trasportabilità delle applicazioni attraverso l'Intermediate Language (IL)
  • Ambiente di esecuzione (runtime): Common Language Runtime (CLR)
  • Libreria: Base Class Library (BCL)
  • Possibilità di ampliare le funzionalità con NuGet, il gestore di pacchetti di .NET (simile a quello che è npm per Node.js)
  • Il server Web IIS (Internet Information Server), progettato per fornire contenuto Web agli utenti. 

 

E' stato poi il mercato a decidere che il linguaggio C# diventasse il linguaggio di programmazione ad oggetti più utilizzato dalle aziende IT, per sviluppare applicazioni professionali su piattaforme Windows .NET.

Allora collaboravo ancora con Elea e DGS e la crescente domanda di specializzazione, mi spinse ad ottenere le seguenti certificazioni Microsoft:

  • Microsoft Certified Solution Developer (MCSD)
  • Microsoft Certified Technology Specialist (MCTS)
  • Microsoft Certified Professional Developer (MCPD)

 

Tutto quello che mi serviva per superare gli esami di certificazione, l'ho studiato dai libri e dai manuali seguenti:

 

Continua con gli anni '2000, la fine del primo decennio ...
Share Button
TOP