Introdução à Programação Sistemática - Semana 1
Se você está aqui desde a semana passada, tenho certeza de que está esperando ansiosamente para saber como foi a primeira semana de aulas. Bem, a espera acabou!
Se você está aqui desde a semana passada, tenho certeza de que está esperando ansiosamente para saber como foi a primeira semana de aulas. Bem, a espera acabou!
Para aqueles de vocês que estão apenas sintonizando, confira a "Introdução" à série Introdução à Programação Sistemática aqui para obter mais informações sobre o que estamos prestes a abordar.
A semana 1 consistiu em 9 lições centradas no tópico Primitivos no Dr. Racket. Vou passar por cada lição aqui, uma por uma, dando uma descrição rápida dos principais pontos do tópico que abordamos e quaisquer petiscos adicionais interessantes que eu possa ter aprendido. Lembre-se de que alguns termos desta classe, conforme mencionado no post 1, são usados de maneira diferente da maioria da programação tradicional. Vou tentar observar isso quando puder, mas em alguns casos, posso nem estar ciente de como é usado tradicionalmente, já que muito disso também é novo para mim!
Lição 1: Introdução ao Design Sistemático de Programas
O ponto principal abordado nesta primeira lição é que, "A computação é o que faz as 'coisas' acontecerem!" Este curso é baseado na ideia de que os programas e o design dos programas são o que torna possível a maioria de nossas interações "típicas" do 1º mundo. Da comida ao transporte, um programa de computador provavelmente estava envolvido em algum lugar no processo do produto que vai da produção ao usuário final, independentemente de o produto ser considerado "tecnologia".
Em seguida, revisamos a pergunta: "O que é o 'Método de Design'?" Nesta aula, o método de design é definido como uma estrutura que leva você de um problema mal definido até uma solução bem estruturada. Para mim, isso transcende apenas o desenvolvimento de software e pode ser usado ao longo da existência diária se aplicado de maneira cuidadosa.
Lição 2: Expressões
O Dr. Racket está configurado de forma que a Área de Definições fique acima da área de Interações, como você pode ver aqui:

No Dr. Racket, as expressões são avaliadas para produzir valores. Para criar uma expressão, deve-se utilizar a seguinte receita:![]()
Por exemplo, para que o Dr. Racket calcule "3+6", você inseriria o seguinte em sua Área de Definições:
(+ 3 6)
Notas adicionais desta seção:
; designa uma linha a ser comentada
#i designates an inexact number
Lesson 3: Evaluation
As regras do Dr. Racket para avaliar expressões são:
- Uma Expressão é um "Chamado Primitivo" quando começa como (*......
Com * representando qualquer um dos Operadores primitivos, incluindo, mas não se limitando a: +, -, /, *
- Todos os itens após o operador são designados como operandos
- A primeira etapa na Avaliação é reduzir todos os Operandos a valores
- Os operandos são reduzidos a valores da esquerda para a direita e de dentro para fora
Notas adicionais desta sessão:
Lembre-se de incluir espaços antes de operandos e números, caso contrário, sua expressão não poderá ser avaliada.
Lição 4: Cordas e imagens
Esta lição abordou como definir strings e imagens, bem como algumas de suas funções básicas que o curso usará. Aqui estão alguns dos destaques:
Strings
"Esta é uma corda no Dr. Racket"
As cadeias de caracteres são consideradas valores e não são números, mesmo que a cadeia de caracteres contenha um número ou valor numérico.
(string-append "Ada" "Lovelace") será avaliado como "AdaLovelace"
(string-length "apple") será avaliado como 5
(substring "Caribou" 2 4) será avaliada como ri
A substring usa indexação baseada em zero, o que, em termos leigos, significa que começa a contar a partir de 0. Assim, Caribou seria numerado C - 0, A- 1, R-2, I-3, B-4, O-5, U-6.
Substring usa a parte da string que começa com o primeiro operando, bem como o restante dos números do meio, mas não inclui o operando de fechamento.
Imagens
Para utilizar imagens na linguagem Dr. Racket, a parte superior do programa deve incluir a linha (requer 2ndp/imagem). Isso faz referência à segunda edição das regras de imagem do How to Design Book.
Para gerar um círculo

Para gerar um retângulo

Texto

Acima

Beside

Pilha

Lesson 5: Constant Definitions
A ideia de definir uma constante no Dr. Racket é semelhante, se não idêntica, ao que experimentei em outras linguagens de programação. Genericamente falando, definir uma constante significa dar um nome a um valor (que foi codificado) para ser usado no futuro. As constantes geralmente são definidas em maiúsculas, para diferenciá-las de outros tipos de valores definidos.
Para definir uma constante no Dr. Racket, pode-se usar a expressão:
Um exemplo funcional disso seria: (defina WIDTH 400). Isso criaria um valor nomeado chamado WIDTH que seria avaliado como o número 400 quando usado em uma expressão.
Notas adicionais desta seção:
Definir uma constante NÃO é igual a um valor de saída.
As constantes podem ser imagens. Por exemplo, (girar 10 CONSTANT) girará uma constante em 10 graus.
Lição 6: Definições de função
As funções são o mecanismo que permite produzir um resultado diferente cada vez que você executa um programa e podem ser usadas repetidamente com qualquer valor (válido). Na minha experiência, semelhante à definição de constantes, essa definição é verdadeira em muitas, se não todas, as linguagens de programação. Em todos os idiomas, um parâmetro é o valor alterável que é passado para a função.
O uso de funções permite que os programadores evitem a armadilha de "recortar e colar" em que podem estar inclinados a cair para revisar vários valores e permite um código mais limpo e conciso.

Para escrever uma função no Dr. Racket, a seguinte receita é usada:
![]()
Lição 7: Expressões booleanas e If
Valores booleanos são expressões que são avaliadas como verdadeiras ou falsas; Esse resultado também é conhecido como predicado. Não há intermediário para os booleanos, e isso também é verdade na maioria das linguagens de programação.
As expressões If dependem desse predicado para ramificar suas respostas. Se as declarações perguntarem ao programa: "isso é verdade? Se sim, faça isso. Se não, faça isso!". No Dr. Racket, uma instrução if é expressa da seguinte forma:

Lição 8: Usando o Stepper
A lição 8 analisou como utilizar uma ferramenta Dr. Racket chamada "The Stepper". Este programa permite que o desenvolvedor avalie seu programa passo a passo, para determinar onde pode estar um erro. É uma ótima ferramenta para quem usa a classe, mas não acho que seja necessário entrar em muitos detalhes aqui.
Lição 9: Descobrindo Primitivos
O que achei realmente interessante na lição 9 foi que seus princípios básicos pareciam contra-intuitivos para a maioria dos outros tipos de aprendizado, mas muito indicativos de como me sinto sobre a memorização de teoremas e métodos. Como esta classe tem sua própria linguagem de programação "inventada" para usarmos, ninguém está intimamente familiarizado com os primitivos (ou qualquer coisa, na verdade!) que temos disponíveis. O conselho para isso é duplo. Primeiro, somos encorajados a "Adivinhar!" porque a probabilidade é que, como a programação é intuitiva, podemos estar certos. A segunda sugestão é "Pesquisar e rolar", que é explicado como procurar um primitivo semelhante e ver o que mais relacionado está disponível em nosso guia. Como eu disse, sou um grande fã dessa abordagem, porque ela não força o aluno a memorizar inúmeras horas de detalhes, mas permite que ele mergulhe direto no trabalho interativo e aprenda ao longo do caminho.
ALRIGHT
É isso para as lições da semana 1. Acho que foi um ótimo começo porque consegui atualizar muitos conceitos básicos, mas também ter uma ideia geral de como o Dr. Racket funciona. As tarefas de casa eram bastante básicas e eu conseguia concluí-las com relativa facilidade. O que eu fiquei preso, para aqueles de vocês que estão acompanhando como colegas de curso, é que, ao colocar os resultados da avaliação, NÃO se esqueça dos "s em torno de suas cordas! Esqueci isso e quase falhei no teste de lição de casa por causa disso. Felizmente, nosso questionário da semana 1 permite uma retomada, então consegui corrigir meu erro e estou feliz em dizer que marquei 100%.