




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Mini curso de programacao no octave
Tipologia: Notas de aula
1 / 342
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































O presente curso de programa¸c˜ao ´e voltado para alunos dos Curso T´ecnicos em Eletrˆonica, Automa¸c˜ao e Desenvolvimento de Sistemas. S˜ao apresentados conceitos b´asicos e in- termedi´arios da linguagem C, usando-se o sistema operacional Linux e ferramentas de programa¸c˜ao abertas (open source). Antes do estudos da Linguagem C, o curso aborda os conceitos b´asicos da programa¸c˜ao na linguagem do Matlab/Octave.
0.1 Introdu¸c˜ao
Esse curso de programa¸c˜ao para Octave ´e a primeira parte da disciplina laborat´orio de Programa¸c˜ao para os cursos t´ecnicos em Eletrˆonica e Automa¸c˜ao Industrial e da disciplina Introdu¸c˜ao a Inform´atica, do curso t´ecnico de Desenvolvimento de Sistemas. A segunda parte dessas disciplinas aborda a Linguagem C, que ´e o objetivo principal. A principal motiva¸c˜ao para se iniciar um curso de programa¸c˜ao com uma linguagem de programa¸c˜ao cient´ıfica e num´erica, baseada em scripts, ´e o fato dela ser mais amig´avel, com entrada e sa´ıda de dados de f´acil acesso e manipula¸c˜ao e a existˆencia de recursos gr´aficos de f´acil utiliza¸c˜ao. A quest˜ao de qual linguagem e ambiente de programa¸c˜ao ´e mais recomend´avel para se iniciar programa¸c˜ao ´e controversa. Muitos estudiosos afirmam que a utiliza¸c˜ao de ambientes de programa¸c˜ao mais amig´aveis ´e a melhor forma de se fazer o primeiro contato com a programa¸c˜ao de computadores [11], [8]. Existem vers˜oes online de cursos para Matlab (vers˜ao propriet´aria da Matworks da qual o Octave ´e um “clone”open source) ofertados por renonadas universidades norte americanas. Vide por exemplo [2] e [1]. O principal objetivo do curso ´e ensinar a programar, desde o n´ıvel b´asico at´e o
10
Avalia¸c˜oes consistem em exerc´ıcios em sala, trabalhos pr´aticos e quest˜oes concei- tuais. As avalia¸c˜oes s˜ao efetuadas (na sua maioria) na plataforma Moodle.
Material extra (apostilas, links, atividades, question´arios, curisosidades, imagens, filmes) poder˜ao ser usados para as avalia¸c˜oes (quando for esse o caso, haver´a informa¸c˜ao no site).
Aluno deve consultar semanalmente a p´agina do Curso no Moodle.
Aluno deve estar atento com as datas de submiss˜ao de trabalhos.
Aulas te´oricas poder˜ao ser marcadas em hor´arios especiais (incluindo s´abados).
Alunos devem utilizar recursos do Moodle para informa¸c˜oes com o professor e monitores.
Aten¸c˜ao para os hor´arios da monitoria (a ser informado pelo professor).
O curso ´e dividido em duas partes principais: A primeira parte aborda a programa¸c˜ao cient´ıfica e num´erica, a partir do programa Octave [3], que ´e um programa gratuito com uma curva de aprendizagem muito r´apida. A segunda parte aborda a programa¸c˜ao na Linguagem C, para Linux.
Primeira Parte
O objetivo da primeira parte ´e familiarizar o aluno com os conceitos da programa¸c˜ao de computadores, a partir de aplica¸c˜oes relacionadas com a Matem´atica e F´ısica: fun¸c˜oes, gr´aficos, equa¸c˜oes e respostas temporais de sistemas dinˆamicos. Ao iniciarmos o curso com um n´ıvel de programa¸c˜ao mais aplicada buscamos motivar o aluno apresentando os conceitos b´asicos da programa¸c˜ao de uma forma mais r´apida e contextualizada. Nessa primeira parte todos os conceitos fundamentais da programa¸c˜ao ser˜ao vistos, para depois serem aprofundados na segunda parte: vari´aveis, arrays, entrada e sa´ıda de dados e com arquivos, estruturas de decis˜ao e repeti¸c˜ao, fun¸c˜oes. Al´em da abordagem com esses conceitos da programa¸c˜ao, nessa primeira parte ser˜ao vistos e revistos conceitos b´asicos da Matem´atica: fun¸c˜oes e gr´aficos, solu¸c˜oes de equa¸c˜oes de grau n, sistemas de equa¸c˜oes, equa¸c˜oes lineares e n˜ao lineares. Polinˆomios. Aspectos intermedi´arios e avan¸cados da programa¸c˜ao aplicada a Matem´atica e F´ısica tamb´em fazem parte dessa primeira parte: Vetores, Matrizes e Gr´aficos 2D. Algebra Li-´ near. Sistemas F´ısicos e suas dinˆamicas. Princ´ıpios de Otimiza¸c˜ao. Transforma¸c˜oes geom´etricas no plano. Fractais. Itera¸c˜ao e Recurs˜ao. Anima¸c˜oes e gr´aficos 3D. Trata- mento de dados. Numera¸c˜ao. N´umeros complexos.
Todos esses t´opicos podem ser trabalhados com os recursos e os pacotes do Octave, no n´ıvel de entendimento adequado ao Curso T´ecnico de N´ıvel M´edio, e objetivam, acima de tudo motivar o estudo de t´opicos relacionados com Matem´atica, F´ısica, Engenharia e Teoria de Sistemas.
Segunda Parte
A segunda parte aborda a programa¸c˜ao na Linguagem C, que ´e o foco principal do Curso. Considerando-se que o aluno aprendeu os fundamentos da programa¸c˜ao na primeira parte, o aprendizado da programa¸c˜ao em C se dar´a mais rapidamente. A curva de aprendizado da programa¸c˜ao em C ´e mais lenta, devido a pr´opria lingua- gem e a proximidade dela com as linguagens de “baixo n´ıvel”. Sendo assim, a primeira parte do curso dar´a a base para que o estudo da linguagem C seja menos ´arduo, pois no curso de programa¸c˜ao para Octave j´a estare,ps apresentando os conceitos fundamentais da programa¸c˜ao. O curso de C vai at´e o n´ıvel intermedi´ario ou pr´e-avan¸cado, terminando com os cap´ıtulos sobre estruturas de dados e aplica¸c˜oes para Eletrˆonica e Automa¸c˜ao.
O curso ´e organizado no Moodle. Cada semana ´e apresentado um roteiro de aula, seja pr´atica ou te´orica. Al´em dos roteiros, s˜ao postados no Moodle exerc´ıcios, problemas pr´aticos. Para acompanhar o curso o estudante tem que seguir a sequˆencia apresentada no Moodle. O material do curso ´e formado por:
Essa apostila (dividida em duas partes: Octave e Linguagem C).
Material postado no Moodle: Roteiros de Aula, dicas e Exerc´ıcios
Lista de Exerc´ıcios espec´ıficas para cap´ıtulo da Apostila.
Textos extras, links, solu¸c˜oes.
F´orum de discuss˜ao no Moodle.
V´ıdeo-aulas.
A ideia do curso ´e que, com o material disponibilizado, o estudante interessado, se desejar pode seguir no seu pr´oprio ritmo. Esta apostila cont´em dezenas de exemplos e c´odigos de scripts. Uma forma de se estudar programa¸c˜ao ´e entendendo c´odigos de programas (no caso do Octave, scripts) prontos. Portanto, sempre que estudar um c´odigo, entenda bem o que ele faz e quais recursos utiliza.
Neste cap´ıtulo veremos algumas opera¸c˜oes b´asicas com n´umeros na base 10, 16 e 2. Focaremos nos n´umeros bin´arios. O objetivo ´e fundamentar as opera¸c˜oes de bits e bytes que ser˜ao realizadas nos programas em C. Vamos aprender sobre n´umeros bin´arios e as convers˜oes entre as bases 10, 16 e 2. Vamos ver as opera¸c˜oes de transforma¸c˜ao de base e as opera¸c˜oes l´ogicas AND, OR, NOT (AND, OU, N AO) entre bits.˜ Objetiva-se apresentar de forma pr´atica e resumida os conceitos principais relacio- nados com a mudan¸ca de base. Esse texto deve ser usado como material complementar para a mat´eria introdut´oria de programa¸c˜ao de computadores, disponibilizada no Moodle (curso de 2014).
Como vimos, podemos formar n´umeros em diferentes bases a partir da combina¸c˜ao de seus d´ıgitos b´asicos. Na numera¸c˜ao decimal (base 10), temos 10 d´ıgitos (0... 9). Na numera¸c˜ao bin´aria temos 2 d´ıgitos. Na hexadecimal temos 16 d´ıgitos (de 0 a 15, sendo que de 10 a 15 usamos as letras A at´e F ). Lembrando que o n´umero bin´ario ´e definido com uma combina¸c˜ao de 0′s e 1′s, cada uma com seu valor relativo, de acordo com a posi¸c˜ao dentro de um n´umero. Assim como na base 10, em que cada algarismo (ou d´ıgito) tem seu valor relativo a posi¸c˜ao (unidade, dezena, centena, etc.), tamb´em no m´umero bin´ario (ou em qualquer n´umero de qualquer outra base), a posi¸c˜ao de uma algarismo est´a relacionada com seu
15
valor. Para saber o valor do n´umero bin´ario na base 10, basta fazer a opera¸c˜ao de soma dos valores, multiplicados pela base elevada `a potˆencia correspondente. Veja na figura 1.1 como calcular o valor do n´umero 0111.
Figura 1.1: N´umero 7 em bin´ario e decimal
Portanto a convers˜ao de bin´ario para decimal ´e feita simplesmente calculando-se os valores dos algarismos, a partir da sua posi¸c˜ao relativa e calculando-se a soma.
Efetue a convers˜ao para a base 10 dos n´umeros bin´arios dados a seguir.
Para converter um n´umero na base 10 para a base 2, deve-se efetuar as divis˜oes suces- sivas, at´e o quociente seja 0 (na divis˜ao INTEIRA, de 1 por 2, tem-se o quociente 0). Veja a figura 1.2. Chegando-se ao quociente 0 o n´umero bin´ario ´e formado tomando-se os RESTOS das divis˜oes.
Analogamente `a convers˜ao para de decimal para bin´ario, para mudar um n´umero da base 10 para base 16, s˜ao feitas divis˜oes sucessivas, s´o que, obviamente, a divis˜ao ´e feita por 16 (e n˜ao por 2). Veja figura 1.3.
Figura 1.3: Mudan¸ca da base 10 para base 16
representados com 4 bits. Veja a tabela 1.1 com as correspondˆencias dos algarismos da base 16 com a representa¸c˜ao bin´aria.
Decimal Hexadecimal Bin´ario Decimal Hexadecimal Bin´ario 0 0 0 0 0 0 8 8 1 0 0 0 1 1 0 0 0 1 9 9 1 0 0 1 2 2 0 0 1 0 10 A 1 0 1 0 3 3 0 0 1 1 11 B 1 0 1 1 4 4 0 1 0 0 12 C 1 1 0 0 5 5 0 1 0 1 13 D 1 1 0 1 6 6 0 1 1 0 14 E 1 1 1 0 7 7 0 1 1 1 15 F 1 1 1 1
Tabela 1.1: N´umeros Decimais, Hexadecimais e Bin´arios
Assim, a representa¸c˜ao hexadecimal (ou simplesmente hexa) pode ser associada com a bin´aria a CADA 4 BITS, pois um ALGARISMO hexadecimal equivale a 4 algarismos bin´arios, ou 4 bits. A convers˜ao entre essas bases ´e, portanto, imediata. Veja a figura 1.4. Na figura 1.4 temos a convers˜ao do n´umero (A 7 0 F )H no bin´ario correspondente. Para fazer essa convers˜ao, basta fazermos a convers˜ao de cada um dos algarismos. Assim:
(A 7 0 F )H = 1010011100001111
pois, a cada algarismo hexa associamos um bin´ario de 4 bits. Ainda na figura 1.4, tem-se
a convers˜ao do n´umero 1010101 para hexa. Para fazer essa convers˜ao basta agruparmos de 4 em 4 o n´umero bin´ario, iniciando da esquerda, e completandno com 0′s a direita. Veja que o n´umero 1010101 pode ser escrito como:
0101 0101
pois colocamos um zero ´a direita. Agora para fazer a convers˜ao, basta saber qual ´e o n´umero hexa de cada conjunto de 4 bits.
Figura 1.4: Mudan¸ca da base 16 para base 2. Repare que tanto para passarmos de hexa pra bin´ario quanto de bin´ario para hexa, agrupamos os n´umeros em 4 bits.
Fa¸ca as convers˜oes pedidas (aten¸c˜ao para a nota¸c˜ao).