t1_variaveis.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. <!--
  2. MAC2166 - 2017 - Prof. Leo^nidas de Oliveira Branda~o
  3. -->
  4. <!DOCTYPE html>
  5. <html class='yui3-js-enabled' dir='ltr' xml:lang='pt-br' lang='pt-br'>
  6. <head>
  7. <title>Introdução às variáveis e expressões aritméticas</title>
  8. <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
  9. <meta name='keywords' content='mac0122, material, professore, leonidas de oliveira brandao'>
  10. <link rel='stylesheet' type='text/css' href='css_img_js_conf/all.css'>
  11. <script id='firstthemesheet' type='text/css'>/** Required in order to fix style inclusion problems in IE with YUI **/</script>
  12. <style type="text/css">
  13. .tbCodeLinCol { border-collapse:collapse; }
  14. .tbCodeLinCol th { background-color:#8aaada; }
  15. .tbCodeLinCol td, .tbCodeLinCol th { padding:5px;border:1px solid #000; font: 10px/12px Arial, Helvetica, sans-serif; }
  16. .tbCode td, .tb th { border: 0; font: 10px/12px Arial, Helvetica, sans-serif; }
  17. .tableCd { border-collapse:collapse; }
  18. .thBg th { background-color:#8aaada; }
  19. .trCd td, .tbCd td, .tbCd th { vertical-align: top; padding:5px; border-right:1px solid #000; font-family: courier }
  20. .cmd { color: #0000AA; }
  21. .def { color: #9D009D; }
  22. .fnc { color: #008866; }
  23. .head { color: #000000; }
  24. .var { color: #009A00; }
  25. .tipo { color: #005A5A; }
  26. .com { color: #AA0000; }
  27. .versao { font-size: .6em; }
  28. .rodape { font-size: .8em; }
  29. div.exemplo {color:#006f3f;}
  30. </style>
  31. <link rel='stylesheet' type='text/css' href='./css/codigos_css.css'>
  32. <script>
  33. function openTab(evt, tabName, divPai) {
  34. // Declare all variables
  35. var i, tabcontent, tablinks;
  36. // Get all elements with class="tabcontent" and hide them
  37. tabcontent = document.getElementById(divPai).getElementsByClassName("tabcontent");
  38. for (i = 0; i < tabcontent.length; i++) {
  39. tabcontent[i].style.display = "none";
  40. }
  41. // Get all elements with class="tablinks" and remove the class "active"
  42. tablinks = document.getElementById(divPai).getElementsByClassName("tablinks");
  43. for (i = 0; i < tablinks.length; i++) {
  44. tablinks[i].className = tablinks[i].className.replace(" active", "");
  45. }
  46. // Show the current tab, and add an "active" class to the button that opened the tab
  47. document.getElementById(tabName).style.display = "block";
  48. evt.currentTarget.className += " active";
  49. }
  50. </script>
  51. </head>
  52. <body id='page-mod-page-view' class='format-topics gecko lang-pt_br pagelayout-incourse'>
  53. <div id='page-wrapper'>
  54. <header role='banner' class='pos-f-t navbar navbar-full navbar-light bg-faded navbar-static-top'>
  55. <div class='container-fluid navbar-nav'>
  56. <a href='index.html' class='navbar-brand'>Introdução</a><!-- botao fundo azul -->
  57. <!-- user_menu --> <div class='usermenu'> <div class='action-menu moodle-actionmenu nowrap-items' id='action-menu-1' data-enhance='moodle-core-actionmenu'> <div class='menubar' id='action-menu-1-menubar' role='menubar'>
  58. <div class='dropdown'> <a href='http://www.ime.usp.br/~leo' title='sitio pessoal autor' role='button'> <span class='userbutton'> <span class='usertext'>Leônidas de Oliveira Brandão</span> <span class='avatars'> <span class='avatar current'><img src='css_img_js_conf/icone_leo.png' alt='Imagem de Leônidas de Oliveira Brandão' title='Imagem de Leônidas de Oliveira Brandão' class='userpicture' role='presentation' height='35' width='35'></span> </span> </span> </a> </div> </header>
  59. <div id='page' class='container-fluid'>
  60. <header id='page-header' class='row'>
  61. <div class='col-xs-12 p-a-1'>
  62. <div class='card'>
  63. <div class='card-block'>
  64. <h1>Material didático para Introdução à Programação</h1>
  65. <!-- caminho -->
  66. <div class='clearfix w-100 pull-xs-left' id='page-navbar'>
  67. <div class='breadcrumb-nav'>
  68. <nav role='navigation'>
  69. <ol class='breadcrumb'>
  70. <li class='breadcrumb-item'><a href='http://www.ime.usp.br/~leo/'>Página inicial</a></li>
  71. <li class='breadcrumb-item'><a href='index.html' title='inicio material'>Material de apoio didático</a></li>
  72. </ol>
  73. </nav>
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. </div>
  79. </header>
  80. <center><p>[
  81. <a href="memoria" title="sobre memoria, bits e bytese">Memória</a> &nbsp; | &nbsp;
  82. <a href="#variaveis" title="variaveis inteiras e reais">Variáveis</a> &nbsp; | &nbsp;
  83. <a href="#expressoes" title="expressoes aritmetics">Expressões</a> &nbsp; | &nbsp;
  84. <a href="#contexto" title="resultado de uma expressao depende do contexto">Contexto</a> &nbsp; &nbsp;
  85. ]</p>
  86. </center>
  87. <span style="color: #0055AA;font-size:1.2em"><b>Introdução às variáveis e expressões aritméticas</b></span>
  88. <br/>&nbsp;
  89. <p>
  90. Nesta seção apresentaremos o conceito de variáveis e de expressões aritméticas.
  91. </p>
  92. <a name="variaveis">
  93. <span style="color: #0055AA;font-size:1.1em">Ideia de variável</span></a>
  94. <p>
  95. Ilustraremos a ideia e necessidade de variáveis a partir de um exemplo simples: como realizar o
  96. cálculo de gastos usando uma calculadora muito elementar.
  97. </p>
  98. <p>
  99. <img src="img/t1/img_calc.png"
  100. style="float: left; margin-right: 1%; margin-bottom: 0.5em;justify-content: center;" title="imagem calculadora"/>
  101. Imagine uma calculadora simples, como ilustrado ao lado, dispondo de apenas um mostrador e
  102. as 4 operações básicas (soma, subtração, multiplicação e divisão).
  103. </p>
  104. <p>
  105. Caso você deseje computar os seus gastos, deve digitar sequencialmente os valores
  106. gastos, um a um, intercalados com o operador soma <tt>+</tt>, sendo que ao final você deve teclar
  107. <tt>=</tt> para visualizar o resultado das somas. <!-- e obtermos na tela o valor total gasto. -->
  108. Vamos supor que os valores dos gastos foram
  109. <tt>5</tt>, <tt>2</tt>, <tt>3</tt>, <tt>5</tt> e <tt>3</tt>, ao final teriamos o valor 18.
  110. </p>
  111. <p>
  112. Mas como foi possível obter a soma de todos os valores? Isso só foi possível por existir um
  113. "acumulador" (<tt>AC</tt>) para armazenar o primeiro valor digitado e depois disso, esse mesmo
  114. "acumulador" teve um novo valor a ele adicionado (ou acumulado):
  115. <tt>AC := <b>5</b></tt>, depois
  116. <tt>AC := 5+<b>2</b> = 7</tt>. depois
  117. <tt>AC := 7+<b>3</b> = 10</tt>. depois
  118. <tt>AC := 10+<b>5</b> = 15</tt> e por último
  119. <tt>AC := 15+<b>3</b> = 18</tt>.
  120. </p>
  121. <p>
  122. Usaremos o exemplo acima (da calculadora) para apresentar a ideia de <i>variáveis</i>.
  123. A calculadora pode ser entendida como um dos componentes de um computador, um componente que realiza os cálculos.
  124. O recurso da calculadora que armazena os valores computados (que denotamos por <tt>AC</tt>) seria o
  125. equivalente a uma posição de memória em um computador <em>(um pedaço da memória que pode armazenar valores)</em>.
  126. <details>
  127. <summary class="tab">Curiosidade</summary>
  128. <p class="paraConhecerMais" style="width: 600px">Para se ter uma noção da diferença, deve-se notar que um computador moderno dispõe de vários registradores e um memória muitas
  129. ordens de grandeza maiores, hoje compra-se computadores com ao menos <i>2 Gb</i> de memória <i>RAM</i>
  130. (<i>Gb</i> = <i>giga bytes</i> = 1 bilhão de <i>bytes</i>)</p>
  131. </details>
  132. <p>
  133. Deve-se destacar que o valor armazenado na <strike>registrador ou </strike> memória pode ser alterado, podendo-se dizer
  134. que os valores na memória <i>variam</i>, dai o nome de <b style="color: #0000AA">variável</b> adotado para representar esses
  135. locais em linguagens de programação.
  136. Usualmente, pode-se usar qualquer combinação de letras e números (iniciando por uma letra) para compor o
  137. nome de uma variável.
  138. Exemplo de uma instrução alterando o valor da variável de nome <tt>x</tt> em uma linguagem de programação
  139. qualquer:
  140. <div class ="codigo">
  141. <span class="codigo"><tt>x = b*b - 4 * a * c</span><br />
  142. </tt> <tt>x</tt> recebe o resultado da expressão "o quadrado do
  143. valor armazenado em <tt>b</tt> menos <tt>4</tt> vezes o conteúdo em <tt>a</tt> vezes o conteúdo em <tt>c</tt>".
  144. </div>
  145. <!--
  146. No exemplo acima, a calculadora faz o papel de um <i>unidade central de processamento</i> (ou <i>CPU</i> no termo em Inglês)
  147. e o "acumulador" é um <i>registrador</i> que serve para armazenar valores.
  148. Em um computador digital, existe um número razoável de registradores e o restante das informações devem ser armazenadas
  149. na <i>memória</i> do computador, que não é tão rápido quanto um registrador, mas é muito mais barata.
  150. O registrador ou posições de memória podem ter seus valores trocados ao longo da execução do programa (código)
  151. e por isso cada uma dessas posições pode ser entendida como uma <b>variável</b>.
  152. -->
  153. </p>
  154. <p>
  155. Sendo assim podemos dizer que uma variável:
  156. <ul>
  157. <li>É um espaço de memória utilizado para guardar e manipular uma informação;</li>
  158. <li>Pode ter seu valor alterado;</li>
  159. <li>Em geral deve ter seu nome inicializada por uma letra seguido de qualquer número de caracteres,
  160. excetuando-se caracteres especiais;</li>
  161. <li>Deve ter um nome descritivo, de forma que o leitor possa entender facilmente para que ela serve.</li>
  162. </ul>
  163. </p>
  164. <p>
  165. Assim, toda <i>linguagem de programação</i> possibilita a manipulação de variáveis. Por exemplo na linguagem
  166. <i>C</i> pode-se declarar uma variável do tipo inteiro com o comando
  167. <tt style="color: #0000AA">int AC = 5;</tt>
  168. (no exemplo, além de declarar uma variável de nome <tt>AC</tt>, também a iniciamos com o valor <tt>5</tt>).
  169. </p>
  170. <!------------------------------------------------------------>
  171. <div id="codigos1">
  172. <div class="tab">
  173. <button class="tablinks" onclick="openTab(event, 'C', 'codigos1')">C</button>
  174. <button class="tablinks" onclick="openTab(event, 'Python', 'codigos1')">Python</button>
  175. <button class="tablinks" onclick="openTab(event, 'iVProg', 'codigos1')" id="defaultOpen">iVProg</button>
  176. </div>
  177. <!-- Tab content -->
  178. <div id="C" class="tabcontent">
  179. <img src="img/t1/cod1_c.png"/>
  180. </div>
  181. <div id="Python" class="tabcontent">
  182. <img src="img/t1/cod1_py.png"/>
  183. </div>
  184. <div id="iVProg" class="tabcontent" >
  185. <img src="img/t1/decl_iVProg.png"/>
  186. </div>
  187. </div>
  188. <p>
  189. Portanto, <b>variável</b> é essencial para que possamos fazer com que o programa receba algum dado de nosso interesse.
  190. Mesmo em um <i>editor de texto</i> isso ocorre, o texto que digitamos é armazenado (de alguma forma, em variáveis!).
  191. </p>
  192. <details>
  193. <summary class="tab" style="margin:0; width:200px">Para conhecer mais</summary>
  194. <div class="paraConhecerMais">
  195. <p>
  196. Para conhecer um pouco mais sobre como é possível implementar esse conceito em computadores digitais, estude o
  197. restante desse texto.
  198. </p>
  199. <a name="memoria">
  200. <span style="color: #0055AA;font-size:1.1em">Memória, <i>bits</i> e <i>bytes</i></span></a>
  201. <p>
  202. Um elemento essencial à computação é o conceito de variável, que significa de um ponto de vista mais
  203. próximo da linguagem da máquina (<i>baixo nivel</i>), a possibilidade de armazenar e recuperar diferentes valores
  204. em determinada posição de memória.
  205. </p>
  206. <p>
  207. Em última análise, os dados presentes na memória do computador é uma sequência de <i>bits</i> e um <i>bit</i>
  208. corresponde a uma posição de memória que pode armazenar o valor 0 ou o valor 1. No início da computação moderna
  209. a menor quantidade de <i>bits</i> que podia acessar eram 8, que foi denominado por <i>byte</i>.
  210. </p>
  211. <center><img src="img/t1/var_memoria1.jpg" title="ilustracao de 4 sequencias de 8 bits em memoria"/>
  212. </center>
  213. <p>
  214. Desse modo, toda informação armazenada no computador é uma sequência de <i>bytes</i> e o tratamento de cada
  215. que se dá para cada uma dessas sequências pode variar, por exmeplo, pode considerar a sequência <tt>0010</tt>
  216. com uma letra ou como um inteiro. Ou seja, de acordo com o <b>contexto</b>, se ela estiver associada a uma
  217. variável do tipo inteiro pode-se interpretar a sequência como um número inteiro, se for uma variável do
  218. tipo caractere, como um caractere.
  219. </p>
  220. <p>
  221. E qual a relação disso com variável? Bem, por exemplo, é necessário contar e, para fazer usando o computador
  222. precisamos pegar uma sequência de <i>bytes</i> interpretá-lo como inteiro, somar 1 e registrar o valor
  223. alterado. Isso é feito utilizando a mesma posição de memória, que está assim <i>variando</i>, dai o nome
  224. <i>variável</i>.
  225. </p>
  226. </div>
  227. </details>
  228. <br />
  229. <br />
  230. <a name="variaveis">
  231. <span style="color: #0055AA;font-size:1.1em">Variáveis inteiras e reais</span></a>
  232. <p>
  233. De um ponto de vista mais elevado (<i>alto-nivel</i>), utilizando uma linguagem de programação como <i>C</i>, <i>Python</i>
  234. ou <i>iVProg</i>, uma variável é representada por um nome, começado por letra e sem caracteres especiais (exceto "barra baixa" '_'
  235. que é permitido) e que não seja o nome de um comando da linguaguem (denominado de modo geral por <i>palavra reservada</i>).
  236. </p>
  237. <table class="tg">
  238. <tr>
  239. <th class="tab_titulo">Válidos<br></th>
  240. <th class="tab_titulo">Inválidos<br></th>
  241. </tr>
  242. <tr>
  243. <td class="tg-c3ow">abc<br></td>
  244. <td class="tg-c3ow">ab c<br></td>
  245. </tr>
  246. <tr>
  247. <td class="tg-c3ow">variavel123<br></td>
  248. <td class="tg-c3ow">vari<span style="font-weight:bold">á</span>vel123<br></td>
  249. </tr>
  250. <tr>
  251. <td class="tg-c3ow">var_1<br></td>
  252. <td class="tg-c3ow"><span style="font-weight:bold">1</span>_var<br></td>
  253. </tr>
  254. </table>
  255. <p>
  256. Além disso uma variável deve ter um tipo associado, os tipos básicos que examinaremos nesta seção são o
  257. inteiro (<i>int</i>) e o flutuante (<i>float</i>), este último para representar os valores reais.
  258. </p>
  259. <p>
  260. Para explicar melhor a necessidade de tipos, suporemos que o computador considerado utilize para uma variável
  261. <i>int</i> e para uma do tipo <i>float</i>, respectivamente, 2 e 4 <i title="cada byte tem 8 bits">bytes</i>.
  262. </p>
  263. <p>
  264. Desse modo, quando o citado computador precisa devolver o valor armazenado em uma variável do tipo inteiro, ele
  265. acessará a posição de memória associada à variável, pegará a partir dessa posição os próximos 16 <i>bits</i> e
  266. o interpretará como um valor inteiro.
  267. </p>
  268. <p>
  269. Do ponto de vista prático, vejamos como se usa variáveis do tipo <i>int</i> e do tipo <i>float</i> nas linguagens
  270. <i>C</i> e <i>Python</i>.
  271. </p>
  272. <div id="codigos2">
  273. <div class="tab">
  274. <button class="tablinks" onclick="openTab(event, 'C_2', 'codigos2')">C</button>
  275. <button class="tablinks" onclick="openTab(event, 'Python_2', 'codigos2')">Python</button>
  276. <button class="tablinks" onclick="openTab(event, 'iVProg_2', 'codigos2')" id="defaultOpen_2">iVProg</button>
  277. </div>
  278. <!-- Tab content -->
  279. <div id="C_2" class="tabcontent">
  280. <img src="img/t1/cod2_c.png"/>
  281. <!--<p class="codigo">int n1, n2;<br />
  282. n1 = 1;<br />
  283. scanf("%d", &n2);<br />
  284. printf("n1=%d e n2=%d\n", n1, n2);</p>-->
  285. </div>
  286. <div id="Python_2" class="tabcontent">
  287. <img src="img/t1/cod2_py.png"/>
  288. <!--<p class="codigo"># desnecessário declarar em <i>Python</i><br />
  289. n1 = 1<br />
  290. n2 = int(input())<br />
  291. print("n1=", n1, " e n2=", n2)</p>-->
  292. </div>
  293. <div id="iVProg_2" class="tabcontent" >
  294. <img src="img/t1/int_iVProg.png"/>
  295. </div>
  296. </div>
  297. <p>
  298. Note as diferenças entre <i>C</i>, <i>Python</i> e <i>iVProg</i>:
  299. <table class="tg">
  300. <tr>
  301. <th class="tab_titulo"><br></th>
  302. <th class="tab_titulo">C<br></th>
  303. <th class="tab_titulo">Python</th>
  304. <th class="tab_titulo">iVProg</th>
  305. </tr>
  306. <tr>
  307. <td class="tg-c3ow">Finalizador de linha<br></td>
  308. <td class="tg-c3ow"><span style="font-weight:bold">;</span><br></td>
  309. <td class="tg-c3ow">Não necessita<br></td>
  310. <td class="tg-c3ow">Não necessita<br></td>
  311. </tr>
  312. <tr>
  313. <td class="tg-c3ow">Declaração de variável<br></td>
  314. <td class="tg-c3ow"><span style="font-weight:bold">tipo</span> nome_variavel<br></td>
  315. <td class="tg-c3ow">Não tem<br></td>
  316. <td class="tg-c3ow"><span style="font-weight:bold">tipo</span> nome_variavel<br></td>
  317. </tr>
  318. <tr>
  319. <td class="tg-c3ow">Leitura de dados<br></td>
  320. <td class="tg-c3ow"><span style="font-weight:bold">scanf(..)</span> com formatador especial para forçar o
  321. computador a interpretar como inteiro, <span style="font-weight:bold">%d</span></td>
  322. <td class="tg-c3ow"><span style="font-weight:bold">input</span> submetido à outra função
  323. pré-definida do Python o <span style="font-weight:bold">int(..)</span>)<br></td>
  324. <td class="tg-c3ow"><span style="font-weight:bold">leia(..)</span><br></td>
  325. </tr>
  326. <tr>
  327. <td class="tg-c3ow">Saida de dados<br></td>
  328. <td class="tg-c3ow"><span style="font-weight:bold">printf(..)</span>, também com o formatador %d para inteiro
  329. a primeira parte entra aspas duplas e a segunda<br></td>
  330. <td class="tg-c3ow"><span style="font-weight:bold">print(..)</span>, caracteres entre aspas separados por vírgula<br></td>
  331. <td class="tg-c3ow"><span style="font-weight:bold">escreva(..)</span>, caracteres entre aspas separados pelo caractere da soma (+)<br></td>
  332. </tr>
  333. </table>
  334. <!--<ul>
  335. <li> De modo geral, todo comando em <i>C</i> precisa de ';' como finalizador.
  336. </li>
  337. <li> Na linha 1 percebe-se que tanto em <i>C</i> quanto no <i>iVProg</i> é obrigatório <b>declarar</b> as variáveis, enquanto que em <i>Python</i> não.
  338. </li>
  339. <li> Na linha 3 nota-se que <i>C</i> utiliza a função pré-definida de nome <i>scanf</i> para pegar valores digitados
  340. pelo usuário enquanto <i>Python</i> usa o <i>input</i>. O <i>scanf</i> usa o formatador especial '%d' para forçar
  341. o computador a interpretar os <i>bytes</i> como um inteiro, enquanto o <i>input</i> pega os <i>bytes</i>
  342. digitados e o submete à outra função pré-definida <i>Python</i>, o <i>int(...)</i>, que converte os <i>bytes</i> lidos para um inteiro.
  343. </li>
  344. <li> Na linha 4 nota-se o mesmo tipo de diferença, <i>C</i> utiliza a função <i>printf</i> para imprimir também com
  345. o formatador para inteiro '%d', além de separar em 2 blocos, o primeiro para formatar a saída, que é cercado
  346. por aspas dupla e o segunda, uma lista de variáveis compatíveis com o formatador.
  347. Já em <i>Python</i>, usa-se os caracteres entre aspas e as variáveis misturados, separador por vírgula.
  348. </li>
  349. <li> Vale destacar que a linha 4 apresenta a sintaxe do <i>Python</i> antes da versão 3, enquanto que a linha 5
  350. apresenta o mesmo resultado mas para o <i>Python</i> a partir da sua versão 3.
  351. </li>
  352. </ul>-->
  353. </p>
  354. <a name="expressoes">
  355. <span style="color: #0055AA;font-size:1.1em">Expressões aritméticas</span></a>
  356. <p>
  357. Do mesmo modo que em matemática é essencial efetuarmos operações aritméticas com valores numéricos,
  358. o mesmo ocorre com o computador, na verdade efetuar contas de modo
  359. rápido e "sem erro" foi a grande motivação para se construir os computadores.
  360. </p>
  361. <p>
  362. Neste, os agrupamentos de valores, variáveis e operadores aritméticos recebem o nome de <i>expressão aritmética</i>.
  363. De modo geral, podemos conceituar uma <i>expressão aritmética</i> <b>EA</b> como:
  364. <ol>
  365. <li>EA := K: uma constante numérica é uma <i>expressão aritmética</i></li>
  366. <li>EA := EA + EA | EA - EA | EA * EA | EA / EA: uma <i>expressão aritmética</i> seguida de um <b>operador binário</b>
  367. (com 2 itens) e seguida por outra <i>expressão aritmética</i> é uma <i>expressão aritmética</i></li>
  368. </ol>
  369. Os <b>operadores artiméticos binários</b>, em <i>C</i>, <i>Python</i> e <i>iVProg</i> são:
  370. </p>
  371. <center><table class="tg">
  372. <tr><th class="tab_titulo">Operação</td><th class="tab_titulo">Operador <th class="tab_titulo">Exemplo</td></tr>
  373. <tr class="tg-c3ow"><td>soma </td><td> + <td> 2 + 4 </td></tr>
  374. <tr class="tg-c3ow"><td>subtração </td><td> - <td> n1 + 1 </td></tr>
  375. <tr class="tg-c3ow"><td>multiplicação</td><td > * <td> 3 * n2 </td></tr>
  376. <tr class="tg-c3ow"><td>divisão </td><td> / <td> n1 / n2 </td></tr>
  377. </table></center>
  378. <p>
  379. Note que foi usado espaço em branco entre os operando e operadores, mas isso não é obrigatório.
  380. </p>
  381. <a name="contexto">
  382. <span style="color: #0055AA;font-size:1.1em">O resultado de uma expressão aritmética depende do contexto</span></a>
  383. <p>
  384. É importante observar que dependendo do contexto o resultado de uma expressão é um ou outro, quer dizer,
  385. se os valores envolvidos forem todos eles inteiros, o resultado será inteiro, entretanto havendo um valor
  386. real, a resposta final será real.
  387. </p>
  388. <p>
  389. A importância disso fica clara ao examinar dois exemplos simples: <i>3 / 2 * 2</i> e <i>3.0 / 2 * 2</i>.
  390. Em várias linguagens de programação a primeira expressão resulta o valor <i>2</i>, enquanto a segunda <i>3.0</i>.
  391. A razão é que no primeiro caso todos valores são inteiros, então o cômputo é realizado com aritmética de precisão inteira,
  392. ou seja, ao realizar o primeiro cômputo <i>3/2</i>, o resultado é <i>1</i> (e não <i>1.5</i> como no segundo caso), daí
  393. o segundo operador é feito com os valores <i>1 * 2</i> resultando o valor <i>2</i>.
  394. </p>
  395. <div id="codigos3">
  396. <div class="tab">
  397. <button class="tablinks" onclick="openTab(event, 'C_3', 'codigos3')">C</button>
  398. <button class="tablinks" onclick="openTab(event, 'Python_3', 'codigos3')">Python</button>
  399. <button class="tablinks" onclick="openTab(event, 'iVProg_3', 'codigos3')" id="defaultOpen_3">iVProg</button>
  400. </div>
  401. <!-- Tab content -->
  402. <div id="C_3" class="tabcontent">
  403. <img src="img/t1/cod3_c.png" width="600"/>
  404. </div>
  405. <div id="Python_3" class="tabcontent">
  406. <img src="img/t1/cod3_py.png" width="600"/>
  407. </div>
  408. <div id="iVProg_3" class="tabcontent" >
  409. <img src="img/t1/cod3_iVProg.png" width="600"/>
  410. </div>
  411. </div>
  412. <p>
  413. Leônidas de Oliveira Brandão<br/>
  414. http://line.ime.usp.br</p>
  415. <p class="rodape">
  416. <b>Alterações</b>:<br/>
  417. 2019/07/12: mudanças feitas a partir de observações dos alunos e adição do iVProg;
  418. 2019/06/05: as seções inicial ("Ideia de variável") e final ("O resultado de uma expressão aritmética depende do contexto") foram estendidas;<br/>
  419. 2019/06/04: adicionada nova seção (inicial) "Ideia de variável";<br/>
  420. 2017/04/14: adicionados novos itens (como explicação adicional sobre expressões aritméticas).
  421. </p>
  422. </div><!-- id='page-wrapper' -->
  423. <br/><footer id='page-footer' class='bg-inverse'> <div class='container'> <div id='course-footer'></div> <p class='helplink'>Material didático - Prof. Leônidas de Oliveira Brandão</p> </div></footer>
  424. </body>
  425. <script> document.getElementById("defaultOpen").click();
  426. document.getElementById("defaultOpen_2").click();
  427. document.getElementById("defaultOpen_3").click();
  428. </script>
  429. </html>