Indietro

ⓘ Concatenamento




Concatenamento
                                     

ⓘ Concatenamento

In linguaggio formale e programmazione software il concatenamento indica un procedimento in cui parole o numeri vengono legati insieme a formare una sola parola o numero.

Ad esempio, concatenando "piano" e "forte" si ottiene "pianoforte".

È usato soprattutto nei linguaggi di programmazione per la fusione di stringhe.

                                     

1. 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, 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 a b a b b, a b a b a a, b a b a } {\displaystyle \{ababbbbb,bababbbb,ababaaaa,babaaaaa\}}

                                     

2. 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}} è linsieme 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}} è linsieme 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.

                                     

3. Nei linguaggi di programmazione

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

La sintassi è:

stringa a + stringa b

Java

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

Concatenamento di numeri interi

Concatenare numeri interi è più complesso:

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.

C++, C, Python

In C++, C e Python basta accostare le due stringhe in questo modo:

"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 loperatore < < ".

                                     

4. In matematica

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

Per esempio:

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

Il simbolo | | {\displaystyle ||} è stato usato qui per indicare loperazione concatenamento.

Loperazione 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 + 3 / 2 ⌉ m + n {\displaystyle C_{10}m,n=10^{\lceil \log _{10}n+3/2\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 del logaritmo nel caso della numerazione decimale in base 10 di m sommato a 3/2. 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 + 3 / 2 ⌉ {\displaystyle \lceil \log _{10}n+3/2\rceil }. A questo punto, spostato m delle cifre di n, possiamo sommare n. E la nostra formula è stata dimostrata.

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

C b m, n = b ⌈ log b ⁡ n + 3 / 2 ⌉ m + n {\displaystyle C_{b}m,n=b^{\lceil \log _{b}n+3/2\rceil }m+n}

Dove b {\displaystyle b} è la base.