Guia para estudo dos Capítulos 5 e 6 de BCC Estude e pratique o Capítulo 5 (sobre instruções seqüênciais) na última semana de julho. Trabalharemos com o Capítulo 6 (sobre estruturas condicionais) na primeira semana de agosto, quando poderemos rever os conceitos do cap. 5. Daremos destaque às operações com Scilab, para visualizar de modo mais claro os conceitos matemáticos envolvidos, mas também trabalharemos com as situações mais simples do Robomind. Capítulo 5 e instruções seqüênciais com o Robomind Note que a orientação do robô difere da orientação da tela, ou seja, o robô anda em frente em relação à sua posição, não à da exibição no monitor. Compare ainda os comandos andarFrente e andarNorte. A seção 5.4 propõe um exercício resolvido e alguns exercícios propostos. Você deve utilizar o Bloco de Notas (ou o gedit em Linux) para prover os mapas para o robô; trata-se do “texto puro”, ou sem formatação, que discutimos anteriormente como “códigofonte”. Não é necessário digitar as linhas que começam com #, que são apenas explicações que não são lidas pelo programa, chamadas “comentários”. (Note, porém, quando se trata de seu próprio programa, você deve “documentá-lo” explicando seu funcionamento em comentários inseridos ao longo de todo o código-fonte.) No Bloco de Notas, você deve salvar o texto finalizado através do item “Salvar Como”, onde pode alterar a extensão do arquivo para map, como atividade.map. Os exercícios propostos 2 e 3 são rápidos. O ex. 4 é simples, mas não é rápido. Os ex. 5 e 6 são bastante demorados, mas são necessariamente difíceis? Tente também os ex. 7 e 8. Depois de falar um pouco de Scilab, o texto retoma o Robomind nos quatro exercícios da subseção 5.7.1. Os arquivos relevantes estão no website, mas o importante é ler e entender os exercícios, depois praticá-los com tempo. com o Scilab A seção 5.5 trabalha com código-fonte em Scilab. Para que não seja necessário alterar o código em cada execução com dados diferentes – o que potencializaria eventuais erros –, introduzem-se os comandos de entrada e saída de dados. A função input escreve uma sentença e retorna o valor digitado à posição que ocupa na linha do comando. Já printf é uma função um pouco mais complicada, que vem da programação em linguagem C. Seu primeiro argumento é uma seqüência de caracteres entre aspas, sendo que alguns caracteres são especiais (como “comandinhos” que vimos em HTML) para dizer ao Scilab onde inserir determinadas informações. Eles são: %f – para escrever um número real (floating em inglês); %d – para escrever um número inteiro em formato decimal; \n – para iniciar uma nova linha (já que o próprio enter terminaria o comando). Em seguida a essa seqüência entre aspas, devem vir mais argumentos, separados com vírgulas, um para cada sinal %f ou %d, com uma variável que contenha um valor fracionário ou inteiro, respectivamente. Dê especial atenção aos exercícios com Scilab na subseção 5.7.2. Capítulo 6 e estruturas condicionais Este capítulo usa o conceito de instrução seqüencial do capítulo anterior (e que temos discutido, de fato, desde a primeira aula). Apenas são introduzidas duas novas instruções, que permitem selecionar grupos de instruções para executar com base em um teste lógico. Essa condição lógica deve ser uma só, mas pode ser “composta”, isto é, construída a partir de outras mais simples com as palavras-chave (“conectivos”) “não” (negação), “e” (conjunção) e “ou” (disjunção). Aqui, “ou” é inclusivo, ou seja, “P ou Q” é verdadeira sempre que uma ou ambas P, Q sejam verdadeiras; é falsa somente quando ambas P, Q são falsas. No caso do Robomind, as duas instruções são se e se-senão, do seguinte modo: se (condição lógica) { comando 1 comando 2 ... último comando } que executa os comandos entre as chaves somente se a condição lógica for verdadeira (as chaves são usadas para dizer ao programa quais comandos separar do fluxo geral de comandos), ou ignora tudo se for falsa, e se (condição lógia) { comando 1 comando 2 ... último comando } senão { outro comando 1 outro comando 2 ... último outro comando } que executa apenas o primeiro bloco caso a condição seja verdadeira, ou apenas o segundo bloco caso seja falsa (a primeira versão, portanto, corresponde à segunda tendo o segundo bloco vazio). Um exemplo está na listagem 6.5 do livro. Compare essas construções cuidadosamente com aquelas nas listagens 6.9 e 6.10, na linguagem do Scilab; conheça também como são os conectivos lógicos no Scilab. Em aula, trabalharemos somente alguns exercícios que escolheremos para melhor relação tempo/conteúdo, na seção 6.6, com destaque para o Scilab, especialmente o segundo exercício da subseção 6.6.2.