Conteúdos da cadeira

Código que podes executar

Exemplos de Python, C, C++, Java, Haskell, Prolog, PHP e SQL. Pré-visualizações web, DartPad e Ripes.

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver mensagem para copiar

Brain rot

A seguirPara ti

@resumos.feup

som original ·

Leitura

Cada voz é descarregada na primeira utilização e guardada neste dispositivo. O texto, o áudio e os teus vídeos ficam aqui.

Créditos dos vídeos e da voz

Voz e velocidade

Partilhar página

Nesta página

Muda o código e carrega em Executar, ou usa Ctrl+Enter (⌘+Enter no Mac). O primeiro arranque descarrega o motor da linguagem. Os editores de código correm no teu navegador. O DartPad, mais abaixo, usa um serviço de compilação externo.

Python

Este programa soma os primeiros cinco números naturais. Muda o limite do range e compara o resultado.

Python
numeros = range(1, 6)
print(sum(numeros))
Dados de entrada

C

printf escreve o resultado. Aqui, o ciclo soma os números de 1 a 5 e mostra 15.

C
#include <stdio.h>

int main(void) {
    int soma = 0;
    for (int n = 1; n <= 5; n++) soma += n;
    printf("%d\n", soma);
    return 0;
}
Dados de entrada

C++

Os dados de entrada já contêm o número 5. O programa lê esse número e calcula o quadrado. Podes mudar ambos antes de executar.

C++
#include <iostream>

int main() {
    int n;
    std::cin >> n;
    std::cout << n * n << "\n";
}
Dados de entrada

Java

Usa a classe Main como ponto de entrada. Este exemplo conta os elementos de uma lista.

Java
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        java.util.List<String> nomes = Arrays.asList("Ana", "Rui", "Inês");
        System.out.println(nomes.size());
    }
}
Dados de entrada

JavaScript

Aqui, filter guarda os números pares. Este editor executa JavaScript sem a página web. Para experimentar o DOM, usa o exemplo de HTML abaixo.

JavaScript
const numeros = [1, 2, 3, 4, 5, 6];
console.log(numeros.filter(n => n % 2 === 0).join(", "));
Dados de entrada

SQL

Cada execução começa com uma base de dados vazia. Cria a tabela, insere os dados e faz a consulta no mesmo bloco.

SQL
CREATE TABLE notas (nome TEXT, valor INTEGER);
INSERT INTO notas VALUES ('Ana', 16), ('Rui', 14), ('Inês', 18);
SELECT nome, valor FROM notas WHERE valor >= 16;
Dados de entrada

Haskell

filter even guarda os pares; map (^2) calcula os seus quadrados. O resultado é [4,16,36]. Muda a lista e volta a executar. Este motor usa GHC e aceita um programa com main, sem entrada interativa.

Haskell
main :: IO ()
main = print (map (^2) (filter even [1..6]))

Prolog

Os factos dizem quem é progenitor de quem. A regra avo liga duas gerações. findall junta as respostas numa lista, que aqui é [ana].

Prolog
progenitor(ana, rui).
progenitor(rui, ines).

avo(X, Y) :- progenitor(X, Z), progenitor(Z, Y).

main :- findall(X, avo(X, ines), Avos), writeln(Avos).
Dados de entrada

O motor é SWI-Prolog. O código comum funciona, mas as bibliotecas específicas de SICStus, usado em PFL, podem ser diferentes.

PHP

array_sum soma os valores do array. count conta-os. A divisão dá a média, 16.

PHP
<?php
$notas = [14, 16, 18];
echo array_sum($notas) / count($notas), "\n";
Corpo do pedido

HTML, CSS e JavaScript

O botão muda o texto do parágrafo. Abre CSS e JavaScript para veres como. Carrega em Pré-visualizar depois de fazeres alterações.

HTML / CSS / JavaScript
HTML
CSS e JavaScript
CSS
JavaScript

Dart e Flutter

Para exemplos de ES, podes usar o DartPad. Abre o menu de exemplos do próprio editor para escolher Dart ou Flutter.

Dart e FlutterAbrir DartPad

O DartPad envia o código para o serviço de compilação da Google.

Assembly RISC-V

Este programa soma os números de 1 a 5 no registo t0 e mostra 15. addi incrementa o contador; ble repete o ciclo enquanto o contador não ultrapassar 5.

RISC-V
.text
.globl main
main:
  li t0, 0
  li t1, 1
  li t2, 5
soma:
  add t0, t0, t1
  addi t1, t1, 1
  ble t1, t2, soma
  mv a0, t0
  li a7, 1
  ecall
  li a0, 10
  li a7, 11
  ecall
  li a7, 10
  ecall
Dados de entrada

O editor usa RISC-V de 32 bits e as chamadas de sistema do RARS. ecall com a7 = 1 escreve um inteiro, a7 = 11 escreve um carácter e a7 = 10 termina. As chamadas de sistema são convenções do simulador, não instruções adicionais de RISC-V.

Para veres como cada instrução altera os registos e a memória, abre o Ripes e avança uma instrução de cada vez.

Assembly RISC-VAbrir Ripes

Simula um processador RISC-V, com registos e execução passo a passo. Abre numa nova janela.

Usar numa página

Numa página MDX, importa CodePlayground.astro e passa a linguagem e o código. O campo input é opcional.

import CodePlayground from '../../../components/CodePlayground.astro';

<CodePlayground language="python" code={'print(2 + 3)'} />

Os exemplos servem para programas pequenos. Python inclui a biblioteca padrão, C usa C17, C++ usa C++17, Java usa Java 8 e PHP usa PHP 8.4. Estes editores não substituem o ambiente de uma cadeira: não incluem Minix, processos POSIX, MPI, Laravel ou pacotes de terceiros. O botão Parar termina a execução.

Ver o ficheiro no GitHub

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.