Na programação de computadores e na informática, um swap padrão é uma situação em um programa em que duas variáveis precisam ter seus valores trocados, sendo necessária a criação de uma terceira variável para atuar como intermediária na transferência dos valores. Uma troca padrão é um paradigma de programação, o que significa que pode ser aplicado a qualquer situação em que duas partes de dados precisam ser trocadas e não está vinculado a nenhum tipo de dados ou linguagem de programação. Existem muitos casos em programas em que os valores precisam ser trocados, mas muitas vezes é um componente padrão em coleções e matrizes quando usado com algoritmos de classificação que devem mover itens de um índice na coleção para outro, usando uma variável temporária para manter o valor sendo trocado. De uma perspectiva de hardware, uma troca padrão pode ser uma função de processador de baixo nível com suporte para alguns tipos de dados escalares, como inteiros, o que significa que o valor intermediário não precisa ser criado na memória de acesso aleatório (RAM) para trocar dois números.
Uma troca padrão é um paradigma de programação, o que significa que pode ser aplicado a qualquer situação em que duas partes de dados precisem ser trocadas.
O conceito de swap padrão pode ser visto com as variáveis A e B; no final de uma troca padrão, B deve ser igual a A e A deve ser igual a B. Se um programa simplesmente atribui B a A, o valor de A será perdido e não poderá ser atribuído posteriormente a B. Isso requer o uso de variável temporária que manterá o valor de A enquanto B é atribuído a A. A etapa final é atribuir o valor da variável temporária a B, completando a troca.
Uma aplicação muito comum para uma troca padrão é ao usar um algoritmo de classificação em uma matriz ou coleção. Se um algoritmo de classificação determinou que os dados no índice 1 da matriz devem ser trocados com os dados no índice 10, então uma troca padrão dos dados pode ser realizada. Isso pode ser feito excepcionalmente rápido usando referências de ponteiro em linguagens como C.
Uma complicação pode ocorrer em algumas linguagens de programação orientadas a objetos quando duas instâncias de objetos precisam ser trocadas. Em alguns casos muito raros, simplesmente trocar as referências do objeto não iniciará uma troca real. Em vez disso, a única maneira de trocar os objetos é clonar os dados internos, campo por campo, entre os dois objetos e a variável do objeto temporário.
Há uma técnica que pode ser usada tecnicamente para realizar uma troca padrão usando o operador lógico exclusivo ou (XOR). Uma troca XOR depende do fato de que, quando dois bits são calculados com XOR, eles essencialmente criarão uma máscara que pode ser revertida com um ou ambos os operadores. Desta forma, duas variáveis, A e B, podem ser trocadas criando primeiro uma máscara com um XOR das duas variáveis e, em seguida, usando XOR para desmascarar primeiro o valor de B e depois o valor de A. Infelizmente, embora este método evite a criação de uma variável temporária, também não fará uma troca em todas as instâncias, especificamente quando A e B são iguais entre si e nos casos em que a otimização do compilador pode alterar a operação real.