variáveis – Lógica de programação (Portugol) (VisualG). Como essa variável (MA) consegue me mostrar o nome exato do aluno que obteve a maior nota?

O programa está funcionando perfeitamente. A minha dúvida é somente sobre esse algoritmo, não consigo entender como essa variável (MA) consegue me mostrar a maior nota apenas com a atribuição MA <- A. Se alguém conseguir me esclarecer essa questão eu agradeço.

Algoritmo "ContadorMaiorNota"

Var

   Q, contador: Inteiro

   N, MAIOR: Real

   A, MA: Caractere

Inicio

   contador <- 1

   Escreval("------------------------")

   Escreval(" ESCOLA ESTUDIOSOS ")

   Escreval("------------------------")

   Escreval("Quanto alunos tem na turma?")

   Leia(Q)

   Enquanto (contador <= Q) faca

      Escreval("Aluno ", contador)

      Escreval("Nome do aluno: ")

      Leia(A)

      Escreval("Nota do ", A,":")

      Leia(N)

      contador <- contador +1

      Se (N > MAIOR) entao

         MAIOR <- N

         MA <- A

      FimSe

   FimEnquanto

   Escreval("O maior aproveitamento foi o de ",MA," com a nota", MAIOR)

FimAlgoritmo

node.js – Tem como usar as variáveis do EJS com o método “redirect” do express ao invés do render?

Segue o exemplo de uma página html (index.ejs) com uma mensagem escrita “Verificar senha” e um formulário com um input e um botão. Quero que, ao preencher esse input com uma senha e fizer a requisição, ele seja redirecionado para a mesma página, porém com a mensagem modificada para “Senha correta” ou “Senha errada”, dependendo do que for digitado. O problema é que essas variáveis só podem ser mandadas pelo método render, e não pelo redirect.

A senha correta é “123”.

Os pacotes necessários pra rodar são: express, ejs.

Index.ejs:

 <form action="/verify" method="POST">
   <input type="password" name="password">
   <button>Enviar</button>
 </form>
 <p>
   <%=passStatus%>
 </p>

Index.js:

const express = require("express");
const app = express();
const path = require("path");
app.use(express.urlencoded({ extended: true }));

// EJS Settings
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "views"));

// Routes
app.get("/", (req, res) => {
  res.render("index", { passStatus: "Verificar senha" });
});

app.post("/verify", (req, res) => {
  let corectPass = 123;
  let verifyPass = req.body.password;
  if (corectPass == verifyPass) {
    res.redirect("/");
    // Pensei em algo assim ↓, mas a "passStatus" só funciona com o método ".render".
    // res.redirect("/", {passStatus: "Senha correta"});
  } else {
    res.redirect("/");
    // Pensei em algo assim ↓, mas a "passStatus" só funciona com o método ".render".
    // res.redirect("/", {passStatus: "Senha errada"});
  }
});

app.listen(5000, () => {
  console.log("Servidor Rodando na porta 5000");
});

linux – É possivel carregar as variaveis de um arquivo .env ao entrar num diretório e descarregá-las ao sair dele?

Exemplo:
No diretório ~/teste1 há um arquivo .env com:
TESTE1=ABCD1234
TESTE2=1234ABCD

ao acessar o diretório com linha de comando:
cd ~/teste1

as variáveis serem automaticamente carregadas (algo como: “source .env”)

e ao sair do diretório elas serem todas descarregadas, algo como “unset –file .env”

teoria da computação – Qual a definição correta de concatenação e o que realmente acontece quando fazemos isso com variáveis?

Primeiro leia isto: O que é uma variável?.

Você não soma ou concatena ou faz qualquer operação com variáveis, mas sim faz com valores, que eventualmente estão armazenados em variáveis ou em objetos que são referenciadas por variáveis. Sem conceituar certo não dá para aprender corretamente, e parece que quer aprender o correto.

A questão da diferença de resultado seria estranha para quem nunca ouviu falar de concatenação, mas é auto explicativo quando se sabe o que é.

Quando se aplica o operador + em valores numéricos ele faz uma soma matemática que todo mundo conhece. Quando se aplica o mesmo operador à textos ele faz a tal da concatenação, ou seja, junta dois textos e cria um novo com tudo junto.

O segundo caso tem valores numéricos, por que ele faria uma concatenação com isso? Seria estranho.

Então variáveis não são transformadas em strings ou qualquer outra coisa, pelo já exposto acima.

Para transformar um valor numérico não se coloca entre aspas, se colocar aspas então o que tem ali é um texto, uma string, não é um valor numérico transformado. E se não tem aspas não é um texto é um valor numérico ou outro tipo que tenha um literal definido pela linguagem.

O literal que tem um ou uma sequência de dígitos numéricos indica um valor quantitativo. O literal que começa e termina com aspas indica uma descrição de alguma coisa, um texto.

Quando concatena valores, e isso só acontece em valores do tipo string, cada caractere de do segundo valor vai sendo colocando em sequência logo após os caracteres existentes do primeiro valor. A forma exata como isso acontece na memória parece ser algo irrelevante no momento já que é o conhecimento mais aprofundado e que em geral o programador não precisa entender, até estar mais avançado e desejar dominar tudo.

Tem linguagem, até bem popular que bagunça isso quando mistura um texto um um número, mas vamos trabalhar com a ideia de uma linguagem que não faz coisas malucas.

variáveis – Notice: Undefined variable: strings in /public/class-wc-lottery-pn-public.php on line 573

estou com um erro e gostaria de ajuda de alguem com este conhecimento, você teria como me ajudar?

Recebo o seguinte erro.
Notice: Undefined variable: strings in /public/class-wc-lottery-pn-public.php on line 573

public function change_order_ticket_number_to_alphabet( $html, $item, $args ){
    $product_id = $item->get_product_id();
    $product =  wc_get_product( $product_id );
    if( ! $product || get_post_meta( $product_id , '_lottery_pick_number_alphabet', true ) !== 'yes') {
        return $html;
    }
    foreach ( $item->get_formatted_meta_data() as $meta_id => $meta ) {
        if ( $meta->key === 'Ticket number' ){
            $value     = $args('autop') ? wp_kses_post( $meta->display_value ) : wp_kses_post( make_clickable( $this->change_ticket_numbers_to_alphabet(intval( $meta->value ), $product )) );
            $strings() = $args('label_before') . wp_kses_post( $meta->display_key ) . $args('label_after') . $value;
        }
    }

    if ( $strings ) {

//linha 573 $html = $args(‘before’) . implode( $args(‘separator’), $strings ) . $args(‘after’);
}

$this->raio * $this->raio;

Sabem me dizer como resolver?

visual studio code – Como estilizar/customizar as cores das variaveis dentro do VSCODE?

Vá no arquivo settings.json, para acessar ele vá em View > Command Pallete ou simplesmente pressione as teclas Ctrl+Shift+P (ou Cmd+Shift+P em MacOS), então no campo que aparece digite settings.json e selecione a primeira opção, deve aparecer algo como:

{
    "window.zoomLevel": 0,
    "editor.fontSize": 22
}

Antes de tudo, existe a documentação aonde pode ver todas possibilidades: https://code.visualstudio.com/api/references/theme-color#editor-colors

Edite para isso:

{
    "window.zoomLevel": 0,
    "editor.fontSize": 22,
    "editor.tokenColorCustomizations": {
        "variables": "#000"
    },
}

O #000 é o mesmo que a cor preta, você pode alterar como desejar, por exemplo laranja: "variables": "#fc0", você pode usar o “colorpick” nativo, ficará algo como:

colorpick no VSCode

c – Qual a diferença entre atribuir e comparar variáveis strings com função ou com operador de atribuição e comparação?

Como um vetor é um elemento que ocupa posições contíguas na memória RAM, basta guardar o endereço de memória da primeira posição do mesmo. O restante pode ser obtido por aritmética básica com ponteiros, veja:

Para este exemplo considere a seguinte variável char b(8).

Portanto:

b(1) = 'c';

é o mesmo que fazer:

*(b+1) = 'c';

O segundo caso, inicialmente, pode parecer estranho, mas o que está sendo feito é bem simples.

(1+b) significa deslocar 1 byte de memória a partir do início do vetor (armazenado no ponteiro b). O resultado de (b+1) é um ponteiro (um endereço de memória) da posição 1 do vetor (o mesmo que b(1)). Para colocar um valor nessa posição, é preciso utilizar o operador *, com ele pode-se acessar o conteúdo do endereço de memória armazenado no ponteiro. Por isso deve-se fazer *(b+1).

Em outras palavras, (b+1) é a soma de um endereço de memória (guardado pela variável b) com 1 byte. Note que é 1 byte, pois se trata de uma variável do tipo char. Se o vetor fosse int b(10), então a soma (b+1) deslocaria 4 bytes (arquitetura 32 bits) a partir do início do vetor. Como C é uma linguagem fortemente tipada, o próprio compilador sabe quantos bytes terá que deslocar (pelo tipo da variável).

Veja outra maneira de fazer o mesmo:

char * p;
p = b;
p(1) = 'c';

ou

char * p;
p = b;
*(p+1) = 'c';

O código acima mostra que pode-se atribuir a um ponteiro um vetor de mesmo tipo.

Portanto, uma variável de um vetor em C é, na verdade, um ponteiro para a 1a posição desse vetor e é por essa razão que fazer isso if (s < t) não é o mesmo que if (strcmp (s, t) < 0). No primeiro caso está sendo comparado o endereço de memória de s e t. No segundo caso, está sendo utilizada uma função que itera (byte a byte) sobre esses dois vetores de maneira a comparar se um é igual ao outro em relação aos bytes armazenados.