1. Análise do conteúdo

Do que se trata o conteúdo?

O texto apresenta a primeira videoaula da disciplina “Algoritmos e Programação de Computadores para o Univesp”. O professor Marcelo Manzato introduz o conceito de algoritmo, a importância de definir bem o problema, as etapas de desenvolvimento (definição, projeto, codificação e teste) e exemplifica com um algoritmo de troca de lâmpada, abordando sequenciamento, seleção e repetição.

Principais assuntos

  • Definição de problema e projeto de solução – antes de programar, deve‑se entender claramente o que se quer resolver.
  • Algoritmo – sequência finita de passos bem definidos, com ordem precisa e término garantido. Ex.: algoritmo para trocar lâmpada.
  • Estruturas básicas
    • Sequenciamento – execução linear dos passos.
    • Teste seletivo (condicional) – if/else. Ex.: só trocar a lâmpada se ela não acender.
    • Repetição (laço) – while. Ex.: repetir a troca enquanto a nova lâmpada não acender.
  • Codificação – transformar o algoritmo em código de uma linguagem (Python, C, Java etc.).
  • Teste – executar o programa com entradas variadas e validar as saídas.

Ponto de maior atenção

Um algoritmo deve ser completamente especificado: cada passo precisa ser executável por um computador, a ordem deve ser clara e o algoritmo deve ter um ponto de parada bem definido. Falhas nesses três requisitos geram ambiguidade e impossibilitam a execução automática.

Conclusão

O conteúdo demonstra que a construção de um programa começa com a modelagem do problema em forma de algoritmo, usando sequências, condições e repetições. Quando o algoritmo está bem detalhado, a transição para a linguagem de programação (Python, neste caso) torna‑se direta, permitindo a implementação, teste e depuração.

Bloco explicativo

A. Algoritmos para resolver problemas

Um algoritmo é um plano passo a passo que transforma dados de entrada em resultados desejados. Ele deve ser finito, determinístico e independente de linguagem. Exemplos típicos são algoritmos de ordenação (bubble sort), busca (binary search) e cálculo de fatorial.

B. Algoritmos na forma de fluxogramas

Fluxogramas são representações gráficas que utilizam símbolos padronizados (retângulo – processo, losango – decisão, paralelogramo – entrada/saída) para ilustrar o fluxo de controle de um algoritmo. Eles facilitam a visualização das estruturas de sequência, seleção e repetição antes da codificação.

C. Linguagem Python e como configurá‑la no seu computador

Python é uma linguagem de alto nível, interpretada e de sintaxe simples. Para instalá‑la:

  1. Baixe o instalador em python.org (versão 3.x).
  2. Execute o instalador marcando a opção “Add Python to PATH”.
  3. Verifique a instalação abrindo o terminal (cmd) e digitando python --version.
  4. Instale um editor de código (VS Code, PyCharm ou mesmo o IDLE que vem com o Python).
  5. Pronto! Você pode criar arquivos .py e executá‑los com python nome_do_arquivo.py.

2. Resumo geral do conteúdo

Na primeira aula da disciplina, o professor Marcelo Manzato introduz o conceito fundamental de algoritmo, destacando que ele representa a solução de um problema em forma de passos bem definidos, ordenados e finitos. Ele enfatiza que, antes de programar, é essencial compreender o problema que se deseja resolver, pois essa compreensão orienta todo o processo de desenvolvimento.

Em seguida, são apresentadas as três fases principais do desenvolvimento de software: definição do problema, projeto da solução (algoritmo) e codificação. O professor demonstra que, embora existam várias linguagens de programação (Python, C, Java etc.), todas compartilham estruturas básicas – sequência, condição e repetição – que são a base para a construção de qualquer programa.

Para ilustrar essas estruturas, o professor usa o exemplo cotidiano de trocar uma lâmpada queimada. Primeiro, ele mostra um algoritmo muito genérico (remover lâmpada, colocar nova). Depois, detalha cada passo, transformando‑o em um conjunto de instruções claras que um computador poderia seguir. A partir daí, introduz a condição (trocar a lâmpada somente se ela não acender) e, por fim, a repetição (continuar trocando lâmpadas enquanto a nova não acender).

O ponto central da aula é que um algoritmo deve ser preciso: cada instrução precisa ser executável, a ordem deve ser fixa e o algoritmo deve ter um fim. Caso alguma instrução ainda seja ambígua, o algoritmo deve ser refinado até que todas as etapas estejam totalmente especificadas.

Ao final, o professor propõe um exercício prático: criar um algoritmo para ir ao cinema assistir ao filme “Coringa”, considerando situações como falta de vagas, filas e indisponibilidade do filme. O objetivo é que os alunos apliquem as estruturas de sequência, seleção e repetição, preparando‑se para a próxima aula, que abordará a representação dos algoritmos em forma de fluxogramas e a sua implementação em Python.

3. Mapa mental

mindmap root((Algoritmos e Programação)) sub1(Definição de Problema) sub1a(Entender o objetivo) sub1b(Delimitar escopo) sub2(Projeto de Solução) sub2a(Algoritmo) sub2a1(Sequenciamento) sub2a2(Teste Seletivo) sub2a3(Repetição) sub3(Codificação) sub3a(Linguagens) sub3a1(Python) sub3a2(C) sub3a3(Java) sub4(Teste) sub4a(Entradas) sub4b(Saídas esperadas) sub5(Exemplo Prático) sub5a(Troca de Lâmpada) sub5a1(Detalhamento) sub5a2(Condição) sub5a3(Laço while) sub6(Exercício) sub6a(Ir ao cinema) sub6a1(Fila) sub6a2(Vagas) sub6a3(Filme indisponível)

Questões sobre o conteúdo

1. (1,50 ponto) Qual das alternativas abaixo descreve corretamente a característica essencial de um algoritmo?


2. (2,50 pontos) Considere o algoritmo abaixo para trocar uma lâmpada:

1. Acionar interruptor
2. Se a lâmpada não acender então
   2.1 Posicionar escada
   2.2 Subir escada
   2.3 Remover lâmpada queimada
   2.4 Inserir nova lâmpada
   2.5 Descer escada
   2.6 Voltar ao passo 1
3. Fim
      
Qual estrutura de controle está sendo utilizada?


3. (2,50 pontos) Em um fluxograma, qual símbolo representa uma operação de entrada ou saída?


4. (3,50 pontos) Considere o seguinte trecho de código Python que implementa a troca de lâmpada descrita na aula:

while not lamp_on():
    climb_ladder()
    unscrew_lamp()
    new = pick_new_lamp()
    screw_lamp(new)
    descend_ladder()

Assumindo que todas as funções auxiliares são corretas, qual das afirmações abaixo é falsa**?


Texto original

O texto original pode conter falhas de gramática ou de concordância, isso ocorre porque ele foi obtido por um processo de extração de texto automático.
Texto extraído do video Algoritmos e Programação de Computadores I - Noção de Algoritmos (LIBRAS)

a nossa disciplina de algoritmos e programações computadores para o universo eu sou o professor Marcelo Manzato, você o professor dessa disciplina antes de a gente começar pessoal, falar um pouco sobre a disciplina, eu gostaria de me apresentar melhor.
Eu sou professor da Universidade de São Paulo, do Instituto de Ciências Matemáticas e Comcutação do Câmpos de São Carlos, Estados São Paulo.
Sou formado em ciência da Comcutação, já ministeria diversas vezes disciplinas de programação e algoritmos em diversas linguagens.
E para mim, é um grande prazer ensinar a disciplina de programação para vocês, alunos da Universo, usando a linguagem Python.
Então, pessoal, eu gostaria de começar essa primeira aula apresentando um pouquinho pra vocês sobre noção de algoritmos.
Eu sei que vocês já tiveram algumas experiências passadas de algoritmos, noções de lógica, de algoritmos de modo geral.
E a ideia dessa primeira a um vídeo aula é que vocês possam relembrar um pouco sobre aquelas estruturas que são fundamentais de algoritmos.
Para que daí a gente possa depois, e se aprofundando mais em cada conceito, já trabalhando com a própria linguagem de programação Python.
Bom, antes de a gente partir então para os algoritmos em si, é importante a gente ver como é feita a construção de programas.
Inicialmente, a gente define o nosso problema, o que a gente quer resolver, o que define o que o nosso programa desenvolve, vai fazer.
Depois que você define o que vai ser feito no computador, a gente vai definir como aquela tarefa vai ser executada, aquele problema vai ser resolvido.
E é exatamente a segunda fase de desenvolvimento, que é onde entra o conceito de algoritmos.
Então, nós devemos aqui projetar a solução, que é feita por meio do algoritmo em si.
Depois, nós codificamos a solução usando uma linguagem de programação.
Essa linguagem de programação pode ser diversas, como a própria linguagem Python, a linguagem C, a linguagem Java, entre várias outras linguagens, que cada uma tem as suas especificidades, mas a maioria delas possuem algumas características que são incomum entre elas, que, no caso, seria as estruturas de sequência, de condição, de repetição.
Então, quando você aprende uma linguagem de programação, a primeira vez é sempre mais difícil.
Mais uma vez que você já está familiarizado com uma primeira linguagem de programação, aí a segunda, a terceira, e a indiante, já acaba ficando mais fácil de entender.
Bom, mas independente disso, uma vez que você tem a sua solução já codificada, entra a fase de teste, que é quando você dado o programa já que pode ser executado no computador, você vai rodar aquele programa com algumas entradas e vai verificar se a saída é esperada.
Bom, então, vamos ver o que são algoritmos.
Bom, uma algoritmo é uma sequência de passos que visam atingir um objetivo bem definido.
Então, você deve definir muito bem o seu objetivo, o que você pretende realizar, o que qualquer tarefa que você pretende executar.
Isso aqui entra a um porém, que quando você pede para uma pessoa fazer alguma coisa, por exemplo, você pede para algum colega, se eu para uma pessoa buscar um copo d'água, vamos supor, tá? Aquela pessoa que está recebendo aquela tarefa vai se perguntar alguns pontos que não estão muito claros para aquela pessoa.
Então, por exemplo, se a pessoa não sabe onde tem um copo limpo, ou onde tem um bebê-dour ou uma fonte de água, ela vai se perguntar ou vai perguntar para você ou para a outra pessoa, como resolver aquele passo específico, se ela não sabe onde tem um copo limpo, ela vai perguntar para a pessoa onde tem um copo, ou se ela não sabe onde fica o bebê-dour, ela vai também perguntar onde fica aquele bebê-dour.
Então quer dizer, as pessoas têm inteligência e habilidade racional, elas fazem perguntas para se esclarecer.
Já o computador não tem um senso próprio, ele não consegue perguntar, caso ele tenha dúvidas em relação ao uma tarefa específica.
Então, por conta disso, os nossos algoritmos devem ser muito bem definidos como uma sequência de passos, bem definida, para que ele possa executar todas aquelas tarefas sem dúvidas.
Tudo bem? Um algoritmo correto, pessoal, tem que ter três qualidades principais.
A primeira delas aqui, cada passo do algoritmo deve ser uma instrução que possa ser realizada.
A segunda qualidade é que a ordem dos passos deve ser precisamente determinada, então tem que ter uma ordem correta de execução de cada passo.
E o algoritmo deve ter um fim, então você deve especificar muito bem onde começa e onde termina o teu algoritmo.
Vamos fazer um exemplo, que é trocar uma lâmpada no teto.
Então, quais são as instruções que devemos executar para fazer a troca de uma lâmpada queimada no teto de um quarto? Então, para isso, podemos usar o português coloquial.
Olha só, eu tenho aqui um primeiro exemplo para trocar uma lâmpada no teto.
Eu tenho duas instruções nesse algoritmo.
A primeira é remova a lâmpada queimada.
E a segunda é coloque a nova lâmpada.
Bom, esse algoritmo, um pessoal pode ser que ele funcione, mas pode ser que ele não funcione, por que? Porque essas instruções elas estão muito genéricas.
Então, pode ser que o teu algoritmo não saiba como resolveu ou como executar cada instrução das.
Então, você pode, o computador pode perguntar assim, o que é necessário para remover a lâmpada queimada? Quer dizer, essa é a primeira instrução aqui.
Você pode ser que você tenha que especificar melhor ela.
Bom, para a gente poder remover essa lâmpada queimada, você pode especificar ela um pouco mais detalhada.
Então, nesse caso, aqui eu estou colocando três instruções para isso, para remover a lâmpada.
A primeira é posicionar uma escada debaixo da lâmpada queimada.
A segunda, subir na escada até que a lâmpada possa ser alcançada.
E a terceira, girar a lâmpada queimada no sentido anti-horário até que ela se solte.
Então, são as três etapas, três instruções para remover a lâmpada queimada.
Bom, então, essa primeira instrução a gente dividiu em três.
E aí, eu posso também pegar essa segunda instrução aqui e dividir ela também mais um conjunto de instruções mais detalhadas.
Então, o que é necessário para colocar a lâmpada nova? Então, para isso, eu poderia detalhar dessa maneira, escolhi uma lâmpada da mesma potência da queimada.
Posicionar a nova lâmpada no soquete, girar a lâmpada no sentido orário até que ela se firme e descendo a escada.
Tudo bem? Então, olha só, eu peguei a todas aquelas três instruções do remover a lâmpada e essas quatro instruções do colocar a nova lâmpada.
E coloquei elas sequencialmente aqui no meu algoritmo.
Então, o meu algoritmo ele ficou mais detalhado com esse conjunto de instruções.
E, teoricamente, ele funcionaria se o computador conseguir executar cada tarefa dessa daqui, cada passo desse.
E se ele não conseguir, se ele não conseguir, aí é questão de você detalhar mais ainda.
Então, pode ser, por exemplo, que você especifica, por exemplo, posicionar a nova lâmpada no soquete.
Pode ser que, nessa instrução, o computador não saiba executar essa tarefa.
Então, o que você vai ter que fazer? Se eu ter que detalhar mais, só essa instrução e a inserir aí dentro desse algoritmo.
Tá, Joia? Então, olha aqui, a gente tem o primeiro conceito de algoritmos, que é o conceito de sequenciamento.
Ele estabelece um padrão de comportamento.
Então, as ações vão ser executadas linearmente em sequência, uma após a outra, de cima para baixo, da esquerda para a direita.
Tudo bem? Até que o algoritmo termine.
Mas eu posso perguntar para vocês, e se a lâmpada não estiver queimada? Então, quer dizer, você vai trocar uma lâmpada sem necessidade.
E o que a gente pode fazer? A gente pode inserir o que a gente chama de teste seletivo.
Quer dizer, eu só vou trocar a lâmpada, assim, a que está lá no instalada, estiver queimada.
Então, olha só o que eu coloquei aqui, eu vou acionar o interruptor inicialmente.
E aí, eu coloquei um teste seletivo, se a lâmpada não acender, então, o que eu vou fazer? Eu vou posicionar a escada, vou subir na escada, vou girar a lâmpada, vou escolher uma nova lâmpada, vou posicionar a nova lâmpada num soquete, vou girar a lâmpada, até que ela se filme e vou descer da escada.
Então, quer dizer, todas essas instruções que estão aqui, pessoal, elas estão dentro dessa condição.
Então, somente se a condição for verdadeira quer dizer, a lâmpada não acendeu? É que eu vou executar todas elas, vou fazer a troca da lâmpada, se não, quer dizer, se eu acionar o interruptor e a lâmpada acender, eu não preciso trocar a lâmpada.
Então, eu não executo nenhuma dessas instruções que estão aqui, e meu algoritmo já vem para cá e finaliza.
Beleza? Então, e a gente tem o teste seletivo, que vai determinar um conjunto de ações que deve ser seguido, dependendo do resultado da condição, resultar em verdadeiro ou false.
Se resultar em verdadeiro, eu executo aquelas instruções que estão dentro do teste.
Caso contrário, eu não executo.
Bom, tem um esse algoritmo, ele é legal, mas eu posso perguntar de novo para vocês.
E se a lâmpada nova estiver quem-mada? O que que eu vou fazer? Bom, posso melhorar o algoritmo adicionando uma outra afortunalidade, que é a repetição, quer dizer, eu vou repetir a troca dessa lâmpada enquanto a nova lâmpada não acender.
Então, eu tenho aqui um teste inicial para verificar se a lâmpada está quem-mada, quer dizer, eu acionei inicialmente o interruptor.
Se a lâmpada não acender, eu quer dizer que essa condição aqui foi verdadeira.
Então, eu vou posicionar a escada debaixo da lâmpada que-mada, subindo a escada até que ela possa ser alcançada.
E agora, eu posso continuar com esse comando enquanto com essa estrutura enquanto que essa estrutura faz.
Ela vai executar tudo que estiver dentro desse comando, que são todas essas instruções, enquanto essa condição que estiver aqui foi verdadeira.
Então, enquanto a lâmpada não acender, eu vou fazer girar a lâmpada quem-mada, escolhi uma nova lâmpada, posicionar a lâmpada no soquete, girar a lâmpada e descer da escada.
Então, reparem que se a nova lâmpada continuar não acender, quer dizer, eu troquei para uma outra lâmpada que também está quem-mada.
Essa condição aqui, do enquanto, ainda vai ser verdadeira.
Então, eu vou ter que executar novamente todas essas instruções que estão aqui.
Beleza? E aí, a gente tem, então, essa estrutura de repetição que é o mesmo trecho, vai ser repetido várias vezes, até que a condição de parada seja alcançada.
E qual que é a condição de parada? A condição de parada é quando a lâmpada acender.
Tudo bem? O número de repetições é indefinido, quer dizer, você não sabe quantas vezes você vai executar isso.
Mas é importante, né, deixar claro que esse número de repetições é finito, tá? Então, você não pode ter um algoritmo com um laço de repetição infinito.
Até pode, mas tem que ter alguma hora, vai ter que parar.
Essa não pode ter um programa que vai executar infinitamente, em algum momento esse programa tem que finalizar.
Até quando a gente tem que refinar o algoritmo, então, eu já falei para vocês, né? Até que as instruções cheguem mais próximo das instruções que são disponibilizadas pela linguagem de programação.
O algoritmo, ele deve ser independente da linguagem.
Então, reparem que a gente criou esse primeiro algoritmo, independente de par, onde já vai de cede, ou qualquer outra linguagem.
Qual que seria o próximo passo? É traduzir isso numa linguagem de programação.
Especifica.
As linguagens de programação, assim como os computadores, tem um conjunto restrito de instruções.
E muitas essas instruções são em comum, como os testes seletivos, as repetições, comandos, de entrada, saída de dados.
Então, a gente vai ver todas essas instruções, essas funcionalidades para a linguagem parte ou ao longo desta disciplina.
Vou deixar aqui como exercício para vocês fazerem esse algoritmo para assistir ao filme Coringa no cinema.
Então, reparem que eu já coloquei aqui um algoritmo inicial, que ir ao cinema, comprar entrada, ver o filme, voltar para casa.
Mas eu quero que vocês tenham refinar este algoritmo, essas instruções.
Em especial, tentar tratar algumas perguntas como essas daqui.
Se não estiver passando aquele filme, ou curingra, ou se tiver fila na hora de comprar uma entrada, e se não houver lugar na hora de fazer a compra.
Eu quero que vocês tenham usado os testes de seleção e de repetição para resolver essas perguntas, especificar bem no algoritmo para essas condições que estão aí.
Tudo bem? Então, é isso, pessoal.
Essa daqui foi a nossa primeira videoaula de noções de algoritmos.
Na próxima videoaula, a gente vai continuar com esse assunto, só que agora, numa representação diferente, que são os fungios programas.
E espero que vocês possam ter aproveitado essa primeira videoaula, e que a gente possa se ver aí na próxima videoaula.
Então, muito obrigado e até lá!

Total: 0.00