PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Sugestões de código gerado pelo site Openai.com / Chatgpt
Sugestões de código gerado pelo site Openai.com / Chatgpt
Débuté par Boller, 25 jan. 2023 02:20 - 15 réponses
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:20
Gere uma procedure para calcular a baskara

Claro, Adriano. Aqui está uma procedure para calcular as raízes de uma equação de segundo grau (ou "baskara"), dada as entradas a, b e c.

Copy code
Procedure Baskara(a, b, c)
// Declaração de variáveis para armazenar as raízes
Real x1, x2
// Cálculo do delta
Real delta = b*b - 4*a*c
// Verifica se delta é positivo
If delta >= 0 Then
// Cálculo das raízes
x1 = (-b + Sqrt(delta)) / (2*a)
x2 = (-b - Sqrt(delta)) / (2*a)
// Exibe as raízes no trace
Trace("x1 = " + x1)
Trace("x2 = " + x2)
Else
// Exibe mensagem de erro
Trace("Não existem raízes reais para essa equação.")
End
End
Aqui está uma explicação detalhada do código:

A procedure recebe três parâmetros: a, b e c. Esses parâmetros representam os coeficientes da equação de segundo grau.
Declarei duas variáveis ​​reais para armazenar as raízes, x1 e x2.
Calculei o delta, que é a parte dentro do sinal de raiz quadrada (√) na fórmula da baskara.
Verifiquei se o delta é positivo ou não. Se for positivo, significa que existem raízes reais para a equação. Se não, significa que não há raízes reais e exibe uma mensagem de erro.
Se o delta for positivo, calculei as raízes usando a fórmula da baskara e exibi-las no trace.
Essa procedure é uma forma simples e eficiente para calcular as raízes de uma equação de segundo grau. No entanto, há outras maneiras de se fazer isso, como usando a biblioteca math do Python. Em caso de dúvida, pergunte.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:22
Crie uma função que calcule a função de uma parábola no plano cartesiano

Claro, Adriano! Aqui está uma função para calcular a função de uma parábola no plano cartesiano:

Copy code
Function Parabola(a, b, c, x)
// Declarando a variável y como real
Real y
// Cálculo do valor de y
y := a*x*x + b*x + c
// Retornando o valor de y
Result y
End
A função tem como entrada os coeficientes a, b e c da equação da parábola e o valor de x para o qual deseja-se calcular o valor de y. Ela calcula y usando a fórmula y = ax^2 + bx + c e retorna esse valor.

Desta forma você pode usar a função Parabola para calcular o valor de y para diferentes valores de x e plotar a parábola no plano cartesiano.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:25
Crie uma procedure que ache s distância entre dois pontos

Claro, Adriano! Aqui está uma procedure para calcular a distância entre dois pontos:

Copy code
Procedure Distancia(x1, y1, x2, y2)
// Declarando a variável distância como real
Real distancia
// Cálculo da distância entre os pontos
distancia := Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
// Exibição da distância
Info("A distância entre os pontos é: " + distancia)
End
A procedure tem como entrada as coordenadas dos dois pontos


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:29
Crie uma procedure que faça a mesma função do soma do Excel com WLanguage

Claro, Adriano! Aqui está uma procedure para fazer a soma de uma faixa de células como a função SOMA do Excel:

Copy code
Procedure Soma(inicioLinha, inicioColuna, fimLinha, fimColuna)
// Declarando a variável soma como real e inicializando com zero
Real soma := 0
// Laço para percorrer as células da faixa
For iLinha from inicioLinha to fimLinha
For iColuna from inicioColuna to fimColuna
// Adicionando o valor da célula atual à variável soma
soma += CellValue(iLinha, iColuna)
End
End
// Exibição da soma
Info("A soma da faixa de células é: " + soma)
End
A procedure tem como entrada as coordenadas iniciais e finais da faixa de células que deseja-se somar, representadas pelas variáveis inicioLinha, inicioColuna, fimLinha e fimColuna. Utiliza dois laços "For" para percorrer essa faixa de células e somar os valores de cada célula. Por fim, exibe a soma total.

Note que a procedure utiliza uma função CellValue(iLinha, iColuna) para acessar o valor de cada célula, essa função pode variar dependendo da sua implementação na sua aplicação.



adrianoboller@gmail.com
Agora do somase

Claro, Adriano. Aqui está uma outra forma de fazer a soma de uma faixa de células, similar à função SOMASE do Excel:

Copy code
Procedure Somase(inicioLinha, inicioColuna, fimLinha, fimColuna, condicao)
// Declarando a variável soma como real e inicializando com zero
Real soma := 0
// Laço para percorrer as células da faixa
For iLinha from inicioLinha to fimLinha
For iColuna from inicioColuna to fimColuna
// Adicionando o valor da célula atual à variável soma se atender a condição
If Eval(condicao) Then
soma += CellValue(iLinha, iColuna)
End
End
End
// Exibição da soma
Info("A soma da faixa de células com a condição é: " + soma)
End
A procedure tem como entrada as coordenadas iniciais e finais da faixa de células que deseja-se somar, representadas pelas variáveis inicioLinha, inicioColuna, fimLinha e fimColuna. Além disso, tem uma variável condicao que é uma string contendo uma expressão lógica para a condição a ser avaliada. Utiliza dois laços "For" para percorrer essa faixa de células e somar os valores de cada célula que atendem a condição passada. Por fim, exibe a soma total.

Note que a procedure utiliza uma função CellValue(iLinha, iColuna) para acessar o valor de cada célula, essa função pode variar dependendo da sua implementação na sua aplicação e também utiliza a função Eval(condicao) para avaliar a condição passada.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:33
Agora faça uma procedure WLanguage que tenha a mesma finalidade do ProcV do Excel

Claro, Adriano. O ProcV do Excel é uma função que permite realizar uma análise de dados com base em uma coluna específica e contar o número de ocorrências de cada valor diferente nessa coluna. Aqui está uma procedure em WLanguage para fazer algo semelhante:

Copy code
Procedure ProcV(coluna)
// Cria um array para armazenar os valores diferentes da coluna
String[] valores
// Cria um array para armazenar a contagem de ocorrências de cada valor
Integer[] contagem
// Variável para armazenar o número de linhas na tabela
Integer numLinhas := NumberOfRows()
// Laço para percorrer as linhas da tabela
For iLinha from 1 to numLinhas
// Variável para armazenar o valor atual da célula
String valor := CellValue(iLinha, coluna)
// Variável para armazenar a posição do valor no array valores
Integer posicao := ArraySearch(valores, valor)
// Se o valor não estiver no array valores, adiciona-o e inicia a contagem em 1
If posicao = -1 Then
ArrayAdd(valores, valor)
ArrayAdd(contagem, 1)
// Se o valor já estiver no array valores, incrementa a contagem
Else
contagem[posicao]++
End
End
// Laço para exibir os resultados
For iValor from 1 to ArraySize(valores)
Info(valores[iValor] + ": " + contagem[iValor])
End
End
A procedure tem como entrada a coluna que deseja-se analisar. Utiliza dois laços "For" para percorrer as linhas da tabela e contar o número de ocorrências de cada valor diferente na coluna especificada. Utiliza duas arrays, um para armazenar os valores diferentes e outro para armazenar a contagem de ocorrências. Por fim, exibe os resultados.

Note que a procedure utiliza a função CellValue(iLinha, coluna) para acessar o valor de cada célula, essa função pode variar dependendo da sua implementação na sua aplicação e a função NumberOfRows() para retornar o número de linhas presentes na tabela.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:41
Agora crie uma procedure que faça o procH

Claro, Adriano. O ProcH do Excel é uma função que permite realizar uma análise de dados com base em uma linha específica e contar o número de ocorrências de cada valor diferente nessa linha. Aqui está uma procedure em WLanguage para fazer algo semelhante:

Copy code
Procedure ProcH(linha)
// Cria um array para armazenar os valores diferentes da linha
String[] valores
// Cria um array para armazenar a contagem de ocorrências de cada valor
Integer[] contagem
// Variável para armazenar o número de colunas na tabela
Integer numColunas := NumberOfColumns()
// Laço para percorrer as colunas da tabela
For iColuna from 1 to numColunas
// Variável para armazenar o valor atual da célula
String valor := CellValue(linha, iColuna)
// Variável para armazenar a posição do valor no array valores
Integer posicao := ArraySearch(valores, valor)
// Se o valor não estiver no array valores, adiciona-o e inicia a contagem em 1
If posicao = -1 Then
ArrayAdd(valores, valor)
ArrayAdd(contagem, 1)
// Se o valor já estiver no array valores, incrementa a contagem
Else
contagem[posicao]++
End
End
// Laço para exibir os resultados
For iValor from 1 to ArraySize(valores)
Info(valores[iValor] + ": " + contagem[iValor])
End
End
A procedure tem como entrada a linha que deseja-se analisar



adrianoboller@gmail.com
Pode melhorar o código, lembre que em WLanguage vem primeiro o nome da variável depois IS e depois o tipo

Claro, Adriano. Aqui está a mesma procedure, mas com as variáveis declaradas com o nome primeiro, seguido de "IS" e depois o tipo:

Copy code
Procedure ProcH(linha IS Integer)
String[] valores
Integer[] contagem
Integer numColunas IS NumberOfColumns()
For iColuna IS Integer from 1 to numColunas
String valor IS CellValue(linha, iColuna)
Integer posicao IS ArraySearch(valores, valor)
If posicao = -1 Then
ArrayAdd(valores, valor)
ArrayAdd(contagem, 1)
Else
contagem[posicao]++
End
End
For iValor IS Integer from 1 to ArraySize(valores)
Info(valores[iValor] + ": " + contagem[iValor])
End
End
A lógica da procedure é a mesma, mas agora as variáveis estão declaradas com o nome primeiro, seguido de "IS" e depois o tipo. Isso é uma boa prática para tornar o código mais claro e fácil de entender


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:47
Agora cite as 20 funções do Excel mais usadas e coloque um descritivo em uma tabela

Claro, Adriano. Aqui está uma tabela com as 20 funções do Excel mais usadas e um breve descritivo de cada uma:

Função Descrição
SOMA Adiciona os números de uma lista de argumentos
MÉDIA Calcula a média aritmética de uma lista de argumentos
CONT.SE Conta o número de células que atendem a um determinado critério
SOMASE Soma os valores de uma lista de argumentos, com base em um critério específico
PROCV Procura valores únicos em uma coluna de dados e conta o número de ocorrências de cada um
PROCV Procura valores únicos em uma linha de dados e conta o número de ocorrências de cada um
CONCATENAR Concatena texto de uma ou mais células em uma única célula
SE Especifica uma condição lógica e retorna um resultado se a condição for verdadeira ou outro resultado se a condição for falsa
CONT.NUM Conta o número de células que contêm números
SOMAPRODUTO Multiplica os valores de duas ou mais listas de argumentos e retorna a soma dos resultados
MAIOR Retorna o maior valor de uma lista de argumentos
MENOR Retorna o menor valor de uma lista de argumentos
CONTA Conta o número de células que contêm dados em uma lista de argumentos
SOMASE Soma os valores de uma lista de argumentos, com base em uma condição específica
PROCV Procura valores únicos em uma linha de dados e conta o número de ocorrências de c



adrianoboller@gmail.com
Continue

Função Descrição
PROCV Procura valores únicos em uma coluna de dados e conta o número de ocorrências de cada um
MÁXIMO Retorna o maior valor de uma lista de argumentos
MÍNIMO Retorna o menor valor de uma lista de argumentos
CONT.VAZIO Conta o número de células vazias em uma lista de argumentos
COUNTIF Conta o número de células que atendem a um determinado critério
SUMIF Soma os valores de uma lista de argumentos, com base em um critério específico
IF Especifica uma condição lógica e retorna um resultado se a condição for verdadeira ou outro resultado se a condição for falsa
IFERROR Retorna um valor se uma fórmula não gerar um erro, ou outro valor se a fórmula gerar um erro
VLOOKUP Procura um valor em uma tabela e retorna um valor de uma coluna correspondente
HLOOKUP Procura um valor em uma tabela e retorna um valor de uma linha correspondente
PMT Calcula o pagamento de uma prestação fixa
FV Calcula o valor futuro de uma série de pagamentos
PV Calcula o valor presente de uma série de pagamentos
Essas são as 20 funções do Excel mais usadas e um breve descritivo de cada uma. Elas cobrem uma variedade de tarefas comuns, como somar, média, contagem, procura, lógica, financeira, etc.
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:49




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 02:57
Agora faça uma procedure usando o cont.se

Copy code
Procedure ContSe(colunaCriterio IS Integer, valorCriterio IS String, colunaContar IS Integer)
// Variável para armazenar a contagem
Integer contagem IS 0
// Variável para armazenar o número de linhas na tabela
Integer numLinhas IS NumberOfLines()
// Laço para percorrer as linhas da tabela
For iLinha IS Integer from 1 to numLinhas
// Se o valor na coluna de critério é igual ao valor do critério, incrementa a contagem
If CellValue(iLinha, colunaCriterio) = valorCriterio Then
contagem += CellValue(iLinha, colunaContar)
End
End
// Exibe o resultado
Info(contagem)
End
A procedure tem como entrada a colunaCriterio onde está o critério, o valorCriterio, e colunaContar onde deseja-se contar.
A procedure percorre todas as linhas e verifica se o valor na coluna de critério é igual ao val



adrianoboller@gmail.com
Continue

or do critério, se for incrementa a contagem da colunaContar. E por fim, exibe a contagem resultante. É uma boa prática passar os valores como parâmetros para a procedure para que ela possa ser reutilizada para diferentes critérios e colunas de contagem. Lembre-se que essa é uma implementação básica e pode ser melhorada para tratar casos específicos, como critérios de data, números, etc. E também é importante lembrar de tratar erros, como caso a colunaCriterio ou colunaContar não exista na tabela.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:04
Agora é a vez do cont.num

Claro, Adriano. Aqui está uma procedure em WLanguage que usa a função CONT.NUM, que conta o número de células que contêm números:

Copy code
Procedure ContNum(coluna IS Integer)
// Variável para armazenar a contagem
Integer contagem IS 0
// Variável para armazenar o número de linhas na tabela
Integer numLinhas IS NumberOfLines()
// Laço para percorrer as linhas da tabela
For iLinha IS Integer from 1 to numLinhas
// Se o valor na coluna é numérico, incrementa a contagem
If IsNumeric(CellValue(iLinha, coluna)) Then
contagem++
End
End
// Exibe o resultado
Info(contagem)
End
A procedure tem como entrada a coluna onde deseja-se contar os números.
A procedure percorre todas as linhas e verifica se o valor na coluna é numérico, se for incrementa a contagem. E por fim, exibe a contagem resultante.
Essa procedure é simples e eficiente para contar números, lembre-se de tratar erros, como caso a coluna não exista na tabela.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:12
Vamos fazer uma procedure WLanguage Que recebe 2 matriz e calcula a soma delas

Claro, Adriano. Aqui está um exemplo de uma procedure em WLanguage que recebe 2 matrizes e calcula a soma delas:

Copy code
PROCEDURE SomaMatrizes(matriz1, matriz2)
// Cria uma variável para armazenar a matriz resultante
matriz_resultante
// Inicializa a matriz resultante com o mesmo tamanho da matriz1
matriz_resultante = MatInitialize(matriz1)
// Obtém o número de linhas e colunas das matrizes
linhas = MatNumRow(matriz1)
colunas = MatNumCol(matriz1)
// Utiliza um loop para percorrer as linhas e colunas das matrizes
FOR i = 1 TO linhas
FOR j = 1 TO colunas
// Soma os valores de matriz1[i][j] e matriz2[i][j] e atribui o resultado à matriz_resultante[i][j]
matriz_resultante[i][j] = matriz1[i][j] + matriz2[i][j]
END
END
// Retorna a matriz resultante
RESULT matriz_resultante
END
Este exemplo cria uma procedure chamada "SomaMatrizes" que recebe 2 matrizes como parâmetros. Ele inicializa a matriz resultante com o mesmo tamanho da matriz1 e utiliza um loop para percorrer as linhas e colunas das matrizes, somando os valores de matriz1[i][j] e matriz2[i][j] e atribuindo o resultado à matriz_resultante[i][j]. Ao final, a matriz resultante é retornada.

Para chamar essa procedure, você deve passar duas matrizes como argumentos, por exemplo:

Copy code
matriz1 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
matriz2 = [ [9, 8, 7], [6, 5, 4], [3, 2, 1] ]
matriz_resultante = SomaMatrizes(matriz1, matriz2)
A matriz_resultante será [ [10, 10, 10], [10, 10, 10], [10, 10, 10] ]

Espero ter ajudado. Se tiver alguma dúvida, estou à disposição.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:15
Quais são as operações matemáticas com matrizes

Existem várias operações matemáticas que podem ser realizadas com matrizes em WLanguage. Algumas das operações mais comuns incluem:

Adição de matrizes: Essa operação consiste em somar elemento a elemento as matrizes.
Subtração de matrizes: Essa operação consiste em subtrair elemento a elemento as matrizes.
Multiplicação de matrizes: Essa operação consiste em multiplicar elemento a elemento as matrizes.
Divisão de matrizes: Essa operação consiste em dividir elemento a elemento as matrizes.
Transposição de matrizes: Essa operação consiste em trocar as linhas por colunas da matriz.
Potenciação de matrizes: Essa operação consiste em elevar a matriz a um determinado expoente.
Inversão de matrizes: Essa operação consiste em calcular a matriz inversa de uma matriz.
Determinante de matrizes: Essa operação consiste em calcular o determinante de uma matriz.
Produto Escalar: Essa operação consiste em multiplicar um escalar por todos os elementos da matriz.
Produto Vetorial: Essa operação consiste em calcular o produto vetorial entre duas matrizes
Cada uma dessas operações tem sua própria sintaxe e regras específicas para ser aplicada. Em geral, é necessário garantir que as matrizes tenham as mesmas dimensões antes de realizar qualquer operação matemática.

Existem funções prontas na linguagem WLanguage para realizar essas operações, por exemplo para adição de matrizes existe a função MatAdd, para subtração de matrizes existe a função MatSub, entre outras.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:19
Gere uma procedure para a subtração de matrizes com WLanguage

Claro, Adriano. Aqui está um exemplo de uma procedure em WLanguage que recebe 2 matrizes como parâmetros e calcula a subtração delas:

Copy code
PROCEDURE SubtracaoMatrizes(matriz1, matriz2)
// Cria uma variável para armazenar a matriz resultante
matriz_resultante
// Inicializa a matriz resultante com o mesmo tamanho da matriz1
matriz_resultante = MatInitialize(matriz1)
// Obtém o número de linhas e colunas das matrizes
linhas = MatNumRow(matriz1)
colunas = MatNumCol(matriz1)
// Utiliza um loop para percorrer as linhas e colunas das matrizes
FOR i = 1 TO linhas
FOR j = 1 TO colunas
// subtrai os valores de matriz1[i][j] e matriz2[i][j] e atribui o resultado à matriz_resultante[i][j]
matriz_resultante[i][j] = matriz1[i][j] - matriz2[i][j]
END
END
// Retorna a matriz resultante
RESULT matriz_resultante
END
Este exemplo cria uma procedure chamada "SubtracaoMatrizes" que recebe 2 matrizes como parâmetros. Ele inicializa a matriz resultante com o mesmo tamanho da matriz1 e utiliza um loop para percorrer as linhas e colunas das matrizes, subtraindo os valores de matriz1[i][j] e matriz2[i][j] e atribuindo o resultado à matriz_resultante[i][j]. Ao final, a matriz resultante é retornada.

Para chamar essa procedure, você deve passar duas matrizes como argumentos, por exemplo:

Copy code
matriz1 = [ [10, 10, 10], [10, 10, 10], [10, 10, 10] ]
matriz2 = [ [9, 8, 7], [6, 5, 4], [3, 2, 1] ]
matriz_resultante = SubtracaoMatrizes(matriz1, matriz2)
A matriz_resultante será [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]

É importante que as matrizes tenham as mesmas dimensões para que essa procedure funcione corretamente.
Espero ter ajudado. Se tiver alguma dúvida, estou à disposição.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:25
Gere agora a multiplicação de duas matrizes

Claro, Adriano. Aqui está um exemplo de uma procedure em WLanguage que recebe 2 matrizes como parâmetros e calcula a multiplicação delas:

Copy code
PROCEDURE MultiplicacaoMatrizes(matriz1, matriz2)
// Cria uma variável para armazenar a matriz resultante
matriz_resultante
// Inicializa a matriz resultante com o mesmo tamanho da matriz1
matriz_resultante = MatInitialize(matriz1)
// Obtém o número de linhas e colunas das matrizes
linhas1 = MatNumRow(matriz1)
colunas1 = MatNumCol(matriz1)
linhas2 = MatNumRow(matriz2)
colunas2 = MatNumCol(matriz2)
// Verifica se as matrizes podem ser multiplicadas
IF (colunas1 = linhas2) THEN
// Utiliza um loop para percorrer as linhas e colunas das matrizes
FOR i = 1 TO linhas1
FOR j = 1 TO colunas2
matriz_resultante[i][j] = 0
FOR k = 1 TO colunas1
matriz_resultante[i][j] = matriz_resultante[i][j] + matriz1[i][k] * matriz2[k][j]
END
END
END
ELSE
Error("As matrizes não podem ser multiplicadas pois a quantidade de colunas da matriz1 é diferente da quantidade de linhas da matriz2.")
END
// Retorna a matriz resultante
RESULT matriz_resultante
END
Este exemplo cria uma procedure chamada "MultiplicacaoMatrizes" que recebe 2 matrizes como parâmetros. Ele inicializa a matriz resultante com o mesmo tamanho da matriz1 e verifica se as matrizes podem ser multiplicadas, para isso é verificado se a quantidade de colunas da matriz1 é igual a quantidade de linhas da matriz2. Caso isso não ocorra uma mensagem de erro será apresentada.
Depois é utilizado um loop para percorrer as linhas e colunas das matrizes, multiplicando-as. Ao final, a matriz resultante é retornada.

Para chamar essa procedure, você deve passar duas matrizes como argumentos, por exemplo:

Copy code
matriz1 = [ [1, 2, 3], [4, 5, 6] ]
matriz2 = [ [9, 8], [6, 5], [3, 2] ]
matriz_resultante = MultiplicacaoMatrizes(matriz1, matriz2)
A matriz_resultant será [ [30, 24], [84, 69] ]

É importante que a quantidade de colunas da matriz1 se ja igual a quantidade de linhas da matriz2 para que essa procedure funcione corretamente. Caso contrário, uma mensagem de erro será apresentada.

É importante notar que essa implementação faz uso de aninhamento de loops para multiplicar elemento por elemento das matrizes, é importante lembrar que existe outra forma de fazer esse cálculo usando a função MatMul da linguagem WLanguage.

Exemplo:

Copy code
matriz_resultante = MatMul(matriz1, matriz2)
Espero ter ajudado. Se tiver alguma dúvida, estou à disposição.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:29
Em matemática, não existe a operação de divisão entre matrizes, a única maneira de se dividir matrizes é através da multiplicação pela inversa de uma delas.

Uma maneira de fazer isso é utilizando a função MatInv() para calcular a inversa de uma das matrizes e então multiplicando a matriz desejada com a inversa.

Entretanto, é importante lembrar que a inversa só pode ser calculada para matrizes quadradas e inversíveis.

Exemplo:

Copy code
matriz1 = [ [1, 2], [3, 4] ]
matriz2 = MatInv(matriz1)
matriz_resultante = MatMul(matriz1, matriz2)
A matriz_resultante será a matriz identidade, que é o resultado esperado quando se divide uma matriz por sua inversa.

Cabe ressaltar que essa operação só é possível para matrizes quadradas e inversíveis, é importante verificar se as matrizes são quadradas e inversíveis antes de realizar a operação.

Espero ter esclarecido sua dúvida. Se precisar de mais alguma coisa, estou à disposição.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 janvier 2023 - 03:34
E a transposição de 2 matrizes

A transposição de uma matriz é uma operação matemática que consiste em trocar as linhas por colunas. Em outras palavras, uma matriz A transposta é representada por A^T, onde A^T[i][j] = A[j][i].

Em WLanguage é possível fazer a transposição de uma matriz utilizando a função MatTranspose()

Exemplo:

Copy code
matriz1 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
matriz_transposta = MatTranspose(matriz1)
A matriz_transposta será [ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]

Não é possível fazer a transposição de duas matrizes ao mesmo tempo, é preciso transpor cada uma delas individualmente.

Espero ter ajudado. Se tiver alguma dúvida, estou à disposição.



adrianoboller@gmail.com
Consegue fazer uma procedure que faça a transposição de 2 matrizes sem usar a função WLanguage

Claro, Adriano. Aqui está uma procedure em WLanguage que recebe 2 matrizes como parâmetros e calcula a transposição delas sem usar a função MatTranspose():

Copy code
PROCEDURE TransposicaoMatrizes(matriz1, matriz2)
// Cria as variáveis para armazenar as matrizes transpostas
matriz_transposta1
matriz_transposta2
// Obtém o número de linhas e colunas das matrizes
linhas1 = MatNumRow(matriz1)
colunas1 = MatNumCol(matriz1)
linhas2 = MatNumRow(matriz2)
colunas2 = MatNumCol(matriz2)
// Inicializa as matrizes transpostas com o número de linhas e colunas invertidos
matriz_transposta1 = MatInitialize(linhas1, colunas1)
matriz_transposta2 = MatInitialize(linhas2, colunas2)
// Utiliza um loop para percorrer as linhas e colunas das matrizes
FOR i = 1 TO linhas1
FOR j = 1 TO colunas1
matriz_transposta1[j][i] = matriz1[i][j]
END
END
FOR i = 1 TO linhas2
FOR j = 1 TO colunas2
matriz_transposta2[j][i] = matriz2[i][j]
END
END
// Retorna as matrizes transpostas
RESULT matriz_transposta1, matriz_transposta2
END
Este exemplo cria uma procedure chamada "TransposicaoMatrizes" que recebe 2 matrizes como parâmetros. Ele inicializa as matrizes transpostas com o número de linhas e colunas invertidos e utiliza dois loops para percorrer as linhas e colunas das matrizes, trocando as posições das linhas e colunas, fazendo a transposição.

Para chamar essa procedure, você deve passar duas matrizes como argumentos, por exemplo:

Copy code
matriz1 = [ [1, 2, 3], [4, 5, 6] ]
matriz2 = [ [7, 8], [9, 10] ]
matriz_transposta1, matriz_transposta2 = TransposicaoMatrizes(matriz1, matriz2)
A matriz_transposta1 será [ [1, 4], [2, 5], [3, 6] ] e a matriz_transposta2 será [ [7, 9], [8, 10] ]

Espero ter ajudado e qualquer coisa estou a disposição.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/