Concatenamento

In linguaggio formale e programmazione software il concatenamento (o concatenazione) indica un procedimento in cui parole o numeri vengono legati insieme a formare, rispettivamente, una sola parola o numero.[1][2]

Ad esempio, concatenando "piano" e "forte" si ottiene "pianoforte", oppure concatenando i numeri 5 e 12 si ottiene il numero 512.

Quest'operazione è spesso utilizzata nei linguaggi di programmazione per l'unione di stringhe.

Definizione

Siano L 1 , L 2 {\displaystyle L_{1},L_{2}} due linguaggi costruiti su un dato un alfabeto Σ {\displaystyle \Sigma } . Il concatenamento L 1 L 2 {\displaystyle L_{1}L_{2}} rappresenta tutte le stringhe della forma v w {\displaystyle vw} , dove v {\displaystyle v} appartiene a L 1 {\displaystyle L_{1}} e w {\displaystyle w} a L 2 {\displaystyle L_{2}} . Formalmente:

L 1 L 2 = { v w : v L 1 , w L 2 } {\displaystyle L_{1}L_{2}=\{vw:v\in L_{1},w\in L_{2}\}}

Lo stesso procedimento può essere fatto con una stringa e un linguaggio o viceversa. Il risultato del concatenamento di un linguaggio L 0 {\displaystyle L_{0}} e una stringa v {\displaystyle v} è v L 0 = { v w : w L 0 } {\displaystyle vL_{0}=\{vw:w\in L_{0}\}}

Per esempio, se su un alfabeto Σ = { a , b } {\displaystyle \Sigma =\{a,b\}} sono costruiti due linguaggi L 1 = { a b a b , b a b a } {\displaystyle L_{1}=\{abab,baba\}} e L 2 = { b b b b , a a a a } {\displaystyle L_{2}=\{bbbb,aaaa\}} , il loro concatenamento L 1 L 2 {\displaystyle L_{1}L_{2}} corrisponde a { a b a b b b b b , b a b a b b b b , a b a b a a a a , b a b a a a a a } {\displaystyle \{ababbbbb,bababbbb,ababaaaa,babaaaaa\}}

Esempio

Dati due insiemi L 1 = { a , b , c , d , e , f , g , h } {\displaystyle L_{1}=\{a,b,c,d,e,f,g,h\}} e L 2 = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } {\displaystyle L_{2}=\{1,2,3,4,5,6,7,8\}} il loro concatenamento L 1 L 2 {\displaystyle L_{1}L_{2}} è l'insieme che contiene tutte le coordinate di una scacchiera nella notazione algebrica. Il risultato del concatenamento di una qualsiasi lettera di L 1 {\displaystyle L_{1}} e L 2 {\displaystyle L_{2}} è l'insieme contenente tutte le coordinate della colonna corrispondente alla lettera. Per esempio, si consideri la lettera d in L 1 {\displaystyle L_{1}} , il concatenamento d L 2 {\displaystyle dL_{2}} indica la colonna della regina.

Nei linguaggi di programmazione

Nella maggior parte dei linguaggi di programmazione, l'operatore per il concatenamento delle stringhe è "+".

La sintassi è:

'stringa a' + 'stringa b'

Java

In Java è possibile concatenare più stringhe semplicemente in questo modo[3]:

  String a = "Ciao, ";
  String b = "Mondo!";
  
  String c = a + b;//concateno a e b

  System.out.println(c);//OUTPUT: Ciao, Mondo!

Concatenamento di numeri interi

Concatenare numeri interi è più complesso:

  int a = 46;
  int b = 128;

  int c = Integer.parseInt(Integer.toString(a) + Integer.toString(b));
  
  System.out.println(c); //OUTPUT: 46128

Qui, usufruendo della classe java.lang.Integer, i due numeri vengono prima trasformati in stringhe, poi concatenati e infine ritrasformati nel numero intero risultante assegnato alla variabile c.[4]

C++, C, Python

In C++, C e Python, come in Java, si può usare l'operatore " + ":

"Stringa 1" + "Stringa 2"

Inoltre, in C++, è possibile eseguire il concatenamento di stringhe e/o variabili nei comandi cout e cerr della libreria iostream utilizzando l'operatore " << ".

In matematica

In matematica concatenare vuol dire fondere due o più numeri per formarne uno nuovo.[2]

Per esempio:

56 | | 21 = 5621 {\displaystyle 56||21=5621}

Il simbolo | | {\displaystyle ||} è stato usato qui per indicare l'operazione concatenamento.

L'operazione NON gode della proprietà commutativa, quindi:

56 | | 21 21 | | 56 {\displaystyle 56||21\neq 21||56}

Una semplice funzione matematica che esegue questa operazione tra due numeri m {\displaystyle m} e n {\displaystyle n} con n 1 {\displaystyle n\geq 1} e m , n N {\displaystyle m,n\in \mathbb {N} } è:

C 10 ( m , n ) = 10 log 10 ( n + 1 ) m + n {\displaystyle C_{10}(m,n)=10^{\lceil \log _{10}(n+1)\rceil }m+n}

Dove x {\displaystyle \lceil x\rceil } indica la funzione parte intera superiore.

Questa formula si ricava facilmente in questa maniera: Il primo numero m, deve essere spostato di tante cifre quante sono quelle di n, per lasciargli spazio. Dunque per avere il numero di cifre di n basterebbe la parte intera superiore del logaritmo (nel caso della numerazione decimale in base 10) di n sommato al più ad 1. Adesso, possiamo spostare m delle cifre di n verso sinistra moltiplicandolo per 10 n c {\displaystyle 10^{n_{c}}} dove n c {\displaystyle n_{c}} è il numero di cifre, uguale a: log 10 ( n + 1 ) {\displaystyle \lceil \log _{10}(n+1)\rceil } . A questo punto, spostato m delle cifre di n, possiamo sommare n. Il risultato è la concatenazione dei due numeri.

Ovviamente è possibile generalizzare la formula per una qualsiasi base, sostituendo le basi dell'esponenziale e del logaritmo:

C b ( m , n ) = b log b ( n + 1 ) m + n {\displaystyle C_{b}(m,n)=b^{\lceil \log _{b}(n+1)\rceil }m+n}

Dove b {\displaystyle b} è la base del nostro sistema di numerazione.

Le Costanti di Champernowne e la Costante di Copeland-Erdős sono ottenute attraverso concatenamento.

Note

  1. ^ http://www.treccani.it/vocabolario/concatenamento/
  2. ^ a b http://www.treccani.it/enciclopedia/concatenazione_%28Enciclopedia-della-Matematica%29/
  3. ^ https://stackoverflow.com/questions/3753869/how-do-i-concatenate-two-strings-in-java
  4. ^ https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html

Voci correlate

  • Linguaggio formale
  • Programmazione (informatica)
  • Stringa (linguaggi formali)
  • Insieme
  • Scacchi
  Portale Informatica
  Portale Matematica