julia sawaki tanaka flávio andrade faria · 1. classificação dos computadores os computadores...

66
Julia Sawaki Tanaka Flávio Andrade Faria

Upload: others

Post on 13-Nov-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Julia Sawaki TanakaFlávio Andrade Faria

Page 2: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Sumário

1. CLASSIFICAÇÃO DOS COMPUTADORES ................................................................................................................. 1

2. SISTEMAS DE COMPUTAÇÃO ................................................................................................................................ 2

2.1. SOFTWARE - CONCEITOS BÁSICOS ................................................................................................................................. 2 2.2. HARDWARE - CONCEITOS BÁSICOS ................................................................................................................................ 5

3. NOÇÕES BÁSICAS DE INTERNET ............................................................................................................................ 7

4. NÚMEROS BINÁRIOS ........................................................................................................................................... 8

5. ALGORITMOS ..................................................................................................................................................... 10

5.1. ALGORITMO NA SOLUÇÃO DE UM PROBLEMA USANDO O COMPUTADOR .............................................................................. 11 5.2. PASSOS PARA A CONSTRUÇÃO DE UM ALGORITMO .......................................................................................................... 11 5.3. ALGORITMO, PROGRAMAÇÃO E RACIOCÍNIO LÓGICO ........................................................................................................ 12

6. TIPOS DE DADOS ................................................................................................................................................ 13

6.1. DADOS NUMÉRICOS ................................................................................................................................................. 13 6.2. DADOS LITERAIS ....................................................................................................................................................... 13 6.3. DADOS LÓGICOS ...................................................................................................................................................... 13

7. CONSTANTES E VARIÁVEIS ................................................................................................................................. 14

8. EXPRESSÕES ...................................................................................................................................................... 14

8.1. EXPRESSÕES ARITMÉTICAS ......................................................................................................................................... 14 8.2. EXPRESSÕES RELACIONAIS .......................................................................................................................................... 15 8.3. EXPRESSÕES LÓGICAS ................................................................................................................................................ 15

9. FLUXOGRAMAS .................................................................................................................................................. 16

9.1. COMANDO DE ATRIBUIÇÃO ....................................................................................................................................... 17 9.2. COMANDO DE ENTRADA ............................................................................................................................................ 17 9.3. COMANDO DE SAÍDA ................................................................................................................................................ 18 9.4. ESTRUTURA SEQUENCIAL ........................................................................................................................................... 18 9.5. ESTRUTURAS CONDICIONAIS ....................................................................................................................................... 19

9.5.1. Estrutura Condicional Simples ........................................................................................................................ 19 9.5.2. Estrutura Condicional Composta .................................................................................................................... 19

9.6. ESTRUTURAS DE REPETIÇÃO ....................................................................................................................................... 20 9.6.1. Estrutura de Repetiço Ennuanto-faia .......................................................................................................... 20 9.6.2. Estrutura de Repetiço Repita-até ................................................................................................................. 21

10. PROGRAMAÇÃO .............................................................................................................................................. 22

11. LINGUAGEM C .................................................................................................................................................. 23

11.1. COMPILADOR ........................................................................................................................................................ 23 11.2. DEV-C++ .............................................................................................................................................................. 24 11.3. ESTRUTURA BÁSICA DE UM PROGRAMA EM C .............................................................................................................. 24 11.4. FUNÇÃO MAIN() ..................................................................................................................................................... 24 11.5. MEU PRIMEIRO PROGRAMA EM C ............................................................................................................................. 25 11.6. BIBLIOTECAS .......................................................................................................................................................... 25 11.7. DIRETIVA #INCLUDE ................................................................................................................................................ 25 11.8. FUNÇÃO PRINTF() ................................................................................................................................................... 26 11.9. FUNÇÃO SCANF() ................................................................................................................................................... 27 11.10. FUNÇÃO SYSTEM() ................................................................................................................................................ 27 11.11. CONSTANTES ....................................................................................................................................................... 28 11.12. VARIÁVEIS ........................................................................................................................................................... 28

11.12.1. Tipos de Variáveis ....................................................................................................................................... 28

Instituto de Química – UNESP – Araraquara

i

Page 3: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.12.2. Declaraiço de Variáveis ............................................................................................................................. 28 11.12.3. Nomes de Variáveis .................................................................................................................................... 29

11.13. PALAVRAS-CHAVE ................................................................................................................................................. 29 11.14. OPERADORES ....................................................................................................................................................... 29

11.14.1. Operador de atribuiiço .............................................................................................................................. 29 11.14.2. Operadores aritmétcos .............................................................................................................................. 30 11.14.3. Operadores de incremento e decremento .................................................................................................. 30 11.14.4. Operadores aritmétcos de atribuiiço ........................................................................................................ 31 11.14.5. Operadores relacionais ............................................................................................................................... 31 11.14.6. Operadores lógicos ..................................................................................................................................... 32 11.14.7. Operador condicional ternário (?:) ............................................................................................................. 32 11.14.8. Precedência dos Operadores ...................................................................................................................... 32

11.15. BIBLIOTECA MATH.H ............................................................................................................................................. 33 11.16. BIBLIOTECA LOCALE.H ............................................................................................................................................ 33 11.17. COMENTÁRIOS ..................................................................................................................................................... 33 11.18. ESTRUTURA SEQUENCIAL ....................................................................................................................................... 34 11.19. ESTRUTURAS CONDICIONAIS ................................................................................................................................... 34

11.19.1. Estrutura Condicional Simples .................................................................................................................... 34 11.19.2. Estrutura Condicional Composta ................................................................................................................ 35 11.19.3. Estrutura Condicional com múltplas aiões ............................................................................................... 36

11.20. ESTRUTURAS DE REPETIÇÃO ................................................................................................................................... 38 11.20.1. Estrutura de Repetiço do { } while ............................................................................................................ 38 Observaiço: O comando system(“cls”) limpa a tela. ............................................................................................... 39 11.20.2. Estrutura de Repetiço while ...................................................................................................................... 39 11.20.3. Estrutura de Repetiço for .......................................................................................................................... 40

11.21. DIRETIVA #DEFINE ................................................................................................................................................ 43 11.22. STRINGS ............................................................................................................................................................. 43

11.22.1. Declaraiço de strings ................................................................................................................................. 44 11.22.2. Funiço scanf() para manipulaiço de strings ............................................................................................. 44 11.22.3. Outras funiões para manipulaiço de strings ............................................................................................. 44

11.22.3.1. gets() .................................................................................................................................................................... 45 11.22.3.2. puts() .................................................................................................................................................................... 45 11.22.3.3. strcpy() ................................................................................................................................................................. 45 11.22.3.4. strcmp() ................................................................................................................................................................ 46 11.22.3.5. strlen() .................................................................................................................................................................. 46

11.23. FUNÇÕES ............................................................................................................................................................ 46 11.24. CRIANDO BIBLIOTECAS .......................................................................................................................................... 48 11.25. VETORES ............................................................................................................................................................ 48 11.26. MATRIZES ........................................................................................................................................................... 48

11.26.1. Atribuindo valores a uma matriz ................................................................................................................ 49 11.27. DEBUGGER .......................................................................................................................................................... 51

12. EXERCÍCIOS ...................................................................................................................................................... 52

13. BIBLIOGRAFIA .................................................................................................................................................. 63

Instituto de Química – UNESP – Araraquara

ii

Page 4: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

1. Classificação dos Computadores

Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categoriasmas estes mudam com o tempo e com a evolução tecnológica.

Computadores de mesa ou desktop: são computadores pessoais (PC - Personal Computer) que nãoforam projetados para serem portáteis. Geralmente, essa classe de computadores é consttuuda porum monitor, uma Unidade Central de Processamento (CPU) que fca armazenada dentro de umgabinete do tpo mini-torre ou horizontal, um teclado e um mouse. Como esse tpo deequipamento precisa de muito espaço para utlização, a sua demanda tem sido cada vez menor. Para contornar essa difculdade foi desenvolvido um modelo desktop chamado All-In-One (AIO). OsAIO possuem a CPU integrada ao monitor, reduzindo o espaço necessário para a acomodação doequipamento. Apesar da inovação, muitas empresas tem optado por usar modelos portáteis, quesão mais compactos, consomem menos energia, são fáceis de se transportar e possuem sistemapróprio de proteção para o caso de quedas de energia ou surtos elétricos.

Computadores portáteis:

Notebooks (Laptops) e Ultrabooks. Os termos notebook e laptop são utlizadosindiferentemente para se referir aos computadores portáteis tradicionais. O termo Ultrabookfoi criado pela INTEL em 2011 para notebooks que fossem leves, fnos, com grande autonomiade bateria e poder de processamento equivalente a um notebook tradicional. Atualmente,esse termo é usado para referenciar notebooks que possuem no máximo 2 cm de altura (ovalor é medido com o notebook fechado). Devido as limitações fsicas, ultrabooks possuemrestrições para a disponibilidade de recursos comuns em notebooks. É raro encontrar umultrabook que possua mais de 2 portas USB, entrada ethernet para rede, entrada VGA paramonitor externo e leitor/gravador de DVD/Blu-ray.

O Tablet não é um computador completo, mas é um dispositvo para acesso à Internet, leiturade livros, revistas e jornais, visualização de fotos e vudeos, agenda, calendário e jogos.

Workstations ou Estações de Trabalho: são computadores desktops mais caros e de altodesempenho, otmizados para aplicações profssionais. As estações de trabalho possuem telas dealta resolução, circuitos de processamento mais rápido e mais poderoso e grande capacidade dearmazenamento. São geralmente utlizados para manipular e exibir dados complexos, tais comoCAD (Computer Aided Design) 2D e 3D, animação computadorizada, geoprocessamento,modelagem 3D, desenvolvimento de games, etc.

Mainframes ou Servidores Corporatvos: são computadores de grande porte, de alto custo, comelevada velocidade e capacidade de processamento e armazenamento, destnados aoprocessamento de grande volume de informações. Os mainframes são caracterizados por umambiente multusuário, no qual várias pessoas utlizam o mesmo computador, ao mesmo tempo,através dos terminais. No inucio, os mainframes eram grandes computadores que podiam ocuparaté um andar inteiro, mas com o passar do tempo seu tamanho foi reduzido, sua capacidadeaumentada e o termo mainframe foi sendo substtuudo pela expressão servidor corporatvo. Essescomputadores são utlizados em ambientes comerciais e em grandes organizações como bancos,companhias aéreas, seguradoras e administradoras de cartões de crédito.

Supercomputadores: são os computadores mais poderosos, com altssimo custo e capacidadesuperior aos mainframes. Geralmente são utlizados em grandes centros de pesquisa para cálculossofstcados como previsão do tempo, simulação de testes nucleares, controle de voos espaciais,etc.

Instituto de Química – UNESP – Araraquara

1

Page 5: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

2. Sistemas de Computação

A computação nasceu da ideia de auxiliar o homem nos trabalhos rotneiros e repettvos, em geralde cálculo e gerenciamento. Porém, com o crescente desenvolvimento tecnológico, o uso de computadorestornou-se cada vez mais difundido em todas as áreas e hoje o computador consiste em uma ferramenta detrabalho indispensável no dia a dia das empresas, das indústrias, das universidades, e até mesmo nasresidências.

A utlização do computador para a resolução de problemas e execução de tarefas de formaautomátca traz vantagens como: rapidez de execução e confabilidade nos resultados obtdos, pois muitosproblemas exigem cálculos sofstcados, assim como a manipulação de grande volume de dados. Noprimeiro caso, o risco de erro é grande e no segundo, o trabalho torna-se árduo e entediante. Ocomputador elimina esses inconvenientes, pois é caracterizado pela rapidez, precisão e grande capacidadede armazenamento de informações (textos, dados, imagens, voz, etc.).

O computador é capaz de realizar cálculos e tomar decisões lógicas em velocidades bilhões devezes mais rápidas que os seres humanos. Porém, o equipamento por si só não é capaz de realizar umasimples tarefa. Para que ele realize uma determinada tarefa, é preciso que alguém descreva com detalhestodos os passos que o equipamento deve seguir para a execução desta tarefa. Esta descrição é conhecidacomo programa (software) e consttui uma importante parte do sistema de computação. O equipamentoem si, isto é, o computador, faz parte do hardware. Portanto, o hardware e o software, juntamente com ousuário, faz parte essencial de um Sistema de Computação.

2.1. Software - Conceitos Básicos

Software ou Programa é a parte lógica que dota o equipamento fsico (hardware) com acapacidade de realizar algum trabalho. O programa nada mais é do que uma sequência de instruçõesescritas em uma linguagem de programação, informando ao hardware o que fazer, e em que ordem.

Programas Aplicatvos consttuem uma classe de programas que realizam tarefas especufcas. Os 3programas aplicatvos mais populares são: Processadores de Textos, Planilhas Eletrônicas e Sistemas deGerenciamento de Banco de Dados. Outros exemplos de programas aplicatvos são: folha de pagamento,controle de estoques, contabilidade, controle de clientes de um consultório médico, controle de rebanhos,etc.

Processador de Texto é um programa aplicatvo projetado especialmente para facilitar a criação,edição, formatação e impressão de textos. Ele permite fazer correção automátca, mudar o tamanho e/oucor da letra, formatar em várias colunas, inserir um desenho ou gráfco, etc. Exemplos de processadores detextos: Microsof Word, LibreOfce Writer, Corel WordPerfect, etc.

Planilha Eletrônica é uma ferramenta para planejamento e análise numérica que permite utlizar atela do computador como um papel quadriculado sobre o qual anotamos em linhas e colunas todos osdados. Este tpo de programa permite defnir e embutr fórmulas escondidas que realizam cálculos sobre osdados visuveis, permite também a correção de valores, e o aplicatvo rapidamente recalcula os resultadosafetados por essa correção. São usadas para desenvolver orçamentos de empresas, para organizar econtrolar orçamentos doméstcos, para controlar o movimento de uma conta bancária, ou ainda efetuarprevisões de vendas. Exemplos: Microsof Excel, LibreOfce Calc, Corel WordPerfect Ofce, etc.

Sistema de Gerenciamento de Banco de Dados (SGBD) é um programa aplicatvo capaz dearmazenar e recuperar informações em Banco de Dados.

Banco de Dados, por sua vez, é um conjunto de informações estruturadas e armazenadas de formaorganizada e integrada.

Instituto de Química – UNESP – Araraquara

2

Page 6: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Um SGBD possui recursos para inclusão, eliminação, recuperação e modifcação de dados, além depermitr ordenar os dados, produzir relatórios, etc. Este tpo de programa substtui o antgo fchário.Exemplos: Microsof Access, LibreOfce Base, FireBird, MySQL, Sybase, Oracle, etc.

Uma lista de telefones dos moradores de uma determinada cidade consttui um Banco de Dados. Ocatálogo telefônico tem uma estrutura pré-defnida (nome do assinante, endereço e telefone) e uma ordemde classifcação (por assinante ou por endereço). Para que um Banco de Dados seja eletrônico, basta quetodas as informações sejam processadas por um computador.

Sistema Operacional é o programa mais importante, que gerencia os recursos do computador. Osistema operacional, no nosso caso o Windows, gerencia o acesso dos programas aplicatvos ao teclado, aomonitor (vudeo), à impressora, assim como aos discos e outros dispositvos de leitura e gravação. O sistemaoperacional fca o tempo todo atvo, prestando serviços aos programas aplicatvos que estão sendoexecutados. Cada linha de computadores tem o seu próprio sistema operacional. Exemplos de sistemasoperacionais: Windows, Linux, Mac OS, Unix, Solaris, etc.

Linguagem de Programação é um conjunto de regras que permitem a construção de sentenças quedescrevem de forma precisa as ações que desejamos que sejam executadas pelo computador.

Linguagem de Máquina é um conjunto de instruções capazes de atvar diretamente os dispositvoseletrônicos do computador. A linguagem de máquina é consttuuda somente por 0 e 1 (bits), o que difcultaa leitura e a compreensão pelas pessoas.

Exemplo de uma instrução em linguagem de máquina: 0 1 1 0 1 0 1 0 1 1 0 1

BIT (BInary DigiT = Dugito Binário) 0 ou 1. Bit é a menor unidade de informação, e apresenta doisestados identfcáveis (sim ou não, verdadeiro ou falso, chave ligada ou desligada, uma corrente passandoou não por um circuito elétrico, um item magnetzado ou não, etc.) que são associados aos números 1 e 0,respectvamente.

Byte é um conjunto de bits. A maioria dos fabricantes de computadores utlizam bytes consttuudospor 8 bits. Para o computador armazenar um caractere, que é uma letra, um algarismo, ou sumbolo (ex: M,a, 4, 7, -, ?, *) ocupa um byte, ou seja, uma sequência de 8 bits ligados (1) ou desligados (0).

O byte é a unidade de medida da quantdade de informação digital. Por exemplo: o disco rugido éde 1 Tera byte (TB), o pen drive é de 8 Giga bytes (GB), etc.

Os prefxos (kilo, mega, giga, tera, etc.) são coloquialmente utlizados na computação paraexpressar grandes quantdades de bytes. Como a arquitetura do computador se baseia em númerosbinários, em computação, esses prefxos geralmente são utlizados para indicar potências de dois, o quenão é correto, pois no Sistema Internacional de Unidades (SI) esses prefxos representam potências de dez.

Prefixos em uso na computação coloquial

Nome Símbolo Potência de dez (SI) Potência de dois Diferença

quilo K 103 = 1.000 210 = 1.024 2,4%

mega M 106 = 1.000.000 220 = 1.048.576 4,9%

giga G 109 = 1.000.000.000 230 = 1.073.741.824 7,4%

tera T 1012 = 1.000.000.000.000 240 = 1.099.511.627.776 10,0%

peta P 1015 = 1.000.000.000.000.000 250 = 1.125.899.906.842.624 12,5%

Em 1998 foram introduzidos os prefxos binários.

Instituto de Química – UNESP – Araraquara

3

Page 7: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Prefixos binários segundo normas internacionais

Nome Símbolo Potência de dois

kibi Ki 210 = 1.024

mebi Mi 220 = 1.048.576

gibi Gi 230 = 1.073.741.824

tebi Ti 240 = 1.099.511.627.776

pebi Pi 250 = 1.125.899.906.842.624

Padrões de CodificaçãoNo computador a representação interna de informações é feita através de um padrão de

codifcação onde, por convenção, certos conjuntos de bits representam certos caracteres. No padrão decodifcação ASCII estendido, de 8 bits, a letra A é representada por 1000001. Unicode é outro padrão decodifcação de 16 bits.

Linguagem de Montagem é uma linguagem de baixo nuvel que situa apenas um nuvel de abstraçãoacima da linguagem de máquina e usa mnemônicos (sumbolos fáceis de memorizar) para expressar asinstruções. Um programa especial chamado montador deve traduzir as instruções (simbólicas) dalinguagem de montagem para a linguagem de máquina. Exemplo: Assembler é o montador da linguagemAssembly.

Exemplo de instruções em linguagem de montagem:

ADD C, 1 MOV A, B CMP A, E JMP fm

Linguagem de Alto Nível é uma linguagem que utliza notações matemátcas e grupos de palavras(em inglês) para representar as instruções de máquina, tornando o processo de programação mais próximodo entendimento humano.

Exemplos de linguagens: Fortran, Pascal, C++, Visual Basic, Delphi, Java, PHP, Python, etc.

Exemplos de trechos de programa:

FORTRAN10 if (nota .LT. 5) goto 30

write(2, 20)20 format('Aprovado') goto 5030 write(2, 40)40 format('Reprovado')50 stop end

BASIC30 if nota < 5 then print "Reprovado" else print "Aprovado"

PASCAL if nota < 5 then write('Reprovado') else write('Aprovado');

C if (nota < 5) print((Reprovado”); else print((Aprovado”);

Instituto de Química – UNESP – Araraquara

4

Page 8: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Memória RAM

Unidade Lógica e Aritmétca

Unidade de Controle

UCP

Dispositvode Entrada

Dispositvode Sauda

Introdução à Ciência da Computação

Compilador: traduz o programa fonte (ou código fonte), escrito na linguagem de alto nuvel, comoPascal ou C, para a linguagem de máquina, gerando o programa executável que o computador consegueentender e processar diretamente.

Interpretador: interpreta cada comando do programa fonte e executa as instruções que a elecorrespondem, sem gerar um programa executável. Em geral os programas interpretados são mais lentosdo que os compilados, pois os compiladores fazem a tradução uma única vez, e a partr dau executamdiretamente o programa traduzido, enquanto que o interpretador traduz o programa fonte todas as vezesque executa.

2.2. Hardware - Conceitos Básicos

Hardware é a parte fsica de um Sistema de Computação, ou seja, todos os elementos materiaisque o compõem (a estrutura, os circuitos eletrônicos, os dispositvos mecânicos, elétricos, magnétcos, etc).

Os componentes básicos de um computador são:

Dispositvo de Entrada e Sauda (ou Periféricos) Memória Unidade Central de Processamento (UCP)

Dispositvo de Entrada serve para receber os dados e programas preparados pelo ser humano etransformá-los em sinais eletromagnétcos (bits) manipuláveis pelo computador. Exemplo: teclado, mouse,scanner, drive de DVD, etc.

Dispositvo de Saída serve para transformar os dados processados pelo computador em formascompreensuveis pelo ser humano e exibi-los. Exemplo: impressora, monitor ou vudeo, ploter, etc.

Memória é o dispositvo que armazena informações. Existem dois tpos de memória: memóriaprimária e secundária.

Memória Primária é a memória sem a qual o computador não funciona. A sua principal função éarmazenar informações necessárias para o processador, como por exemplo, os programas em execução.Fazem parte da memória primária, as memórias RAM, ROM e Cache.

RAM (Random Access Memory) é a memória de trabalho do computador. Ela pode ser lida egravada pela Unidade Central de Processamento (UCP) a qualquer instante. É onde fcamarmazenados os dados, os resultados intermediários e os programas que estão sendo executadospela UCP. Quando um programa que estava sendo usado é fechado, a parte da memória RAM, que

Instituto de Química – UNESP – Araraquara

5

Page 9: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

estava sendo utlizada, é liberada para armazenar novos dados e programas. As informações quesão introduzidas no computador através do teclado, da leitura do disco rugido, CD/DVD ou pen drivesão armazenadas na memória RAM. Como a memória RAM é volátl as informações nelaarmazenadas desaparecem com o desligamento do computador ou com a queda de energiaelétrica.

ROM (Ready Only Memory) é a memória exclusivamente de leitura, onde as informações sãogravadas uma única vez, geralmente pelo fabricante e nunca mais alteradas. A memória ROM nãoé volátl, e é uma memória permanente, o seu conteúdo não é perdido mesmo com o desligamentodo computador. Nos microcomputadores, existe um programa muito importante chamado BIOS(Basic Input-Output System - Sistema Básico de Entrada e Sauda) que tem várias funções, entre asquais, a de realizar a "partda" do computador . Quando ligamos o computador, o BIOS realiza acontagem de memória, faz uma rápida checagem do funcionamento do computador e carrega oSistema Operacional do disco rugido (memória secundária) para a memória RAM. O BIOS estágravado em uma memória ROM, pois esse programa não deve ser alterado e deve ser executadotodas as vezes que o computador é ligado. Existem outros tpos de memória ROM como PROM(Programmable ROM), EPROM (Erasable Programmable ROM), EEPROM (Electrically ErasableProgrammable ROM), etc.

Cache é também um tpo de memória primária, volátl, de grande velocidade, mais rápida do quea memória RAM. A memória cache armazena e recupera os dados usados mais frequentementepelo processador de modo que sua recuperação possa ser bem rápida. É uma memória mais carado que a memória RAM.

Memória Secundária é um meio de armazenamento a longo prazo no qual o computador armazenadados que poderão ser posteriormente utlizados. Este tpo de memória não é estritamente necessária paraa operação do computador, o acesso a este tpo de memória é mais lento em comparação com o acesso àmemória primária, e o custo por unidade de memória secundária é muito menor que o custo por unidadede memória primária.

As memórias secundárias mais comuns, utlizadas pelos computadores são: disco rugido , SSD, pendrive, cartão de memória micro SD, CD, DVD, Blu-ray, etc.

Disco Rígido ou HD (Hard Disk) é um meio de armazenamento secundário de informações queemprega vários discos não fexuveis revestdos com material magnétco e alojados juntamente comos cabeçotes de leitura/gravação, em uma caixa hermetcamente fechada. Atualmente acapacidade de um disco rugido é especifcado em termos de centenas de Gbytes ou alguns Tbytes.

SSD (Solid State Drive) ou Unidade de Estado Sólido é um meio de armazenamento secundáriode informações, mas não é um disco. É consttuudo de circuitos eletrônicos do mesmo tpo damemória fash utlizada nos pen drives, mas com capacidade maior e funcionam exatamente comose fossem discos rugidos, porém em uma velocidade bem maior. A maioria dos SSDscomercializados atualmente é de 64 GB a 480 GB, pois o SSD é bem mais caro do que o HD.

Pen drive é uma memória portátl, consttuuda por memória fash, que funciona em equipamentoscom porta USB. O pen drive surgiu em 2000 com o objetvo de substtuir os disquetes. Existem pendrives de 1 GB, 2 GB, 256 GB e até 1 TB. O modelo de 1 GB armazena o equivalente a 728 disquetes.

cartão de memória micro SD (Secure Digital) é um cartão de memória fash removuvel, utlizadoinicialmente em telefones celulares devido a sua medida reduzida (1,5cm x 1,1cm x 1 mm). Atravésde um adaptador o micro SD pode ser utlizado em qualquer dispositvo que suporta o cartão SD.

CD (Compact-Disk): uma tecnologia de armazenamento ótco que emprega disco a laser e podearmazenar até 700 Mbytes de informações digitais. Existem os discos CD-R (CD-Recordable) que

Instituto de Química – UNESP – Araraquara

6

Page 10: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

podem ser escritos só uma vez e os CD-RW (CD-ReWritable) que podem ser gravados, apagados ereutlizados.

DVD (Digital Video Disc e posteriormente Digital Versatle Disc): uma geração de disco ótco quearmazena 4.7 Gbytes de informações em um disco de uma face e uma única camada e 17 Gbytesem um disco de 2 faces e 2 camadas. Existem também os discos DVD-R (Recordable) que só gravamuma vez e o DVD-RW (Rewritable) que é a versão regravável.

Blu-ray (BD): é a nova geração de disco ótco para vudeos de alta defnição, que utliza raio laserde cor azul com comprimento de onda menor do que o do DVD e CD, mas apresenta o mesmotamanho de um DVD e tem a capacidade de armazenar de 25 a 100 Gbytes de informações.

Unidade Central de Processamento (UCP) ou Central Processing Unit (CPU) é a principal unidadede controle e processamento de um computador, e é consttuuda de circuitos eletrônicos que interpretam eexecutam instruções de programas e comunicam com os dispositvos de armazenamento e de entrada esauda. A UCP é composta pela Unidade Lógica e Aritmétca (ULA) e pela Unidade de Controle (UC).

Unidade Lógica e Aritmétca (ULA): realiza cálculos através de operações aritmétcas (adição,subtração,...) e operações relacionais (comparação de valores).

Unidade de Controle (UC): gerencia as operações do computador comunicando com a UnidadeLógica e Aritmétca, com a memória e com os dispositvos de entrada e sauda. Controla asinstruções dos programas que estão na memória, faz com que o dispositvo de entrada leia osdados, transfra os valores adequados da memória para a ULA, armazena e recupera dados eresultados intermediários armazenados na memória e passa os resultados para o dispositvo desauda.

3. Noções Básicas de Internet

Redes de computadores são grupos de computadores e dispositvos computacionais comoimpressoras, scanners, etc., conectados por algum recurso de comunicação. Uma rede pode envolverconexões permanentes tais como cabos ou conexões temporárias através de linhas telefônicas ou outroselos de comunicação.

Internet é a rede mundial de computadores que é formada por várias redes de computadoresinterligadas. A Internet surgiu de um projeto militar nos Estados Unidos na década de 60, evoluiu para umarede acadêmica na década de 70 e hoje consttui o maior meio de comunicação do mundo.

A Internet é formada por redes locais (LANs - Local Area Network), redes de abrangência urbana(MANs - Metropolitan Area Network) e redes remotas (WANs - Wide Area Network) que abrangem estados,pauses e contnentes, conectando computadores do mundo inteiro. Essas redes são conectadas porrecursos que variam de linhas telefônicas de discagem comum, linhas privadas dedicadas de altavelocidade, ligações por microondas, ligações por fbras ótcas e satélites.

Na década de 80 e no inucio da década de 90 a rede foi aperfeiçoada e começou a surgir serviçosque caracterizam a Internet atual. O principal desses serviços é World Wide Web (WWW) lançada em 1991,que viabilizou a transmissão de imagens, sons e vudeos pela Internet. Foi o WWW que popularizou aInternet.

A Intranet é uma rede interna de informações de uma organização (empresa, universidade, etc.)baseada na tecnologia da Internet. Serve para compartlhar informações apenas entre os usuáriosregistrados, sem permitr o acesso de pessoas externas. A Intranet é uma evolução da Internet, em que sebusca, dentro das organizações, formas de acesso às informações, usando os mecanismos de navegaçãoque são os navegadores. A operação é idêntca, e mesmo as interfaces são as mesmas daquelas vistas naInternet. Através da Intranet, os usuários internos da organização compartlham informações tais como:

Instituto de Química – UNESP – Araraquara

7

Page 11: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

formulários, especifcações de produtos, catálogos de produtos, polutcas internas de administração e derecursos humanos, cadastro de clientes, etc.

Rede Local (LAN - Local Area Network) é uma estrutura que conecta vários computadores e outrosdispositvos (como impressoras) dentro de uma área geográfca limitada. Os usuários de rede local podemtrocar informações, compartlhar periféricos e utlizar recursos de servidor de arquivos. Normalmente aárea geográfca de uma rede local se restringe a uma sala, um departamento, um andar ou um prédio,dentro de um raio de 100 m.

Servidor: nas redes locais o servidor é um computador que fornece algum tpo de serviço paraoutros computadores conectados a ele via rede. Um exemplo é o servidor de arquivos que tem um discogrande e atende pedidos de leitura e gravação naquele disco, outro exemplo é o servidor de impressão quecontrola as tarefas de impressão enviadas para a impressora conectada na rede.

Alguns dos serviços básicos da Internet são: correio eletrônico (e-mail), WWW (World Wide Web),acesso remoto ao computador, transferência de arquivos, lista de correio eletrônico, grupos de notcias,comunicação interatva, etc.

Correio Eletrônico (e-mail) permite um usuário escrever e enviar uma mensagem de texto paraoutro usuário ou para um grupo deles, através da internet.

WWW (World Wide Web ou simplesmente Web) é um serviço no formato de hipertextos quepermite ao usuário buscar informações nos diversos computadores da Internet e visualizá-las através deseções gráfcas, formadas por imagens, sons e animações. Hipertexto é um documento que permite acessonão sequencial, com diferentes nuveis de detalhamento e com páginas inter-relacionadas. O leitor podepercorrer o documento na sequência desejada, saltando de uma página para outra em busca deinformações relacionadas a uma palavra, frase (em destaque) ou ucone.

Acesso Remoto ao Computador é uma ferramenta interatva que permite acessar e executarprogramas e aplicações disponuveis em um computador remoto, conectado à internet.

Transferência de Arquivos (fp, download e upload) permite transferir arquivos entrecomputadores interligados pela rede.

Lista de Correio Eletrônico ou Lista de Discussão é uma forma de contatar um grupo de pessoasatravés do e-mail. As pessoas que partcipam da lista podem enviar mensagens para o endereço da lista, oqual reenvia então a mensgem para cada uma das pessoas (e-mail) inscritas na lista.

Comunicação Interatva é a comunicação instantânea entre duas ou mais pessoas, independenteda localização geográfca dessas pessoas.

4. Números Binários

O sistema binário (ou sistema de base 2), é formado por dois algarismos: 0 e 1, enquanto que osistema decimal (ou sistema de base 10), normalmente utlizado, é formado por 10 algarismos: 0, 1, 2, 3, 4,5, 6, 7, 8 e 9.

Os números binários (0 e 1) foram adotados nos computadores por motvos de precisão eeconomia, pois construir um circuito eletrônico capaz de detectar a diferença entre dois estados (presençaou ausência de corrente elétrica, por exemplo) é muito mais fácil e barato do que construir um circuito quedetecte a diferença entre dez estados diferentes.

Um dugito binário é chamado de BIT, proveniente de BInary digiT, como mencionadoanteriormente.

Instituto de Química – UNESP – Araraquara

8

Page 12: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

1

0

4

8

13

1 1 0 1

X x x x

23 22 21 20

0

2

4

8

0

32

46

1 0 1 1 1 0

x x x x x x

25 24 23 22 21 20

Introdução à Ciência da Computação

Transformação de números decimais em números binários

2

6

13

1 2

30 2

11 => 1 1 0 1

46 2

0 23 2

1 11 2

1 5 2

1 2 2

0 1 => 1 0 1 1 1 0

Transformação de números binários em números decimais

Números Decimais Números Binários

00 0 0 0 001 0 0 0 102 0 0 1 003 0 0 1 1 04 0 1 0 0 05 0 1 0 1 06 0 1 1 0 07 0 1 1 1 08 1 0 0 0 09 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 . . . . . .

Instituto de Química – UNESP – Araraquara

9

Page 13: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

5. Algoritmos

Algoritmo é a descrição, de forma lógica, das ações a serem executadas no cumprimento de umatarefa, ou seja, é uma sequência de passos que levam à realização de uma tarefa.

Em um algoritmo é importante salientarmos que:- cada passo deve ser uma instrução simples e sem ambiguidade que possa ser realizada;- a ordem dos passos deve ser precisamente determinada;- deve possuir um fm, isto é, um número fnito de passos.

Existem várias formas para representar um algoritmo: descrição narratva; fuxograma ou diagrama de blocos; pseudocódigo (forma genérica de escrever o algoritmo usando uma linguagem

simples, estruturada e natva a quem o escreve).

A seguir, apresentamos um algoritmo em forma de descrição narratva, para troca de uma lâmpadaqueimada.

1. Remova a lâmpada queimada.2. Coloque uma nova lâmpada.

Detalhando os passos, temos:

1.1. Coloque uma escada embaixo da lâmpada queimada.1.2. Suba a escada até alcançar a lâmpada queimada.1.3. Gire a lâmpada queimada no sentdo ant-horário até que ela se solte.

2.1. Escolha uma lâmpada nova de mesma potência da queimada.

2.2. Posicione a nova lâmpada no soquete.2.3. Gire a lâmpada no sentdo horário até que ela se frme.2.4. Desça a escada.

Ordenando e detalhando um pouco mais os passos, temos:

1. Coloque uma escada embaixo da lâmpada queimada.2. Escolha uma lâmpada nova.3. Enquanto a potência não for a mesma da queimada,

Descarte a lâmpada escolhida,Escolha outra lâmpada.

4. Enquanto não possa alcançar a lâmpada queimada,Suba mais um degrau da escada.

5. Enquanto a lâmpada não estver livre do soquete,Gire a lâmpada no sentdo ant-horário.

6. Posicione a nova lâmpada no soquete.7. Enquanto a lâmpada não estver frme no soquete,

Gire a lâmpada no sentdo horário.8. Desça da escada.

Instituto de Química – UNESP – Araraquara

10

Page 14: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Problema do mundo real

Solução na forma de algoritmo

Solução na forma de um programa de

computador

Fase de solução do problema

Fase de implementação

Introdução à Ciência da Computação

5.1. Algoritmo na solução de um problema usando o computador

No esquema acima, é possuvel visualizar onde se encaixa o algoritmo, na solução de um problemautlizando o computador.

Muitas vezes, temos um problema do mundo real que desejamos resolver através do computador,devido principalmente à rapidez de execução e confabilidade dos resultados. Neste caso, inicialmente énecessário compreender muito bem o problema e saber solucionar este problema. A próxima etapaconsiste em transcrever os passos da solução do problema em uma forma de algoritmo (descriçãonarratva, fuxograma ou pseudocódigo). A etapa seguinte é a de implementação, que consiste em passar asolução, que está em forma de algoritmo, para uma linguagem de programação, gerando assim umprograma de computador. Um programa nada mais é do que a formalização de um algoritmo em umadeterminada linguagem de programação, obedecendo às regras de sintaxe e semântca desta linguagem,de forma que o computador possa (entender” a sequência de ações que deve ser executada.

Utlizando-se um programa de computador, o problema pode ser resolvido com muita rapidez,quantas vezes forem necessárias.

5.2. Passos para a construção de um algoritmo

Para construir um algoritmo, devemos seguir os passos abaixo:

1) Compreender o problema e a sua solução de uma forma muito clara e destacar os pontos maisimportantes.

2) Defnir os dados de entrada, isto é, os dados (valores e informações) que serão fornecidos aoalgoritmo.

3) Defnir o processamento, ou seja, os cálculos que deverão ser realizados para a solução doproblema.

4) Defnir os dados de sauda, ou seja, os resultados do processamento que serão apresentados aousuário.

5) Construir o algoritmo usando uma das formas citadas acima (descrição narratva, fuxograma oupseudocódigo).

6) Testar o algoritmo através de simulações.

Instituto de Química – UNESP – Araraquara

11

Page 15: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

5.3. Algoritmo, programação e raciocínio lógico

A construção de algoritmos e a programação permitem melhorar o raciocunio lógico e acelerar odesenvolvimento cognitvo, porque a elaboração de algoritmos e programas faz com que o aluno exercite apercepção dos pontos chaves, força o aluno a fazer planejamento e pensar organizadamente.

Um dos principais objetvos desta disciplina é estmular o aluno a desenvolver o raciocunio lógicoatravés da construção de algoritmos e programas, proporcionando um amadurecimento na maneira depensar diante dos problemas reais.

Não existem fórmulas prontas na construção de algoritmos e programas. O que se adquire com otreino é o aperfeiçoamento na forma de pensar e raciocinar sobre o problema em mãos. O raciocunio lógicoé uma habilidade inerente a todas as pessoas e necessária em inúmeras atvidades que realizamos.

James Paul Holloway em seu livro (Introdução à Programação para Engenharia” diz: (... a razãomais importante para estudar e criar algoritmos não é, na verdade, sua utlidade natural, mas em vez disso,a habilidade de pensamento que a sua criação nos força a desenvolver. Para ser mais exato, o raciocuniológico necessário lhe proporcionará boas condições quando você tver problemas a analisar, mesmo seesses problemas não puderem ser resolvidos por meio de algoritmos formalmente construudos.”.

Outra passagem a destacar no livro de Holloway é: (Criar algoritmos é exatamente o que fazemos.Nós os criamos. Começamos com um problema a resolver e uma página em branco, e tentamos preenchereste vazio com um código-fonte que, quando traduzido e executado num computador, resolverá oproblema. Este processo criatvo envolve muitos princupios de projeto. Devemos entender o problema;analisar o problema e encontrar uma solução; analisar a solução para encontrar a melhor maneira deimplementá-la; trabalhar considerando as restrições; procurar simplicidade, elegância e confabilidade.Uma introdução aos algoritmos e suas implementações pode, assim, proporcionar uma rica experiênciaintrodutória no projeto em engenharia.”

Para exercitar um pouco o raciocunio lógico, tente resolver os problemas abaixo:

1) Há três suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe−se que o crime foiefetvamente cometdo por um ou por mais que um deles. Sabe−se, ainda que:

- se o cozinheiro é inocente, então a governanta é culpada;- ou o mordomo é culpado ou a governanta é culpada, mas não os dois;- o mordomo não é inocente.

Logo:

(a) a governanta e o mordomo são os culpados(b) o cozinheiro e o mordomo são os culpados(c) somente a governanta é culpada(d) somente o cozinheiro é culpado(e) somente o mordomo é culpado

2) O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a porcentagemde aumento do preço do mesmo produto para que ele volte a ter o preço original?

(a) 15%(b) 20%(c) 25%(d) 30%

Instituto de Química – UNESP – Araraquara

12

Page 16: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Dados

Numéricos Lógicos Literais

Real Inteiro Caractere Cadeia de Caracteres

Introdução à Ciência da Computação

6. Tipos de Dados

Apesar do computador, na maior parte do tempo em nosso meio, ser utlizado como processadorde textos ou para acesso à Internet, o objetvo principal de um computador é a resolução de problemas. Naresolução de problemas o computador manipula dados de vários tpos. Estes dados podem ser numéricos,literais ou lógicos. A seguir apresentamos a classifcação dos dados e a sua descrição.

6.1. Dados Numéricos

Os dados numéricos podem ser inteiros ou reais. Os números inteiros podem ser positvos ou negatvos e não possuem a parte decimal. Os números reais podem ser positvos ou negatvos e possuem a parte decimal. Os números reais

podem ser representados em forma decimal ou em forma de ponto futuante. Exemplo de números reais em forma decimal: 8.15927, 0.5, 176.48, etc. Obs. O ponto decimal deve

ser representado por ponto (.), seguindo a notação da lungua inglesa que é utlizada nas linguagens deprogramação.

Geralmente, utliza-se a representação de números reais em ponto futuante (notação cientfca)quando o número é muito grande ou muito pequeno.

Exemplo: 0.0000000000061725 617 x 10-14 (representação em ponto futuante)418639138670259 419 x 1012 (representação em ponto futuante)

Para transformar um número real que está na representação decimal para a representação emponto futuante, devemos:

defnir o número de dugitos de precisão (ou signifcatvos) e arredondar o últmo dugito, se fornecessário.

ajustar a magnitude do número como potência de 10.

6.2. Dados Literais

Os dados literais são caracteres ou cadeia de caracteres.Caractere é qualquer letra (maiúscula ou minúscula), algarismo (0, 1, 2, …, 9) ou caractere especial

(sinais de pontuação e sumbolos: %, +, @, *, ?, &, #, :, etc.). Os caracteres devem ser representados entreapóstrofos ('). Exemplos: 'y', 'n', '$', etc.

Cadeia de caracteres ou string: é uma sequência de caracteres. As cadeias de caracteres devem serrepresentadas entre aspas ((). Exemplos: (Ola”, (Bem vindo!”, (Digite um numero:”, etc.

6.3. Dados Lógicos

Os dados lógicos são também chamados de dados booleanos e podem assumir somente um dosvalores: falso ou verdadeiro. Em linguagens de programação, geralmente usa-se o número 1 pararepresentar um resultado verdadeiro e o número 0 para representar um resultado falso.

Instituto de Química – UNESP – Araraquara

13

Page 17: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

7. Constantes e Variáveis

Constantes são valores fxos que não se modifcam durante a execução do programa. As constantespodem ser numéricas (5, 128, -76), literais ("Paula", "feminino", "fm"), ou lógicas (V ou F).

Variáveis são entdades que possuem um conteúdo (valor) que pode variar no algoritmo ou noprograma. Embora elas possam assumir diferentes valores, só podem armazenar um único valor a cadainstante. Uma variável é conhecida no programa por um nome ou identfcador.

O identfcador ou o nome de uma variável deve iniciar com uma letra e pode ser seguida de letras,algarismos ou caractere de sublinhado, mas não pode conter caracteres especiais (-, *, %, ç, e letras comacentos). Exemplos de identfcadores válidos: X, Y1, saldo, nome_do_cliente, RG, Aula26, etc.

Exemplos de nomes de variáveis inválidos: 2x, A[1], M-N, 07/09, nota-do-aluno, salário, etc.As variáveis podem ser numéricas ou literais e devem ter nomes signifcatvos. Nomes signifcatvos

são nomes que lembram o seu conteúdo. Por exemplo: nota, nome, saldo, ao invés de x, y, z.

8. Expressões

Expressão em termos computacionais está ligado ao conceito de expressão ou fórmula matemátca,onde um conjunto de variáveis e constantes se relacionam por meio de operadores compondo umafórmula que, quando avaliada, resulta em um valor.

8.1. Expressões Aritméticas

Expressões Aritmétcas: são expressões em que os operadores são aritmétcos e os operandos sãoconstantes e/ou variáveis numéricas.

Operadores Aritmétcos e suas Prioridades

prioridade operador ação

1

* multplicação

/ divisão

MOD resto da divisão inteira

2+ adição

- subtração

Funções

função ação

EXP(x) exponencial de x (ex, onde e = 2.718282...)

LN(x) logaritmo neperiano de x (logex)

ABS(x) valor absoluto de x (x)

TRUNC(x) parte inteira do número real x

ROUND(x) arredonda o número real x

SIN(X) seno de x

Instituto de Química – UNESP – Araraquara

14

Page 18: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

COS(x) Cosseno de x

POW(x,n) potência com base x e expoente n ( xn )

SQRT(x) raiz quadrada de x ( x )

Exemplos de expressões aritmétcas:

a) A-B*POW(C,2) d) ROUND(5.8)+ABS(-4)b) SQRT(POW(b,2)-4*a*c) e) SIN(A)-LN(B)c) TRUNC(3.68) - EXP(3) f) 22 MOD 6 + soma

8.2. Expressões Relacionais

Expressões Relacionais ou Relações: são expressões que realizam comparações entre valores domesmo tpo. Estes valores são representados nas relações através de constantes, variáveis ou expressõesaritmétcas.

Operadores Relacionais

operador ação

= igual

<> diferente

< menor

> maior

<= menor ou igual

>= maior ou igual

O resultado obtdo de uma expressão relacional é sempre um valor lógico (Verdadeiro ou Falso).

Exemplos de expressões relacionais:

a) X+Y=3*X+5 d) SQRT(POW(b,2)-4*a*c) >= 0b) 2*A<8 e) A <> Bc) nome <> "Ana Maria" f) sexo = "masculino"

8.3. Expressões Lógicas

Expressões Lógicas: são expressões cujos operadores são lógicos e cujos operandos são expressõesrelacionais, constantes e/ou variáveis do tpo lógico. O resultado de uma expressão lógica é sempre umvalor lógico (V ou F).

Operadores Lógicos

operador ação

e () conjunção

ou () disjunção

não (~) negação

Instituto de Química – UNESP – Araraquara

15

Page 19: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Sejam p e q proposições, temos a seguinte Tabela-Verdade:

conjunção disjunção negação

p q p q p q p q p ~ pV V V V V V V FV F F V F V F VF V F F V VF F F F F F

Suponha que tenhamos duas proposições:A : (Eu gosto de dia ensolarado.”B : (Hoje vai chover”

Podemos criar várias composições de proposições usando os operadores lógicos:

~A : (Eu não gosto de dia ensolarado”~(A B) : (Não é verdade que eu gosto de dia ensolarado e hoje vai chover”A ~B : (Eu gosto de dia ensolarado ou hoje não vai chover”

Exemplos de expressões lógicas:

a) X > 2*Y Idade = 18b) cidade = "Araraquara" bairro = "Centro"c) ~Fim Total < 15

Prioridade entre os Operadores

prioridade operador

1 aritmétco

2 relacional

3 não

4 e

5 ou

Obs: Vários nuveis de parênteses podem ser utlizados para fxar uma ordem de execução diferenteda prioridade indicada pela tabela acima.

Exemplo: ~(x = 20 y > 5)

9. Fluxogramas

Fluxograma ou diagrama de blocos é a representação simbólica dos passos a serem seguidos emum algoritmo, ou seja, é a representação esquemátca de um processo.

Exemplo de Controle de Estoque:

O funcionário responsável pelo estoque recebe uma solicitação de peça e verifca na listagem deestoque a disponibilidade da mesma. Caso a peça esteja disponuvel, ela é entregue ao solicitante e emseguida é efetuada a baixa no estoque. Caso a peça não esteja disponuvel, o funcionário verifca o tempo deentrega junto ao fornecedor da peça e informa o tempo de entrega ao solicitante. Caso o solicitante desejea peça, é efetuado o pedido ao fornecedor e aguarda-se a chegada da peça e a sua entrada no estoque. Emseguida ela é entregue ao solicitante e é efetuada a baixa no estoque.

Instituto de Química – UNESP – Araraquara

16

Page 20: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

inucio ou fm leitura (entrada) decisão

cálculo e atribuição impressão (sauda) sentdo do fuxo

Inucio

Recebe a solicitação e verifca no estoque

Dá baixa no estoque

Entrega ao solicitanteVerifca o tempo de

entrega e informa ao solicitante

Disponuvel ?

Quer a peça?

Fim

Faz o pedido e aguarda a entrega no

estoque

S

S

N

N

Introdução à Ciência da Computação

Os sumbolos básicos utlizados em fuxogramas são:

9.1. Comando de Atribuição

O Comando de Atribuição permite que se forneça um valor a uma determinada variável. O valorpode ser resultado de uma expressão.

Exemplos: a) A 7b) idade 18c) NOME "Marina"d) media (a + b)/2e) X Y

9.2. Comando de Entrada

O Comando de Entrada permite que o usuário forneça valores ao programa.

Instituto de Química – UNESP – Araraquara

17

Identfcador valor ou expressão

lista de identfcadores

Page 21: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

inucio

A,B,C

media (A+B+C)/3

(Média = (, media

fm

Introdução à Ciência da Computação

onde: lista de identfcadores são os nomes das variáveis, separados por vurgula, nas quais serãoarmazenados os valores provenientes do usuário através dos dispositvos de entrada.

9.3. Comando de Saída

O Comando de Sauda permite mostrar ao usuário os valores das variáveis ou das constantes.

onde: lista de identfcadores são os nomes das variáveis, cujos conteúdos serão mostrados, as constantessão os valores e as expressões podem ser expressões aritmétcas ou outras, cujos resultados serãomostrados aos usuários através de um dispositvo de sauda.

9.4. Estrutura Sequencial

Estrutura Sequencial é uma coleção de ações a serem executadas sequencialmente.

Exemplo 9.1.Fluxograma para ler três números, calcular a média aritmétca entre estes números e imprimir o

resultado.

Instituto de Química – UNESP – Araraquara

18

lista de identfcadores, constantesou expressões

ação2

ação1

Page 22: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

V

Fcondição

ação / ações

V

Fnota < 5

nota

inucio

fm

(REPROVADO”

ação1 / ações1

condição FV

ação2 / ações2

Introdução à Ciência da Computação

9.5. Estruturas Condicionais

Estas estruturas permitem escolher um grupo de ações ou estruturas a serem executadas quandouma determinada condição, representada por uma expressão lógica, é satsfeita ou não.

9.5.1. Estrutura Condicional Simples

A(s) ação(ões) só será(ão) executada(s) se a condição for Verdadeira. Condição é um teste, cujoresultado é Verdadeiro ou Falso

Exemplo 9.2.Fluxograma para ler uma nota e imprimir REPROVADO, caso a nota seja menor do que 5.

9.5.2. Estrutura Condicional Composta

Instituto de Química – UNESP – Araraquara

19

Page 23: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

prova < 5ou trab < 5

FV

prova, trab

inucio

fm

(REPROVADO” (APROVADO”

condição

ação / ações

F

V

Introdução à Ciência da Computação

Se a condição for Verdadeira, a ação1 ou a sequência de ações1 serão executadas, se a condição forFalsa, a ação2 ou a sequência de ações2 serão executadas.

Exemplo 9.3.

Fluxograma para ler a nota da prova e a nota do trabalho, e imprimir REPROVADO, caso a nota daprova ou do trabalho seja menor do que 5 e caso contrário imprimir APROVADO.

9.6. Estruturas de Repetição

Uma estrutura de repetção permite repetr um grupo de ações ou estruturas, várias vezes e o fmda repetção é determinado por um teste de condição.

9.6.1. Estrutura de Repetição Enquanto-faça

Esta estrutura de repetção tem o teste de condição no inucio da repetção. Portanto, enquanto acondição é verdadeira, a ação ou as ações serão executadas repetdamente (ENQUANTO-FAÇA). Neste tpode estrutura de repetção, caso a condição seja Falsa na primeira vez, a ação ou as ações não serãoexecutadas nenhuma vez.

Exemplo 9.4

Instituto de Química – UNESP – Araraquara

20

Page 24: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

condição

ação / ações

V

F

N <= 50 F

V

inucio

fm

Q

Q N*N

N 1

N N+1

Introdução à Ciência da Computação

Fluxograma para imprimir o quadrado dos números inteiros entre 1 e 50 (inclusive), usando aestrutura de repetção Enquanto-faça.

9.6.2. Estrutura de Repetição Repita-até

Esta estrutura de repetção tem o teste de condição no fnal da repetção. Portanto, uma ação ousequência de ações são executadas repetdamente, até que uma determinada condição seja satsfeita(REPITA-ATÉ). Neste tpo de estrutura de repetção, como o teste de condição está no fnal, a ação ou asações serão executadas pelo menos uma vez.

Instituto de Química – UNESP – Araraquara

21

Page 25: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

N > 50F

V

inucio

fm

Q

Q N*N

N 1

N N+1

Introdução à Ciência da Computação

Exemplo 9.5.

Fluxograma para imprimir o quadrado dos números inteiros entre 1 e 50 (inclusive), usando aestrutura de repetção Repita-até.

10. Programação

Linguagem de programação é a linguagem utlizada pelo homem para dar instruções aocomputador. Uma linguagem de programação é formada por um conjunto de regras sintátcas e semântcasque permite ao homem expressar as instruções que deseja que o computador execute.

Existem vários paradigmas (estlos) de programação:Programação Imperatva (Fortran, Pascal, C)Programação Orientada a Objetos (Smalltalk, C++, C#, Delphi, Java, Python, Ruby)Programação Funcional (Lisp)Programação Lógica (Prolog)

Na programação imperatva os programas são centrados no conceito de estados (modelados porvariáveis) e ações (comandos) que manipulam o estado. Uma linguagem de programação que utliza oparadigma imperatvo manipula variáveis a partr de ordens ou comandos. Ex. (faça isso e depois aquilo”.

O paradigma orientado a objetos tenta extrair conceitos do mundo real por meio de estruturascomo objetos, classes, atributos e métodos. Uma classe é um conjunto de objetos e cada classe tem seusatributos (propriedades) e métodos (ações). Ex. Cachorro é uma classe que possui os atributos: raça, idade,cor, peso, etc. Totó é um objeto da classe cachorro, assim como Banzé. Os métodos da classe cachorro são:latr, comer, dormir, etc. A programação orientada a objetos é complexa, envolvendo conceitos deencapsulamento, herança, polimorfsmo, associação, agregação, composição, etc.

Instituto de Química – UNESP – Araraquara

22

Page 26: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

No paradigma funcional os programadores abstraem o programa como uma sequência de funçõesexecutadas de modo empilhado. Este paradigma é muito utlizado em Inteligência Artfcial.

O paradigma lógico tem estlo declaratvo e os programas são relações entre entrada e sauda. Háuso deste paradigma em Sistemas Especialistas e Bancos de Dados.

Os paradigmas mais utlizados são os paradigmas imperatvo e orientado a objetos.A relação entre linguagens de programação e paradigmas de programação é complexa porque uma

linguagem pode suportar mais do que um paradigma.Na programação existem também os conceitos de modularização e programação estruturada que

não são paradigmas, mas técnicas de programação. Na programação estruturada os elementos chaves sãoas estruturas básicas de controle (sequencial, condicional e repettva). Nesta técnica de programação éproibido o uso irrestrito de comandos de desvio incondicional GOTO para aumentar a legibilidade e acompreensão do programa.

A modularização de programas permite dividir o programa em blocos denominados procedimentos,funções ou subrotnas, de modo a facilitar a compreensão e a correção, melhorando a clareza geral doprograma, além de permitr a reutlização de blocos. Com a modularização pode-se separar e esconder doresto do programa, as informações necessárias para realizar uma tarefa especufca.

11. Linguagem C

A linguagem C foi criada no inucio da década de 1970 por Dennis Ritchie, no Centro de Pesquisas(Bell Laboratories” da AT&T. Devido à sua simplicidade e fexibilidade, a linguagem C tornou-se ao longo dotempo uma das linguagens de programação mais populares e de grande interesse para os mais diversossegmentos da computação. Ela é usada no desenvolvimento de vários aplicatvos, games e sistemasoperacionais como: Word, Excel, efeitos especiais do flme Guerra nas Estrelas, UNIX, Windows, etc.

A linguagem C é considerada uma linguagem de médio nuvel, pois situa-se entre a linguagem debaixo nuvel (linguagem próxima à linguagem de máquina) e a linguagem de alto nuvel (linguagem próxima ado ser humano). Ela permite a manipulação de bits, bytes e endereços de memória, que são caracterustcasdas linguagens de baixo nuvel e ao mesmo tempo suporta o uso de tpos de dados (inteiro, caractere, real,etc.) que é uma das caracterustcas da linguagem de alto nuvel.

C é uma linguagem imperatva que permite programação estruturada e modular. Uma caracterustca importante da linguagem C é a portabilidade, que permite fácil adaptação do

programa escrito para um sistema operacional (por exemplo, Windows) para ser executado em outrosistema operacional (como Linux). Outra caracterustca importante da linguagem C é a sua capacidade degerar programas extremamente rápidos em tempo de execução.

Nos anos 80, a linguagem C tornou-se muito popular, surgiu vários compiladores comerciais de C ea linguagem C passou a ser reconhecida como linguagem de propósito geral. Com o desenvolvimento devários compiladores, tornou-se necessário padronizar a linguagem para garantr a compatbilidade e aportabilidade da linguagem. A padronização foi desenvolvida pelo ANSI (American Natonal StandardsInsttute) que criou o padrão ANSI C em 1989.

A linguagem C++ é uma extensão da linguagem C e possui caracterustcas do modelo orientado àobjetos adicionadas à linguagem imperatva, sendo portanto uma linguagem hubrida.

11.1. Compilador

O computador não é capaz de entender um programa escrito na linguagem C, pois ele só entende alinguagem de máquina. Portanto, um programa escrito em qualquer linguagem que não seja a linguagemde máquina, precisa ser traduzido para a linguagem de máquina para que o computador possa executá-lo.Assim, após escrevermos um programa na linguagem C, precisamos de um compilador da linguagem C paratraduzir o programa para a linguagem de máquina.

O compilador lê a instrução do programa fonte (.c) escrito na linguagem C, faz a consistência dasintaxe e se não houver erro, converte-a para a linguagem de máquina.

O programa com as instruções traduzidas para a linguagem de máquina é o programa objeto (.obj).A este programa é necessário agregar as funções, em linguagem de máquina, que foram utlizadas no

Instituto de Química – UNESP – Araraquara

23

Page 27: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

programa e estão em arquivos de bibliotecas. Este trabalho é feito pelo linkeditor (ou editor de ligações)que junta as funções necessárias ao programa objeto e gera o programa executável (.exe), que pode serexecutado diretamente pelo computador.

11.2. Dev-C++

Para criar um programa executável, é necessário digitar o programa fonte e salvá-lo com extensão.c. Após isso, é preciso compilar e fazer a linkedição para gerar o programa executável.

Para editar, compilar, corrigir e fazer a linkedição de programas em C, utlizaremos um ambiente dedesenvolvimento integrado (IDE – Integrated Development Environment), denominado Dev-C++ (ou Dev-Cpp), que é um sofware livre destnado à programação em C ou C++.

O Dev-C++ foi desenvolvido pelo programador Colin Laplace e a últma versão lançada por ele é aDev-C++ 5.0 beta 9.2 (4.9.9.2). No entanto, esta é uma versão antga, cuja últma atualização foi feita em2005 e apresenta vários problemas de execução em plataformas 64 bits. Por se tratar de uma ótmaferramenta para desenvolvimento, Johan Mes Orwell deu contnuidade ao desenvolvimento do Dev-C++ evem disponibilizando novas versões desde 2011. Portanto, é possuvel baixar uma versão atualizada do Dev-C++ no site: htp://sourceforge.net/projects/orwelldevcpp/

O Orwell Dev-C++ é um projeto atvo e recebe atualizações constantemente. Na data de ediçãodesta apostla a últma versão disponuvel no site era: Dev-Cpp 5.11 TDM-GCC 4.9.2 (atualizado emnovembro/2016).

O arquivo de instalação (Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe) tem 49,3 Megabytes e vem comcompiladores para plataformas 32 e 64 bits, além do depurador (debugger) GDB.

O pacote TDM-GCC inclui o compilador, o pré-processador, o linkeditor, as bibliotecas padrões do Ce do C++ e os arquivos cabeçalhos correspondentes.

Um outro ambiente de desenvolvimento baseado no Dev-C++ é o wxDev-C++ (últma atualizaçãojulho/2012), disponuvel na página: htp://wxdsgn.sourceforge.net/

O wxDev-C++ foi criado a partr do código fonte do Dev-C++ e oferece um ambiente deprogramação visual, onde a programação é realizada a partr de elementos gráfcos que estão disponuveisna tela. Como este tpo de programação é mais complexa, não será abordada neste primeiro curso deprogramação.

11.3. Estrutura Básica de um Programa em C

Um programa em C consiste em uma ou várias funções, cuja estrutura geral é a seguinte:

tpo nome_da_funcao(declaração dos parâmetros){ declaração de variáveis; instrução_1; . . . instrução_n; return valor;}

11.4. Função main()

A função main() é a principal função e inicia a execução de um programa na linguagem C.Neste exemplo, a função principal retornará o valor inteiro 0.

Instituto de Química – UNESP – Araraquara

24

Page 28: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

int main(){ return 0;}

Podemos escrever a função main() na forma resumida (abaixo), pois a forma resumida éautomatcamente convertda, pelo compilador, para a forma padrão (que retorna um inteiro), apresentadaacima.

main(){ }

Toda função deve ter parênteses, mesmo que vazio, sem nenhum parâmetro. Além disso, todafunção deve ter chaves que delimitam o corpo da função.

11.5. Meu primeiro programa em C

#include<stdio.h>#include<stdlib.h>

int main(){ print((Meu primeiro programa!\n”); system((pause”); return 0;}

11.6. Bibliotecas

Bibliotecas são arquivos em linguagem de máquina que contêm funções desenvolvidas por outrosprogramadores e que podem ser usadas no seu programa. Além da biblioteca padrão ANSI C, fornecidacom os compiladores C, existem também bibliotecas privadas.

Algumas das bibliotecas básicas que fazem parte da biblioteca padrão ANSI C são apresentadas aseguir:

A biblioteca stdio.h (standard input/output) é uma biblioteca padrão de entrada e sauda quecontém funções, macros e constantes padrões ao compilador. Algumas das funções desta biblioteca são:print, scanf, getc, putc, getchar, putchar, gets, puts, fopen, fclose, etc.

A biblioteca stdlib.h, muito utlizada, contém funções de utlidade geral, além de funções paraconversão de número em texto e texto em número, gerar número aleatório: system, free, exit, atoi, atof,rand, abs, etc.

A biblioteca math.h fornece funções matemátcas básicas como: exp, log, sin, cos, tan, pow, sqrt,etc.

A biblioteca string.h disponibiliza funções para manipulação de strings como: strcpy, strcmp, strlen,strcat, etc.

11.7. Diretiva #include

Para utlizar funções de uma biblioteca é necessário incluir a respectva biblioteca no inucio doprograma, através da diretva #include.

Instituto de Química – UNESP – Araraquara

25

Page 29: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

A diretva #include<stdio.h> indica ao linkeditor para juntar o código objeto do programa(resultado da compilação) com o código objeto das funções da biblioteca stdio.h. O arquivo de cabeçalhostdio.h contém o nome e as caracterustcas das funções.

11.8. Função printf()

A função print() é uma função da biblioteca padrão stdio.h e não faz parte da defnição dalinguagem C. Dentro do parêntesis deve ser colocado entre aspas o que deseja que seja exibido na tela.Portanto, o comando print((Meu primeiro programa!”) imprime na tela o texto informado comoparâmetro: Meu primeiro programa!

Várias combinações de caracteres especiais podem ser usadas no comando print(). O \n, porexemplo, serve para mudar de linha. Ex.: print((Meu primeiro programa!\n”).

Códigos especiais Significado

\n nova linha

\t tabulação

\a alerta auduvel (campainha)

\' apóstrofo

\” aspas

A tabela a seguir apresenta alguns códigos de formatação utlizados no print():

Código de formataçãopara print() Significado Tipo

%c caractere char

%s cadeia de caracteres (string) char

%d número inteiro int

%u número inteiro sem sinal unsigned

%f número real foat ou double

%e número real em notação cientfca (e minúsculo) foat ou double

%E número real em notação cientfca (E maiúsculo) foat ou double

%g %f ou %e, o que for menor foat ou double

%x inteiro hexadecimal sem sinal (letras minúsculas) int

%X inteiro hexadecimal sem sinal (letras maiúsculas) int

%p ponteiro (endereço) int

%% imprime o caractere % char

A função print() pode ter um ou vários argumentos. Os argumentos devem ser separados porvurgula.

Vejamos alguns exemplos de uso do print.

Exemplo 1.

print((Meu primeiro programa!”);

O comando acima possui somente um argumento que está entre aspas e será impresso na tela docomputador.

Instituto de Química – UNESP – Araraquara

26

Page 30: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Exemplo 2.

print((Fatorial de %d = %d.”, n, fat);

Este comando possui 3 argumentos (separados por vurgulas). O primeiro argumento contém oscaracteres que serão impressos e os códigos de formatação (%d) que indicam o formato em que osargumentos seguintes (n, fat) devem ser impressos. Os argumentos n e fat são variáveis, cujos valores serãoimpressos. Portanto, caso o valor da variável n seja 5 e o valor da variável fat seja 120, o comando acimaimprime:

Fatorial de 5 = 120.

Exemplo 3.

print((%s obteve media %f.”, nome, media);

Este comando imprime a string contda na variável nome, a mensagem obteve media e o valor davariável (media) do tpo foat (real). Portanto, caso o valor da variável nome seja (Ana Paula”, e o valor davariável media seja 8.5, o comando imprime:

Ana Paula obteve media 8.500000.

Exemplo 4.

print((pi = %.4f”, M_PI);

Este comando imprime a mensagem pi = e o valor da constante M_PI (3.14.159265) do tpo foat,usando 4 casas decimais. Portanto, o comando imprime:

pi = 3.1416

11.9. Função scanf()

A função scanf() também é uma função da biblioteca padrão stdio.h. Ela permite ler dadosfornecidos pelo teclado. A sua sintaxe é semelhante a de print(), isto é, os códigos de formatação(ilustrados na tabela anterior), compatveis com os tpos das variáveis, devem ser colocados entre aspas,seguida por uma lista de argumentos, separados por vurgulas. Os argumentos de scanf() devem ser osendereços das variáveis, onde serão armazenados os valores fornecidos pelo teclado. Os endereços dasvariáveis são os nomes das variáveis precedidos por &. Exemplo: &x, &salario, &nota.

Código de formataçãopara scanf()

Significado Tipo

%c caractere char

%s string ou cadeia de caracteres -

%d número inteiro int

%u número inteiro sem sinal unsigned

%f número real foat

%lf número real longo double

Exemplo 1.

scanf((%d”, &idade);

O comando acima lê um valor inteiro (código %d) e armazena na variável idade.

Exemplo 2.

scanf((%f %f”, &prova, &trabalho);

Instituto de Química – UNESP – Araraquara

27

Page 31: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

O comando acima lê dois valores reais (código %f) e armazena respectvamente nas variáveis provae trabalho.

11.10. Função system()

A função system() faz parte da biblioteca stdlib.h e com o parâmetro PAUSE serve para interrompera execução do programa para que o usuário possa ver os resultados na janela de sauda, antes que a janelaseja fechada. Sem essa função, o programa é executado e a janela é fechada automatcamente, nãopermitndo a visualização dos resultados.

Exemplo:system((pause”);

Com o uso de system(“pause”); será exibida na tela a seguinte mensagem: Press any key tocontnue.... Caso deseje que não seja exibida esta mensagem, use: system(“pause>>null”);

11.11. Constantes

Uma constante tem valor fxo e inalterável. Os números constantes na linguagem C podem ser escritos na base decimal, hexadecimal ou octal.

A base decimal é a base que estamos acostumados. Ex. 318, 19.43, -57. Estes números não podem estarentre aspas.

Caracteres constantes são escritos entre apóstrofos. Ex. 'X', '8', '\n'.Cadeias de caracteres constantes são escritas entre aspas. Ex. (Meu primeiro programa”.

11.12. Variáveis

Variável é um espaço de memória reservado para armazenar um certo tpo de dado, tendo umnome para referenciar o seu conteúdo. O tpo da variável informa a quantdade de memória em bytes, queela ocupará e o modo como um valor deverá ser armazenado e interpretado.

11.12.1. Tipos de Variáveis

Os tpos básicos de variáveis em C são: int, foat, double, char e void. O tpo int tem o tamanho dapalavra da máquina, isto é, em ambientes de 32 bits o tpo int terá o tamanho de 4 bytes e suportaránúmeros inteiros entre -2147483648 a 2147483647. O foat terá o tamanho de 4 bytes e suportaránúmeros reais no intervalo 3.4x10-38 a 3.4x1038. Os dados da tabela abaixo referem-se aos tpos de dados deum ambiente de 32 bits.

Existem em C, 3 modifcadores de tpo (short, long e unsigned) que podem acompanhar qualquertpo básico de dados, exceto void.

Tipo Bytes Bits Valores

int 4 32 -2147483648 a 2147483647

foat 4 32 3.4x10-38 a 3.4x1038

double 8 64 1.7x10-308 a 1.7x10308

void 0 0 Nenhum valor

short 2 16 -32768 a 32767

unsigned 4 32 0 a 4294967295

long double 10 80 3.4x10-4932 a 3.4x104932

Instituto de Química – UNESP – Araraquara

28

Page 32: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.12.2. Declaração de Variáveis

As variáveis devem ser declaradas no inucio de uma função, logo após a abertura da chave e antesde qualquer instrução.

Na declaração de variáveis, deve-se colocar o tpo da variável seguido pelos nomes das variáveisseparados por vurgula.

Exemplo:int lado1, lado2, lado3;foat nota, media;char alternatva;

11.12.3. Nomes de Variáveis

Os nomes de variáveis (ou identfcadores) devem começar com um caractere alfabétco e podemser seguidos por caracteres alfabétcos ou dugitos (entre 0 e 9). O caractere de sublinhado é consideradocaractere alfabétco. Os nomes de variáveis não devem conter caracteres especiais (!, @, -, #, $, %, ¨, &, *,á, õ, etc...) e devem ser diferentes das palavras-chave da linguagem C.

A linguagem C é (case sensitve”, isto é, ela diferencia letra maiúscula de minúscula, por isso: Idadeé diferente de idade e também diferente de IDADE.

11.13. Palavras-chave

A tabela abaixo apresenta as palavras-chave ou palavras reservadas da linguagem C (padrão ANSI).Observe que todas elas são em letra minúscula.

Categoria Palavras-chave

Tipos de dados char, int, foat, double, void

Modifcadores de tpo long, short, signed, unsigned

Modifcadores de tpo de acesso const, volatle

Classes de armazenamento auto, extern, statc, register

Tipos defnidos pelo usuário struct, enum, union, typedef

Comandos condicionais if, else, switch, case, default

Comandos de repetção while, do, for

Comandos de desvio break, goto, return, contnue

Operador sizeof

11.14. Operadores

Existem muitos operadores na linguagem C. Os operadores mais utlizados serão apresentados aseguir.

11.14.1. Operador de atribuição

Em C, o operador de atribuição é o sinal de igual.

Exemplo 1.x = 10;atribui o valor 10 para a variável x.

Podemos também executar atribuições múltplas.

Instituto de Química – UNESP – Araraquara

29

Page 33: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Exemplo 2.y = x = 0;As atribuições são executadas da direita para a esquerda. Assim, a variável x receberá o valor 0 e a

variável y também receberá o valor 0.

É possuvel inicializar uma variável na sua declaração.Exemplo:int x = 5;foat saldo = 0;

11.14.2. Operadores aritméticos

A linguagem C possui 5 operadores aritmétcos binários (que operam entre 2 operandos) e umoperador aritmétco unário (que opera sobre um único operando).

Operador binário Exemplo Ação

+ x + y soma x e y

- x - y subtrai y de x

* x * y multplica x e y

/ x / y divide x por y

% x % y resto da divisão de x por y (x e y inteiros)

Operador unário Exemplo Ação

- -x troca o sinal de x

Exemplos:a) 5 * xb) 14 / 3c) 17 % 5d) - y

O operador módulo (%) só aceita operandos inteiros e retorna o resto da divisão inteira. Noexemplo c) 17 % 5, será retornado 2, que é o resto da divisão de 17 por 5. Todos os demais operadoresaceitam operandos inteiros ou reais.

Na divisão (/), se ambos os operandos forem constantes inteiras ou variáveis declaradas comointeiras (int), o resultado será inteiro. No exemplo b) 14/3, será retornado 4 e não 4.6667. Porém, se pelomenos um dos operandos da divisão for um número real, ou uma variável declarada como real (foat), oresultado da divisão será real. Por exemplo, caso a variável x seja declarada como foat, a variável y sejadeclarada como int, a variável x contenha o valor 14 e a variável y contenha o valor 3, o resultado de x / yserá 4.6667, porque uma das variáveis é real.

O operador menos unário (-) é usado para indicar a troca de sinal. Por exemplo, na expressão y = -x;a variável y está recebendo o valor da variável x, com o sinal trocado.

Os operadores *, / e % têm precedência maior que os operadores + e -. Isso signifca que osoperadores *, / e % serão avaliados antes dos operadores + e -. Para mudar a precedência dos operadores,pode-se utlizar vários nuveis de parênteses como por exemplo: (5*(x+2)-6)/4. As expressões entreparênteses são as primeiras a serem avaliadas. Quando aparecem vários operadores de mesmaprecedência em uma expressão, os cálculos serão realizados seguindo a ordem da esquerda para a direita.

Instituto de Química – UNESP – Araraquara

30

Page 34: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.14.3. Operadores de incremento e decremento

Os operadores de incremento (++) e decremento (- -) são unários.

Operador Exemplo Ação

++ x++ ou ++x incrementa 1 ao valor de x

- - x- - ou - - x decrementa 1 ao valor de xO operador de incremento ++ opera sobre o nome de uma variável e adiciona 1 ao valor desta

variável.

Exemplos:a) x++b) ++x

No item a) temos um exemplo de uso pós-fxado e no item b) temos um exemplo de uso prefxado.x++ equivale a ++x que equivale a x = x +1.O operador de decremento - - opera sobre o nome de uma variável e decrementa 1 ao valor desta

variável. Pode também ser prefxado (- - x) ou pós-fxado (x- -).x- - equivale a - - x que equivale a x = x – 1.

11.14.4. Operadores aritméticos de atribuição

Os operadores aritmétcos de atribuição (ou operadores compostos) combinam as operaçõesaritmétcas com a operação de atribuição, oferecendo uma forma mais compacta para algumas expressõesde atribuição. O operador da esquerda é sempre uma variável e o da direita é uma expressão. A operaçãoconsiste em atribuir um novo valor à variável, que depende do operador e da expressão à direita.

A regra geral para operadores aritmétcos de atribuição é

x op = exp; equivale a x = x op exp;onde: x é variável, op é um operador aritmétco (+, - *, / ou % ) e exp é uma expressão.

Exemplos:s += 3; equivale a s = s + 3;d –= 2+t; equivale a d = d – (2+t);t *= 4; equivale a t = t * 4;x %= 3; equivale a x = x % 3;y /= (x-1); equivale a y = y / (x-1);

11.14.5. Operadores relacionais

Os operadores relacionais fazem comparações e formam as expressões relacionais que sãocondições simples.

Operador relacional Ação

== igual

!= diferente

> maior

< menor

>= maior ou igual

<= menor ou igual

Instituto de Química – UNESP – Araraquara

31

Page 35: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Em C, o resultado de uma expressão relacional (que usa operador relacional) é 1 para verdadeiro e0 para falso. Não existem em C, valores booleanos (true” e (false”. Embora C defna o valor verdadeirocomo 1, a linguagem considera qualquer valor não zero como verdadeiro, inclusive valor negatvo.

Exemplos: a) nota >= 5.0b) opcao == 'S'

O resultado da expressão relacional do item a) será 1, se na variável nota tver qualquer valor igualou superior a 5.0, caso contrário o resultado será 0 (zero). No item b), se a variável opcao tver valor igual aS maiúsculo, então o valor da expressão relacional será 1, caso contrário 0.

Observação: A comparação de caracteres é (case sensitve”, isto é, para a linguagem C o caractere's' minúsculo é diferente do caractere 'S' maiúsculo. De fato, para a linguagem C um caractere é apenas umnúmero inteiro associado a tabela ASCII. Neste caso, o valor de 'S' maiúsculo na tabela ASCII é 83 e o valorde 's' minúsculo é 115. Logo, se opcao='s' no item b), então a expressão relacional é equivalente à 115==83,que é falsa e retorna o valor 0. Para mais informações sobre a tabela ASCII consulte o Apêndice C dareferência [7].

11.14.6. Operadores lógicos

Os operadores lógicos são utlizados para formar condições mais complexas ao combinar condiçõessimples (que usam operadores relacionais).

Operador lógico Ação

&& e

|| ou

! nãoO operador ! é unário, enquanto que && e || são operadores binários.

Exemplos:a) resposta == 'N' && !(idade < 18)b) x > 10 || -x == 5

11.14.7. Operador condicional ternário (?:)

O operador condicional substtui uma expressão condicional do tpo if-else e tem a seguinte formagenérica:

exp1 ? exp2 : exp3

Por exemplo:

maior = (x>y) ? x : y;

Esta expressão equivale a

if (x>y)maior = x;elsemaior = y;

Outro exemplo:

print(“%s”, idade >= 18 ? “maior de idade” : “menor de idade”);

O comando acima imprime maior de idade caso a idade seja maior ou igual a 18 e menor de idadecaso contrário.

Instituto de Química – UNESP – Araraquara

32

Page 36: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.14.8. Precedência dos Operadores

A tabela a seguir ilustra a precedência entre os operadores apresentados.

Precedência Operadores

1 - (unário) ++ - - !

2 * / %

3 + -

4 < <= > >=

5 == !=

6 &&

7 ||

8 ?:

9 = *= /= %= += -=

Para mudar a precedência dos operadores da tabela acima, pode-se utlizar vários nuveis deparênteses como por exemplo: !(salario < 5000.00 && tempo >= 4).

11.15. Biblioteca math.h

A biblioteca math.h contém várias funções e algumas constantes matemátcas úteis. A tabelaabaixo mostra as principais funções e constantes.

Função Ação

exp(x) exponencial de x (ex, onde e = 2.718282...)

log(x) logaritmo natural ou neperiano de x (logex)

log10(x) logaritmo de x na base 10 (log10x)

fabs(x) valor absoluto de x (x)

sin(x) seno de x

cos(x) cosseno de x

pow(x,y) x elevado à potência y (xy)

sqrtx) raiz quadrada de x ( x )

ceil(x) arredonda x para o menor inteiro não menor que x (teto de x)

foor(x) arredonda x para o maior inteiro não maior que x (piso de x)

fmod(x,y) resto de x/y (x e y reais ou x ou y real)

M_PI (3.14159265358979)

M_E e (2.71828182845904)

11.16. Biblioteca locale.h

A biblioteca locale.h especifca constantes de acordo com a localização especufca (regionalização),como acentuação, ponto decimal, moeda, data, etc.

Portanto, para usar palavras acentuadas no print, inclua a biblioteca locale.h e no inucio doprograma inclua o comando setlocale(LC_ALL,”portuguese”) para defnir o idioma como português ousetlocale(LC_ALL,””) para usar a localidade padrão do sistema operacional.

Instituto de Química – UNESP – Araraquara

33

Page 37: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.17. Comentários

Os comentários são utlizados para documentar o programa e são ignorados pelo compilador. Oscomentários devem ser escritos entre /* e */ e podem ocupar várias linhas. Pode ser usado também ocomentário de linha única //, no qual, tudo a partr de // até o fnal da linha será considerado comentário.

Exemplos:a) /* Este programa lê um número fornecido pelo usuário, calcula o fatorial deste número e mostra para o usuário o valor (fatorial) encontrado. */b) print("Digite um numero: "); // mostra na tela a mensagem entre aspas scanf("%d", &n); // lê um valor inteiro e armazena na variável n

11.18. Estrutura Sequencial

Estrutura sequencial é uma sequência de comandos de atribuição, comandos de entrada ou desauda.

Exemplo:Programa para ler o consumo mensal de energia elétrica em kWh e imprimir o valor da conta de

energia, supondo que 1 kWh custe R$ 3,00 e que não há imposto nenhum envolvido no cálculo da conta.

#include<stdio.h>#include<stdlib.h>

int main(){ int consumo; foat conta; print("Digite o valor do consumo: "); scanf("%d", &consumo); conta = consumo*3.00; print("Valor da conta = R$ %.2f \n\n", conta); system("pause"); return 0;}

11.19. Estruturas Condicionais

11.19.1. Estrutura Condicional Simples

A estrutura condicional simples permite executar um comando (ou bloco de comandos) quandouma condição for verdadeira. Uma condição é uma comparação que pode ser verdadeira ou falsa.

No trecho abaixo, se a condição1 for verdadeira, o comando1 será executado.

if (condição1) comando1;

Exemplo:Programa para ler a idade e imprimir a mensagem Menor de idade, caso a idade seja inferior a 18

anos.

Instituto de Química – UNESP – Araraquara

34

Page 38: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

#include<stdio.h>#include<stdlib.h>

int main(){ int idade; print("Digite a idade: "); scanf("%d", &idade); if (idade < 18) print("Menor de idade.\n\n"); system("pause"); return 0;}

Quando você deseja que mais que um comando sejam executados caso uma condição sejaverdadeira, você deve utlizar chaves { } para delimitar os comandos que serão executados.

No trecho a seguir, se a condição1 for verdadeira, então o comando1 e o comando2 serãoexecutados. O comando3 será sempre executado, independentemente da condição1, porque ela está foradas chaves.

if (condição1) { comando1; comando2; }comando3;

Abaixo, se a condição1 for verdadeira, o comando1 será executado. O comando2 e o comando3sempre serão executados, independentemente da condição1. Isso porque, os comandos (comando1,comando2 e comando3) não estão entre chaves, assim, o compilador interpretará que somente ocomando1 faz parte da estrutura condicional e os demais comandos estão fora da estrutura condicional e,portanto serão executados independentemente da condição1, ou seja, serão sempre executados.

if (condição1) comando1; comando2; comando3;

Exemplo:Programa para ler o raio e caso o raio lido seja positvo, calcular e imprimir a área do curculo.

#include<stdio.h>#include<math.h>

int main(){ foat raio, area; print("Digite o raio do circulo: "); scanf("%f", &raio); if (raio >0) { area = M_PI*pow(raio,2); print("Area do circulo = %f.\n\n", area);

Instituto de Química – UNESP – Araraquara

35

Page 39: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

} system("pause"); return 0;}

11.19.2. Estrutura Condicional Composta

A estrutura condicional composta permite executar um comando (ou bloco de comandos) quandouma condição for verdadeira e outro comando (ou bloco de comandos) quando a condição for falsa.

No trecho abaixo, caso a condição1 seja verdadeira, o comando1 será executado e caso contrário,isto é, se a condição1 for falsa, o comando2 será executado.

if (condição1) comando1;else comando2;

No trecho abaixo, caso a condição1 seja verdadeira, o comando1 será executado e caso contrário, ocomando2 e o comando3 serão executados.

if (condição1) comando1;else { comando2; comando3; }

Exemplo:Programa para ler a nota da prova e do trabalho, e imprimir Reprovado, caso a nota da prova ou do

trabalho seja menor do que 5 e caso contrário, imprimir Aprovado e a média dada pela fórmula:

M = 4 P+ T5

.

#include<stdio.h>#include<stdlib.h>

int main(){ foat prova, trab, media; print("Digite a nota da prova: "); scanf("%f", &prova); print("Digite a nota do trabalho: "); scanf("%f", &trab); if (prova < 5 || trab < 5) print("Reprovado \n\n"); else { print("Aprovado \n"); media = (4*prova + trab)/5; print("Media = %f. \n\n", media); } system("pause");

Instituto de Química – UNESP – Araraquara

36

Page 40: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

return 0;}

11.19.3. Estrutura Condicional com múltiplas ações

Existem situações onde um programa deve executar uma determinada ação baseado num conjuntofnito de opções. Como podem existr várias opções, cada uma delas com uma sequência especufca decomandos, então é necessário usar uma estrutura de decisão que seja capaz de defnir qual a ação seráexecutada dentre as várias opções disponuveis. Para executar essa tarefa podemos usar a estrutura switch… case. A forma geral da estrutura é:

switch(controle){

case opcao_1 :Sequência de comandos 1;

case opcao_2 :Sequência de comandos 2;

. . .case opcao_n :

Sequência de comandos n;default :

Sequência de comando padrão;}

A variável controle é usada como indexador no switch, é ela que defne qual senuência decomandos será executada. Por padrão, a variável indexadora (neste caso controle) tem que ser do tpo intou char. O comando switch passa o valor da variável controle para o comando case que compara o valor davariável controle com o valor das constantes opcao_1, opcao_2, …, opcao_n. Então, quando é encontradauma constante igual ao valor da variável controle, todas as sequências de comandos a partr daquela opçãosão executadas. Por exemplo, se controle == opcao_3, então todas as sequências de comandos a partr dasequência 3 são executadas. Para executar apenas a sequência de comandos referente a uma determinadaopção, devemos incluir o comando break no fnal de cada comando case.

switch(controle){

case opcao_1 :Sequência de comandos 1;break;

. . .case opcao_n :

Sequência de comandos n;break;

default :Sequência de comando padrão;

}

O comando default é opcional e é executado quando o valor da variável controle é diferente detodas as constantes opcao_1, opcao_2, …, opcao_n, ou, quando não for incluudo break no fnal doscomandos case. O break é um comando de desvio. Na linguagem C ele só pode ser usado dentro doconjunto de comandos de uma estrutura de decisão ou repetção. O comando break é usado para forçar oencerramento de uma estrutura. No caso de estruturas aninhadas (uma dentro da outra), o comandoencerra apenas a estrutura a qual ele pertence.

Instituto de Química – UNESP – Araraquara

37

Page 41: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Exemplo:Programa para imprimir um valor de acordo com um número lido pelo teclado. Se o valor lido for

incompatvel com as opções, então o programa imprime uma mensagem de erro.

#include<stdio.h>#include<stdlib.h>

int main(){ int x; print("Digite um numero inteiro entre 1 e 4: "); scanf("%d",&x); switch (x) { case 1: print("O valor = %d\n", x); break; case 2: print("O dobro de %d = %d\n", x, 2*x); break; case 3: print("O triplo de %d = %d\n", x, 3*x); break; case 4: print("O quadruplo de %d = %d\n", x, 4*x); break; default: print("Opcao invalida! Voce digitou %d\n", x); } system("pause"); return 0;}

11.20. Estruturas de Repetição

Uma estrutura de repetção é usada para repetr uma ação ou um conjunto de ações enquanto umadeterminada condição é satsfeita. Estruturas de repetção são essenciais para a manipulação de vetores,matrizes, criação de menus e outras estruturas de dados em linguagens de programação.

O padrão ANSI C defne 3 comandos de repetção para a linguagem C:

do { } whilewhilefor

A única diferença entre eles está na localização da condição de parada.No comando do { } while a condição de parada está localizada após o conjunto de comandos do

laço (loop) de repetção. Dessa forma, a condição é testada somente após a primeira execução do laço. János comandos while e for a condição de parada está localizada antes do conjunto de comandos do laço derepetção. Então, primeiro testa-se a condição e se ela for falsa, os comandos do laço não são executados. Asintaxe dos comandos de repetção é discutda em detalhes a seguir.

Instituto de Química – UNESP – Araraquara

38

Page 42: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.20.1. Estrutura de Repetição do { } while

A estrutura de repetção do { } while (faça-enquanto) é usada quando o laço de repetção tem queser executado pelo menos uma vez.

No trecho abaixo, os 3 comandos (comando1, comando2 e comando3) serão repetdos enquanto acondição for verdadeira e o comando4 só será executado após a condição tornar-se falsa.

do{ comando1; comando2; comando3;}while (condição);comando4;

Exemplo:Programa para imprimir a soma dos números pares positvos menores que 50.

#include<stdio.h>#include<stdlib.h>

int main(){ int x, soma; soma = 0; x = 2; do { soma = soma+x; x = x + 2; } while (x < 50); print("Soma = %d \n\n", soma); system("pause"); return 0;}

Observação: O comando system(“cls”) limpa a tela.

11.20.2. Estrutura de Repetição while

Na estrutura de repetção while (enquanto) o teste de parada fca antes do conjunto de comandosdo laço e, portanto, existe a possibilidade da repetção não ser executada nenhuma vez, caso a condiçãoassuma valor falso na primeira verifcação.

O comando while foi adicionado à linguagem C por uma questão de compatbilidade com outraslinguagens de programação. Na linguagem C, o comando while pode ser facilmente substtuudo pelocomando for e seu uso é recomendado somente para os casos em que não se conhece o número de vezesque o trecho do programa deve ser repetdo. Os comandos no laço serão repetdos enquanto a condição doteste de parada for verdadeira.

No trecho abaixo, somente o comando1 será repetdo enquanto a condição for verdadeira. Ocomando2 e o comando3 só serão executados uma vez, após terminar a repetção, isto é, após a condiçãoassumir valor falso.

Instituto de Química – UNESP – Araraquara

39

Page 43: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

while (condição) comando1;

comando2;comando3;

Caso você queira que os 3 comandos (comando1, comando2 e comando3) sejam repetdos, vocêdeve delimitá-los com chaves { }.

No trecho a seguir, os comandos 1, 2 e 3 serão repetdos enquanto a condição for verdadeira e ocomando4 só será executado após a condição tornar-se falsa.

while (condição) {

comando1;comando2;comando3;

}comando4;

Exemplo:Programa para imprimir a soma dos números pares positvos menores que 50.

#include<stdio.h>#include<stdlib.h>

int main(){ int x, soma; soma = 0; x = 2; while (x < 50) { soma = soma+x; x = x + 2; } print("Soma = %d \n\n", soma); system("pause"); return 0;

}

11.20.3. Estrutura de Repetição for

O comando for (para) é a estrutura de repetção mais comum, sendo defnida em qualquerlinguagem de programação. No entanto, na linguagem C esse comando foi melhorado, sendo possuvel usá-lo para qualquer operação de repetção cujo teste de parada é realizado antes dos comandos do laço.

Em linguagem C a sintaxe do comando for é da forma:for (inicialização da variável de controle; condição para repetr; incremento ou decremento da

variável de controle) comando1;Ou seja, o comando for é dividido em três partes, sendo cada parte separada por um ponto e

vírgula (;). As partes são opcionais e a linguagem C permite que uma delas seja omitda (ou todas elas sejamomitdas). A separação em partes faz com que o comando for seja muito mais versátl na linguagem C doque em outras linguagens de programação.

Instituto de Química – UNESP – Araraquara

40

Page 44: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

As partes do comando for são explicadas a seguir:inicialização da variável de controle: é aqui que se defne qual é a variável de controle da repetção

e então atribui-se um valor inicial a ela. Esta parte é executada apenas uma vez, no inucio da primeiraiteração (execução dos comandos do bloco de repetção).

condição para repetr: esta parte é executada após a inicialização da variável de controle e após oincremento ou decremento da variável de controle. É ela que diz quando a repetção deve parar. Oscomandos do bloco de repetção serão executados enquanto o valor lógico da condição para repetr forverdadeiro.

incremento ou decremento da variável de controle: esta parte é executada cada vez que terminauma iteração. É aqui que a variável de controle é incrementada ou decrementada.

Exemplo:for (i=1,i<=5; i++) comando1;

A linguagem C permite utlizar várias variáveis de controle e realizar múltplas operações deincremento (ou decremento), sendo que cada operação deve ser separada por vurgula. Por exemplo,podemos implementar um comando for da seguinte maneira:

for (i=0,j=10; i<=5; i++,j--) comando1;

Neste caso, o comando for possui duas variáveis de controle (i e j) que são inicializadas com valoresi=0 e j=10. Em seguida, defnimos qual a condição para repetção (i<=5) e fnalmente as operações deincremento ou decremento das variáveis de controle (i++ e j- -).

Também podemos defnir condição para repetr envolvendo apenas as variáveis de controle.Exemplo:

for ( i=0,j=10; i<=j; i++,j-- ) comando1;

Após cada iteração, o comando atualiza os valores de i e j e então faz o teste da condição derepetção. Isso quer dizer que o comando for é capaz de prever mudanças tanto no lado esquerdo quantono lado direito do teste de parada. Para fnalizar, na linguagem C as variáveis de controle do comando forpodem receber incrementos ou decrementos de qualquer valor. Exemplo:

for (i=0,j=3; j<=300; i+=3,j*=i+1) comando1;

No trecho acima a variável de controle i recebe incrementos de 3 em 3 e a variável j éincrementada pela multplicação de j com i+1. Como i é incrementado antes de j, então o valor usado em jé sempre o obtdo após a atualização da variável i.

Quando há vários comandos que devem ser repetdos, estes comandos devem ser escritos entrechaves { }.

for (variável = valor inicial; condição para repetção; incremento ou decremento da variável) { comando1; comando2; }

Exemplo 1 (Incrementando a variável de controle em duas unidades por vez).

Programa para imprimir a soma dos números pares entre 20 e 40 (inclusive os extremos).

#include<stdio.h>#include<stdlib.h>

int main(){ int i, soma; soma = 0;

Instituto de Química – UNESP – Araraquara

41

Page 45: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

for (i=20; i<=40; i=i+2) soma = soma + i; print("Soma = %d \n\n", soma); system("pause"); return 0;}

Exemplo 2 (Usando 2 variáveis de controle).

Programa para imprimir a soma dos números entre 20 e 40 que possuem posição simétrica quantoao centro do intervalo. Ou seja, S1=20+40, S2=21+39, S3=22+38, …

#include<stdio.h>#include<stdlib.h>

int main(){ int i, j, soma; for (i=20,j=40; i<=j; i++,j--) { soma=i+j; print("%d + %d = %d \n\n",i,j,soma); } system("pause"); return 0;}

Como mencionado, as três partes do comando for são opcionais e existem casos onde essacaracterustca é muito útl. Por exemplo, quando desejamos criar um menu com várias opções.

Neste caso, é muito comum criarmos uma repetção infnita para assegurar que o programa seráencerrado somente quando a opção Fechar o programa for acionada.

Exemplo 3 (Criando uma repetção sem critério de parada).Programa que cria um menu para executar várias operações distntas em um número fornecido

pelo usuário.

#include <stdio.h>#include<stdlib.h>#include <math.h>

int main(){ foat N; int opt; print("Digite um numero positvo 'N': "); scanf("%f", &N); print("\n Este programa efetua as seguintes operacoes:\n\n"); print("1 - Imprime o numero lido\n"); print("2 - Imprime o dobro do numero lido\n"); print("3 - Imprime o quadrado do numero lido\n");

Instituto de Química – UNESP – Araraquara

42

Page 46: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

print("4 - Imprime a raiz quadrada do numero lido\n"); print("5 - Fecha o programa\n"); print("\n Que operacao deseja executar [1~5]? "); scanf("%d", &opt); for( ; ; ) // Laço sem critério de parada

{ switch (opt) {

case 1 : print("\n Valor de N: %.2f\n", N);break;

case 2 : print("\n Valor do dobro de %.2f: %.2f \n", N, 2*N);break;

case 3 :print("\n Valor do quadrado de %.2f: %.2f \n", N, N*N);break;

case 4 :print("\n Valor da raiz quadrada de %.2f: %.2f \n", N, sqrt(N));break;

case 5 : return 0;

default : print("\n Opcao invalida! \n O Valor digitado foi: %d \n", opt); }

print("\n Que operacao deseja executar [1~5]? ");scanf("%d", &opt);

} system("PAUSE");}

Observação: O comando for( ; ; ) é uma repetção sem critério de parada, equivalente ao comandowhile (1).

11.21. Diretiva #define

O uso mais frequente da diretva #defne é para dar nome simbólico a uma constante. Por exemplo,quando estamos escrevendo um programa sobre uma empresa que tem 200 funcionários, podemos defnirn_func como 200, e utlizar n_func no lugar do número de funcionários. Assim, quando houver alteração nonúmero de funcionários, basta alterar o valor do n_func na diretva #defne, ao invés de modifcar todo oprograma onde o número de funcionários é utlizado.

Exemplo:

#defne n_func 200#defne mensagem (Bem vindo!”

Instituto de Química – UNESP – Araraquara

43

Page 47: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

11.22. Strings

Uma string consiste em uma série de caracteres tratados como uma única entdade. Uma stringpode incluir letras, dugitos e caracteres especiais, inclusive espaço. As constantes strings são escritas entreaspas: (Ana Cristna Matos”, (Av. Dom Pedro II, 2183”, ((16) 3301-9500”.

Na linguagem C, string é um vetor (array) do tpo char, que armazena um texto formado porcaracteres, e termina com caractere nulo (\0). Uma string é acessada através de um ponteiro para oprimeiro caractere da string. O valor de uma string é o endereço de seu primeiro caractere. Portanto, em C,string é um ponteiro para o primeiro caractere do vetor.

Quando o compilador C encontra qualquer coisa entre aspas, ele reconhece que se trata de umastring constante. Por exemplo:

print("Digite um numero: ");

11.22.1. Declaração de strings

Uma string deve ser declarada da seguinte forma:

char nome_da_string[tamanho_da_string];

Exemplo:

char curso[30];char nome[40], sexo[20];

No exemplo acima, curso é uma string de 29 caracteres, nome é uma string de 39 caracteres e sexoé uma string de 19 caracteres.

Cuidado!

a) Ao entrar com os caracteres da string pelo teclado, se o número de caracteres digitados excedero tamanho da string (overfow), os últmos caracteres da string substtuirão outros dados da memória, oque pode afetar o funcionamento correto do programa.

b) É muito comum programadores iniciantes errarem o tamanho da string na declaração davariável. Como toda string termina com o caractere \0, então o tamanho da string tem que ser fornecido demaneira a caber o caractere de encerramento. Por exemplo, para criar uma string que vai armazenar umafrase com 40 caracteres, devemos usar o comando: char nome[41];

11.22.2. Função scanf() para manipulação de strings

A função scanf() lê caracteres de uma string até encontrar um caractere de espaço em branco,tabulação, nova linha ou indicador de fm de arquivo. Assim, a função scanf() não é apropriada para ler umtexto de múltplas palavras, pois somente a primeira palavra será armazenada. Exemplo:

#include<stdio.h>#include<stdlib.h>

int main(){ char nome[50];

print((Digite um nome: ();scanf("%s", nome);print("Ola %s, tudo bem?\n\n", nome);system("pause");

return 0;}

Instituto de Química – UNESP – Araraquara

44

Page 48: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

No exemplo acima, caso seja fornecido o nome: Maria Cristna de Oliveira, será impresso: OlaMaria, tudo bem? ao invés de: Ola Maria Cristna de Oliveira, tudo bem? Isso signifca que na variável nomefoi armazenada somente a string (Maria”.

Repare também que no comando scanf("%s", nome) não foi utlizado o operador & antes dosegundo argumento (nome). Isto se deve ao fato de que nome é o endereço inicial do vetor de caracteres.Portanto, a expressão nome é equivalente a &nome[0].

Para ler uma cadeia de caracteres com espaço deve usar gets(nome).

11.22.3. Outras funções para manipulação de strings

Seguem algumas funções próprias para manipulação de strings.

11.22.3.1. gets()

A função gets(), que também faz parte da biblioteca padrão stdio.h, é mais conveniente para aleitura de textos. Ela permite ler dados fornecidos pelo teclado, até que a tecla <Enter> seja pressionada.Veja o programa acima, alterado para o uso da função gets().

#include<stdio.h>#include<stdlib.h>

int main(){ char nome[50];

print((Digite um nome: ();gets(nome);print("Ola %s, tudo bem?\n\n", nome);system("pause");

return 0;}

No exemplo acima, caso seja fornecido o nome: Maria Cristna de Oliveira, será impresso: Ola MariaCristna de Oliveira, tudo bem? Isso signifca que na variável nome foi armazenada a string (Maria Cristnade Oliveira”.

Repare que no gets() não é necessário colocar o código de formatação ((%s”) como no scanf().

Cuidado! Quando é usado scanf() antes do gets(), o gets() não funcionará como esperado, devido oseguinte problema: quando digitamos um número e teclamos <enter>, o que é enviado é o número e o '\n'(<enter>), mas o scanf() só lê o número e deixa o '\n' no bufer de entrada padrão (stdin). Dau, se o próximocomando for gets(), o '\n' será lido automatcamente pelo gets(), e com isso o programa não vai ler(esperar) nenhuma entrada quando passar por esse gets(). Para resolver esse problema, coloque ocomando fflush(stdin); antes do comando gets(). Outra forma de resolver esse problema é colocando %*cno scanf() anterior ao gets(), para que o \n seja descartado. Exemplo: scanf(“%d%*c”, &num);.

11.22.3.2. puts()

A função puts(), que também faz parte da biblioteca padrão stdio.h, imprime uma única string porvez. A função puts() imprime a cadeia de caracteres e muda de linha, por isso não é necessário o \n.

Exemplo:

puts((Hello!”);puts(nome);

11.22.3.3. strcpy()

A função strcpy() faz parte da biblioteca padrão string.h. Esta função recebe dois endereços destrings e copia o conteúdo da segunda na primeira.

Instituto de Química – UNESP – Araraquara

45

Page 49: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Exemplo:

strcpy(mensagem, (Seja bem vindo!”);

Este comando copia a string (Seja bem vindo!” para a variável mensagem. Portanto, após essecomando, a variável mensagem passará a conter a string (Seja bem vindo!”.

Exemplo:

strcpy(rico, nome);

Este comando copia o conteúdo da variável nome para a variável rico. Portanto, caso a variávelnome tenha o conteúdo (Ana Helena”, após esse comando, a variável rico passará a conter (Ana Helena”.

11.22.3.4. strcmp()

A função strcmp() faz parte da biblioteca padrão string.h. Esta função serve para comparar oscaracteres contdos em duas cadeias. Caso você tenha uma variável string denominada nome, e queiraverifcar se o seu conteúdo é (fm”. Neste caso, como você quer comparar strings, deve fazer o seguinteteste: strcmp(nome,"fim")==0 ao invés de nome == "fim". Isto porque, o últmo comando comparará oendereço da string nome e não o seu conteúdo.

A função strcmp() retorna 0 quando o conteúdo das duas strings forem iguais e qualquer outronúmero positvo ou negatvo, caso os conteúdos das strings sejam diferentes.

Exemplo:

strcmp(rico, nome);

Este comando compara o conteúdo da variável rico com o conteúdo da variável nome (ambasvariáveis do tpo string) e retorna 0 caso os conteúdos sejam iguais e qualquer outro número caso osconteúdos sejam diferentes.

11.22.3.5. strlen()

A função strlen() faz parte da biblioteca padrão string.h. Esta função recebe uma string e retorna ocomprimento (número de caracteres) da string.

Exemplo:

tamanho = strlen(nome);

No exemplo acima, o comprimento da string nome será atribuudo à variável tamanho.

11.23. Funções

Funções são blocos de instruções que realizam tarefas especufcas, possuem suas próprias variáveise são agrupadas em uma unidade com um nome para referenciá-las .

As funções são utlizadas para a obtenção de programas modulares. É aconselhável a elaboração deprogramas modulares, pois dividindo o programa em pequenas partes, é mais fácil de criar, atualizar epodem ser testados separadamente e integrados somente após termos certeza de que funcionamcorretamente.

As funções evitam que o programador tenha que escrever o mesmo código repetdas vezes.Qualquer bloco de instruções que aparece mais de uma vez no programa é candidato a ser uma função. Asfunções permitem que o mesmo bloco de instruções seja executado com diferentes conjuntos de dados, ouem diferentes lugares do programa.

Para uma função ser executada ela deve ser chamada ou atvada por uma função. A única exceçãoé a função main() que é a principal função e é chamada ao iniciar a execução de um programa nalinguagem C. As funções print(), scanf(), gets(), strcpy() fazem parte da biblioteca do C e são adicionadasaos programas pela diretva #include, no momento da linkedição e são utlizadas por nós sem sabermosdetalhes de suas programações.

A estrutura geral de uma função é:

Instituto de Química – UNESP – Araraquara

46

Page 50: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

tpo nome_da_funcao(declaração dos parâmetros){ declaração de variáveis; instrução_1; . . . instrução_n; return valor;}

Veja no programa abaixo, um exemplo de função que calcula a área do curculo.

// Programa para calcular a área do curculo usando função.

#include<stdio.h>#include<stdlib.h>

foat area_do_circulo(foat); // protótpo ou declaração da função

int main() // programa principal{ foat r, a; print("Digite o raio de um circulo: "); scanf("%f", &r); a = area_do_circulo(r); // chamada da função print("A area deste circulo = %.2f\n\n", a); system("pause"); return 0;}

foat area_do_circulo(foat raio) // defnição da função{ foat area; area = 3.1415*raio*raio; return area;}

Uma função só pode ser chamada depois de ter sido declarada. A declaração da função (ouprotótpo da função) deve ser colocada no inucio do programa. O protótpo serve para defnir o tpo dafunção e os seus parâmetros. O tpo da função é o tpo do valor retornado pela função. O protótpo dafunção deve preceder a chamada e a defnição da função, mas caso a função seja defnida (escrita) antes dafunção chamadora, o protótpo pode ser omitdo.

No exemplo acima, o protótpo: foat areaddodcirculo(foat); informa que a função area_do_circuloé do tpo foat, isto é, retorna um valor do tpo foat, e recebe um argumento foat.

O comando return termina a execução da função, retorna o valor para a função que chamou eretorna o controle para a instrução seguinte à instrução que chamou a função.

Quando uma função não retorna nenhum valor, ela é do tpo void. Vários valores podem serpassados para uma função como argumentos, mas somente um valor pode ser retornado pela função. Umafunção pode também não receber nenhum argumento. Quando vários valores são passados para umafunção, estes devem ser separados por vurgula e cada um deve ter o seu tpo declarado. Ex. soma(int n1, intn2).

Na função areaddodcirculo() podemos eliminar a variável area e colocar a expressão3.1415*raio*raio diretamente no comando return, como segue:

Instituto de Química – UNESP – Araraquara

47

Page 51: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

foat area_do_circulo(foat raio){ return 3.1415*raio*raio;}

O termo parâmetro muitas vezes é utlizado como sinônimo de argumento, mas geralmente utliza-se "parâmetros" quando se faz referência às variáveis encontradas (entre parênteses) na defnição de umafunção e "argumentos" aos valores atribuudos a esses parâmetros. Os parâmetros servem para enviar dadospara uma função e podem ser utlizados livremente no corpo da função.

11.24. Criando Bibliotecas

Quando escrevemos programas em C, inicialmente colocamos as diretvas #include para incluir ouimportar as bibliotecas (stdio.h, stdlib.h, math.h) que serão utlizadas no programa.

Quando uma função ou estrutura é utlizada em vários programas, nós podemos criar umabiblioteca que contenha essa função ou estrutura e importar ou incluir essa biblioteca nos nossosprogramas.

Para criar uma biblioteca, siga os passos:

Comece um novo arquivo e digite a sua função ou estrutura normalmente, como seestvesse escrevendo um programa. Salve esse arquivo com extensão .h (h signifca header = cabeçalho), na própria pasta ondearmazena os seus programas. Por exembo: minhadbib.h

No seu programa, para usar uma função ou estrutura contda em uma biblioteca que foi criada:

Acrescente a diretva #include e o nome da biblioteca (que contém a função ou a estruturadesejada) entre aspas (().

Para incluir a biblioteca citada acima, seria #include”minhadbib.h”As aspas são utlizadas no lugar do < >, para indicar ao compilador para procurar esta biblioteca na

pasta onde está o programa, antes de procurar na pasta include.

11.25. Vetores

Vetor (ou matriz unidimensional) é uma coleção de dados do mesmo tpo que compartlham omesmo nome. É necessário 1 undice para individualizar um elemento da coleção. O undice utlizado nalinguagem C para identfcar a posição de um elemento do vetor começa sempre em 0 (zero) e vai até otamanho do vetor menos uma unidade.

Na declaração de um vetor, é colocado o nome do vetor seguido do tamanho do vetor entrecolchetes [ ].

Observação: Lembre que uma string é um vetor de char.

Exemplos de declaração:

char nome[50]; // nome é um vetor de 50 caracteresint temperatura[10]; // temperatura é um vetor de 10 números inteirosfoat nota[40]; // nota é um vetor de 40 números reais

nota[0] nota[1] nota[2] nota[39]

nota 8.2 3.6 9.5 ... 7.1

Instituto de Química – UNESP – Araraquara

48

Page 52: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

Cada elemento do vetor é referenciado pelo nome do vetor seguido pela posição do elementoentre colchetes [ ]. Exemplo: nota[0], nota[3], etc.

11.26. Matrizes

Matriz é uma variável capaz de armazenar vários elementos do mesmo tpo em uma estrutura comum único nome. As matrizes podem ser unidimensionais (vetores), bidimensionais ou multdimensionais.Estudaremos aqui as matrizes bidimensionais que necessitam de 2 undices para individualização de umelemento (o primeiro undice identfca a linha e o segundo undice identfca a coluna).

Exemplos de declaração:

foat tabela[5][3]; // tabela é uma matriz de 5 linhas e 3 colunas, cujo conteúdo é número real.int quadro[3][3]; // quadro é uma matriz de 3 linhas e 3 colunas, cujo conteúdo é inteiro.

quadro[0,0] quadro[0,1]

6 -1 0 quadro[0,2]quadro 2 8 14 quadro[1,2]

-5 9 7 quadro[2,2]

quadro[2,0] quadro[2,1]

Obs. Lembre-se que uma string (ou cadeia de caracteres) é um vetor de caracteres na linguagem C.Portanto, uma matriz de strings é um vetor contendo vetores de caracteres. No exemplo abaixo, nome éuma matriz de 20 linhas e 40 colunas, cujo conteúdo é caractere (ou seja, nome é um vetor de 20 cadeiasde caracteres, de tamanho 39).

char nome[20][40];

nome

Ana Carolina de Oliveira nome[0]

Carlos Alberto de Souza nome[1]

Denise de Matos nome[2]

... ...

Luis Vitor Vicentni nome[19]

11.26.1. Atribuindo valores a uma matriz

Existem duas formas de atribuir valores em matrizes. A primeira consiste em atribuir valores amatriz durante o seu processo de criação. Esse caso também é conhecido na literatura como inicializaçãode variáveis. Tal como foi visto na Seção Operador de atribuição, podemos criar uma variável com valorinicial da seguinte maneira:

int mat[2][2]={{-1 2},{5 -4}};

O comando acima cria uma matriz 2x2 com valores: mat=[−1 25 −4]

Quando o número de valores fornecidos na inicialização é menor que o número de elementos damatriz ou vetor, o compilador automatcamente preenche os termos restantes com zero. Esseprocedimento é muito útl para a construção de certas matrizes.

Exemplo 4 (Criando uma matriz identdade).Programa que cria e imprime uma matriz identdade de dimensão NxN, sendo N um valor defnido dentrodo programa.

Instituto de Química – UNESP – Araraquara

49

Page 53: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

#include <stdio.h>#include<stdlib.h>#defne N 2main(){ int MA[N][N]={0},i,j; for(i=0;i<N;i++) MA[i][i]=1; print("\n\n MA = \n ["); for(i=0;i<N;i++){ for(j=0;j<N;j++) print("%3d",MA[i][j]); if(i<N-1) print("\n "); else print(" ]\n\n"); } system("PAUSE"); return 0;}

Uma outra forma de atribuirmos valores em uma matriz consiste em fornecer os valores dostermos da matriz manualmente. Para isso usamos o comando for. Abaixo, apresentamos um exemplo deum trecho de programa para preenchimento de uma matriz 3x2 com valores inteiros provenientes doteclado.

#defne m 3#defne n 2

int mat[m][n], i, j; for ( i=0; i<m; i++ ) for ( j=0; j<n; j++ ) scanf("%d", &mat[i][j]);

Exemplo 5 (Exibindo a transposta de uma matriz).Programa cria uma matriz retangular de dimensão 3x2 com dados fornecidos pelo usuário e então imprimena tela a matriz de entrada e sua transposta.

#include <stdio.h>#include<stdlib.h>#defne m 3#defne n 2main(){ int i,j; foat A[m][n],TA[n][m]; print(" Este programa exibe a transposta de uma matriz A 3x2\n\n"); print("\t Digite os elementos da matriz.\n\n"); for ( i=0; i<m; i++ )

Instituto de Química – UNESP – Araraquara

50

Page 54: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

for ( j=0; j<n; j++ ){ print("\t Elemento A(%d,%d) = ",i+1,j+1); scanf("%f", &A[i][j]); TA[j][i]=A[i][j]; print("\n"); } print("\n A = \n ["); for(i=0;i<m;i++){ for(j=0;j<n;j++) print(" %7.2f",A[i][j]); if(i<m-1) print("\n "); } print(" ]\n\n\n A^T = \n ["); for(i=0;i<n;i++){ for(j=0;j<m;j++) print(" %7.2f",TA[i][j]); if(i<n-1) print("\n "); } print(" ]\n\n"); system("PAUSE"); return 0;}

11.27. Debugger

Em informátca, depurar um programa signifca detectar e eliminar erros do programa. O Dev-C++possui uma ferramenta para depuração (debugger) que auxilia nestas tarefas.

Para utlizar o depurador do Dev-C++:abra o programa que deseja depurarcrie pelo menos um ponto de parada de execução no programa, clicando na coluna

numerada à esquerda do código (a linha fcará com a cor de fundo vermelha)na parte inferior da janela do Dev-C++, clique em Depuradorpara começar a depurar o programa, clique em Depurar, na parte inferior da janelapara acompanhar o programa linha à linha, clique em Próxima linhapara pular para o próximo ponto de parada, clique em Contnuarpara saber o valor atual da variável, posicione a seta do mouse sobre a variável no programapara visualizar e acompanhar o valor de uma variável no Depurador, clique em Adicionar

marcador e digite o nome da variávelpara remover um marcador (variável) do Depurador, clique o botão direito do mouse sobre o

marcador e selecione Remover marcadorna chamada de uma função, para rastrear os passos da função, clique em Passar por dentropara parar o programa no meio da execução, clique em Parar Execução

Instituto de Química – UNESP – Araraquara

51

Page 55: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

inucio

L1, L2

X L1*L2/2

X

fm

Introdução à Ciência da Computação

12. Exercícios

1. Considere os valores das variáveis a seguir e determine o resultado das expressões lógicasabaixo:

A 2 ano 1996B -3 objeto ”relógio”C 1.5 fm verdadeiro

a) objeto = ”computador” ou A+B/A = C/B b) 3*A+B >= 2*C e ano = 2005c) TRUNC(C) <= ABS(A+B) ou 8*C MOD 5 = A e POW(B,2) > -A*B*Cd) não(fm) ou ROUND(C) <= 2*Ae) objeto = ”relógio” e ABS(B+C) <> Cf) SQRT(2*A-A*B*C+2*C) = 2-B e ano <> 2000

2. Determine os valores das variáveis numéricas X, Y e Z após a execução dos comandos abaixo: X 31 MOD 4Y ROUND(4.5)Z TRUNC(2.6) -2*XX SQRT(X*Y-2*Z+2) + ZY ROUND(ABS(Z) + Y/2)Z X + 3*Z MOD 8

3. Em quais dos seguintes pares é importante a ordem dos comandos? Isto é, em quais paresquando se muda a ordem dos comandos os resultados fnais se alteram?

a) A C b) B A c) B A d) A B B D C B B C B A 4. Baseado nos valores de entrada L1 e L2, que consttuem a base e a altura de um triângulo, o que

signifca o valor de sauda X?

5. Elabore um fuxograma para ler uma temperatura dada na escala Celsius (C) e imprimir aequivalente temperatura em Fahrenheit (F).

F=95

C+32

Instituto de Química – UNESP – Araraquara

52

Page 56: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

condição3

FVcondição1

inucio

condição2

comando4

comando5

comando1 comando2

comando3

fm

VV F F

Introdução à Ciência da Computação

6. Elabore um fuxograma para ler o raio (R) de um curculo e imprimir a sua área. Sabe-se que: Área= R2.

7. Elabore um fuxograma para ler a idade de um aluno e imprimir uma mensagem dizendo se ele émenor de idade ou maior de idade.

8. Elabore um fuxograma para ler um número e imprimir uma mensagem dizendo se o número lidoé par ou umpar.

9. Elabore um fuxograma para ler um número e imprimir uma mensagem dizendo se o número épositvo, negatvo ou nulo.

10. Dado o seguinte fuxograma:

Responda :

a) Se condiiço1 = V, condiiço2 = V e condiiço3 = F, quais os comandos executados?b) Se condiiço1 = F, condiiço2 = V e condiiço3 = V, quais os comandos executados?c) Se condiiço1 = V, condiiço2 = F e condiiço3 = F, quais os comandos executados?d) Quais os valores de condiiço1, condiiço2 e condiiço3 para que nenhum comando seja

executado?

11. Elabore um fuxograma para ler um número e imprimir uma mensagem dizendo se o númerolido é inteiro ou se o número tem a parte decimal.

12. Elabore um fuxograma para ler um ano e imprimir uma mensagem dizendo se o ano lido ébissexto ou não.

Utlize a seguinte regra: Um ano é bissexto se:- é divisuvel por 4 e não é divisuvel por 100, ou- é divisuvel por 400.

Exemplos:2008 é bissexto porque 2008 é divisuvel por 4 e não é divisuvel por 100.2000 é bissexto porque é divisuvel por 400.1900 não é bissexto porque apesar de ser divisuvel por 4, é também divisuvel por 100, e por outro

lado, não é divisuvel por 400.

Instituto de Química – UNESP – Araraquara

53

Page 57: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

N <= 15 F

V

inucio

fm

N

N 1

N N+2

Introdução à Ciência da Computação

13. Elabore um fuxograma para ler os valores dos coefcientes a, b, e c de uma equação dosegundo grau, e imprimir a única raiz real, ou as duas rauzes reais, ou uma mensagem dizendo que as rauzessão complexas.

14. Elabore um fuxograma para ler 3 números e imprimir o maior deles.

15. Uma empresa está dando um reajuste aos seus funcionários de acordo com o seguinte critério:25% para os funcionários que recebem até R$ 500,00 (inclusive);20% para os funcionários que recebem entre R$ 500,01 e R$ 1.000,00 (inclusive);15% para os funcionários que recebem acima de R$ 1.000,00.Elabore um fuxograma para ler o salário de um funcionário e imprimir o seu salário reajustado.

16. O que faz o seguinte fuxograma ?

17. Elabore um fuxograma para imprimir os números pares positvos menores que 100.

18. O que será impresso ao fnal de cada um dos seguintes fuxogramas ?

Instituto de Química – UNESP – Araraquara

54

Page 58: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

X < 2F

V

inucio

fm

Y

X 0Y 0

X X+1Y Y+2

X = 3F

V

inucio

fm

Y

X 0Y 0

X X+1Y Y+2

X < 2F

V

inucio

fm

Y

X 0Y 0

X X+1Y Y+2

X >= 0F

V

inucio

fm

Y

X 0Y 0

X X+1Y Y+2

Introdução à Ciência da Computação

a) b)

c) d)

19. Elabore um fuxograma para imprimir os 10 primeiros números positvos múltplos de 6.

20. Elabore um fuxograma para imprimir N termos de uma Progressão Aritmétca (PA) de elementoinicial a e razão r. Os valores de N, a e r devem ser lidos inicialmente.

21. Elabore um fuxograma para ler a idade de 500 vestbulandos e imprimir quantos dessesvestbulandos são menores de idade.

Instituto de Química – UNESP – Araraquara

55

Page 59: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

22. Elabore um fuxograma para calcular e imprimir a soma dos números entre 1 e 10 inclusive.

23. Elabore um fuxograma para calcular e imprimir a soma dos números inteiros positvos umparesinferiores ou iguais a um número N (positvo) lido inicialmente.

24. Elabore um fuxograma para calcular e imprimir o produto dos números inteiros entre 1 e 15(inclusive).

25. Elabore um fuxograma para ler um número e calcular e imprimir o fatorial deste número.

26. Elabore um fuxograma para ler o saldo de 1500 clientes de uma agência bancária, e imprimir:a) o saldo médio desses clientes;b) a porcentagem de clientes com saldo devedor.

27. Elabore um fuxograma para ler 2 números e imprimir o Máximo Divisor Comum (MDC) entreesses números.

Exemplo: MDC entre 15 e 54 é 3 pois:

Quociente = 3 1 1 254 15 9 6 3 MDC

Resto = 9 6 3 0

28. Elabore um fuxograma para ler o nome e a nota de 70 alunos e imprimir:a) quantos alunos foram reprovados (nota inferior a 5,0).b) a maior nota e o nome do(a) aluno(a) que obteve essa nota.

29. Elabore um fuxograma para ler o nome, a idade e o sexo de 50 funcionários de uma empresa, eimprimir:

a) a idade média dos funcionários do sexo masculino;b) a porcentagem de funcionários do sexo feminino, com idade superior a 30 anos;c) a menor idade e o nome do(a) funcionário(a) que possui essa idade.

30. Elabore um fuxograma para ler o saldo de 800 clientes de uma agência bancária e imprimir:a) a porcentagem de clientes com saldo devedor;b) o maior e o menor saldo.

31. Elabore um programa, em linguagem C, para ler 2 números e calcular e imprimir a médiaaritmétca destes números.

32. Elabore um programa, em linguagem C, para ler a medida da base e da altura de um triângulo eimprimir a área deste triângulo.

33. Um marceneiro precisa cortar vários pedaços de madeira de comprimento = 45 cm cada um.Elabore um programa, em linguagem C, para ler o comprimento da tábua (em metros) e imprimir aquantdade de pedaços e a sobra (em centmetros). Exemplo: Caso o comprimento da tábua seja 5 m, aquantdade de pedaços será 11 e a sobra será de 5 cm.

34. Uma entdade flantrópica faz sorteios cujos bilhetes contém números de 3 dugitos. O sorteio ébaseado no primeiro prêmio da loteria federal, sendo o número sorteado formado pelos três últmosdugitos do primeiro prêmio na ordem inversa. Por exemplo, se o primeiro prêmio for 51782, o númerosorteado será 287. Elabore um programa, em linguagem C, para ler o número do primeiro prêmio da loteriafederal (de 5 dugitos), em uma variável do tpo int, e imprimir o número sorteado.

Instituto de Química – UNESP – Araraquara

56

Page 60: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

35. Elabore um programa, em linguagem C, para ler a nota de um aluno e imprimir uma mensagemdizendo se ele foi aprovado (nota 5,0) ou reprovado.

36. Elabore um programa, em linguagem C, para ler 2 números, e escrever se o primeiro número émaior, menor ou igual ao segundo.

37. Elabore um programa, em linguagem C, para ler o salário de um funcionário e imprimir opercentual de reajuste e o salário reajustado de acordo com a seguinte tabela:

Salário Reajusteaté R$ 1.000,00 15%

acima de R$ 1.000,00 até R$ 2.000,00 12,5%

acima de R$ 2.000,00 10%

38. Um casal divide as despesas doméstcas mensalmente. Durante o mês, cada um anota asdespesas que paga e no fnal eles dividem a despesa total ao meio. Elabore um programa, em linguagem C,para ler as despesas pagas por cada um e imprimir quem deve a quem e o valor da duvida. Lembre quepode acontecer de nenhum precisar pagar para o outro, caso já tenham pago exatamente a metade dasdespesas. Exemplo:

ITEM MARIDO ESPOSA TOTALDespesas Pagas 2000,00 1400,00 3400,00

Valor Devido 1700,00 1700,00Diferença 300,00 -300,00

No exemplo acima, o programa deve imprimir a seguinte mensagem: A esposa deve pagar R$300,00 ao marido.

39. Elabore um programa, em linguagem C, para ler os lados de um triângulo e testar inicialmentese é possuvel formar um triângulo. Caso seja possuvel formar um triângulo, o programa deve imprimir umamensagem informando o tpo de triângulo formado: equilátero, isósceles ou escaleno. Caso contrário, oprograma deve imprimir uma mensagem informando que não é possuvel formar um triângulo.

40. Elabore um programa, em linguagem C, para ler um número inteiro N [1 7] e imprimir o diada semana equivalente ao número. Por exemplo: Se N = 2, então o programa deve imprimir (segunda-feira”.

41. Elabore um programa, em linguagem C, que deve ler um número real X e executar uma dasoperações abaixo:

a) Imprimir o dobro de X;b) Imprimir o valor da expressão X2-X;c) Imprimir a raiz cúbica de X;d) Imprimir o valor da expressão X3-X2+X-1.O programa deverá executar somente uma das opções.

42. Um supermercado está dando descontos no valor das compras, segundo a tabela abaixo:

Valor da compra Desconto

até R$ 50,00 0%

de R$ 50,01 a R$ 100,00 10%

acima de R$ 100,00 15%

Elabore um programa, em linguagem C, para ler o valor da compra de 80 clientes e imprimir paracada cliente o percentual de desconto e o valor a pagar após o desconto.

Instituto de Química – UNESP – Araraquara

57

Page 61: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

43. O que vai ser impresso no fnal de cada trecho do programa, em linguagem C, abaixo:

a) a=0; b) a=0;b=0; b=0;do do{ { b=b+2; b=b+2; a=a+1; a=a+1;} while (a<=2) } while (a>=3);print("%d",b); print("%d",b);

c) a=0; d) a=0;b=0; b=0;while (a<3) while (a<3)b=b+2; {a=a+1; b=b+2;print("%d",b); a=a+1;

}print("%d",b);

e) b=0; f) b=0;for (a=1;a<=3;a++) for (a=4;a>=1;a- -)b=b+2; b=b+2;print("%d",b); print("%d",b);

44. Um atleta faz fexões em série, com quantdades crescentes: na primeira série faz 1 fexão, nasegunda série faz 2 fexões, na terceira série faz 3 fexões e assim por diante. Ao fnal de algumas séries, elequer saber a quantdade total de fexões que fez. Por exemplo, se ele fez 5 séries, fez ao todo 15 fexões(1+2+3+4+5). Elabore um programa, em linguagem C, para ler o número de séries e imprimir o total defexões.

45. Elabore um programa, em linguagem C, para ler um número e imprimir o fatorial deste número.

46. Elabore um programa, em linguagem C, para ler o nome e a idade de 20 crianças e imprimir:a) a idade média;b) a maior idade e o nome da criança que tem essa idade.

47. Elabore um programa, em linguagem C, para ler o nome, a nota da primeira prova (P1) e a notada segunda prova (P2) de 50 alunos. O programa deve imprimir:

a) a média (M) de cada aluno, onde M =3P1+ 5P28

;

b) a porcentagem de alunos aprovados (M 5,0);c) a maior média e o nome do(a) aluno(a) que obteve essa média.

48. O que faz o seguinte programa em linguagem C?

#include<stdio.h>#include<stdlib.h>

int main(){ int n,s; s=0; print("Digite um numero inteiro: ");

Instituto de Química – UNESP – Araraquara

58

Page 62: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

scanf("%d",&n); while (n!=0) { if ((n>0) && (n % 2==0)) { s=s+n; } print("Digite outro numero inteiro, ou digite 0 para terminar: "); scanf("%d",&n); } print("%d\n",s); system("pause"); return 0;}

49. Elabore um programa, em linguagem C, para ler o nome e o preço de um númeroindeterminado de mercadorias, sendo o fm de dados identfcado pelo nome = FIM. O programa deveimprimir:

a) o preço médio dessas mercadorias;b) o maior preço e o nome da mercadoria de maior preço.

50. Elabore um programa, em linguagem C, para ler o nome, o sexo e o salário de um númeroindeterminado de funcionários de uma loja, sendo o fm de dados identfcado pelo nome = FIM. Oprograma deve imprimir:

a) o salário médio dos homens e o salário médio das mulheres;b) a porcentagem de funcionários do sexo masculino;c) o nome do(a) funcionário(a) que recebeu o maior salário, e o respectvo salário.

51. Elabore um programa, em linguagem C, para ler o nome e saldo de um número indeterminadode clientes de um banco, sendo o fm de dados identfcado pelo nome = FIM. O programa deve imprimir:

a) o saldo médio dos clientes;b) a porcentagem de clientes com saldo devedor;c) o nome do cliente que possui o menor saldo e o respectvo saldo.

52. Elabore um programa, em linguagem C, que deve ler um número real X e executar as operaçõesabaixo:

a) Imprimir o valor de X5;

b) Imprimir o valor de X!;

c) Imprimir o valor de XX;d) Imprimir o valor de X√ ∣X∣ ;e) Sair do programa.

O programa deverá executar apenas uma ação por vez e enquanto a opção escolhida for diferentede e o programa deverá solicitar uma nova opção para execução.

53. Elabore um programa, em linguagem C, para ler 3 números (x, y, N) e imprimir os N primeirosnúmeros naturais que são múltplos de x ou de y.

Exemplo: caso x=3, y=7 e N=8, o programa deve imprimir: 3 6 7 9 12 14 15 18

54. Elabore um programa, em linguagem C, para ler um número e imprimir uma mensagemdizendo se o número lido é primo ou não. Pode-se supor que o número lido seja maior do que 1. Obs. Umnúmero é primo se ele é divisuvel somente por 1 e por ele mesmo.

55. Elabore um programa, em linguagem C, para imprimir os N primeiros números da Sequência deFibonacci. O número N (N 2) deve ser lido inicialmente. A Sequência de Fibonacci é defnida como tendo o

Instituto de Química – UNESP – Araraquara

59

Page 63: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

primeiro termo igual a 0, o segundo termo igual a 1 e cada termo seguinte igual a soma dos dois termos imediatamente anteriores.

Sequência de Fibonacci: 0 1 1 2 3 5 8 13 21 34 ...

56. Elabore um programa, em linguagem C, para ler um número e imprimir uma mensagem dizendose o número lido é par ou impar, usando para isso uma função que retorne 1 para número par e 0 paranúmero umpar.

57. Elabore um programa, em linguagem C, para ler um número real e imprimir este númeroarredondado. O programa deve criar uma função para arredondar o número. Coloque repetção noprograma de forma que ao fnal de cada execução, o usuário possa decidir se deseja repetr o programa ounão.

58. Elabore um programa, em linguagem C, para ler n e k e imprimir o número de combinações de

n elementos tomados k a k (Cn , k=n!

(n−k )! k !) . Crie uma função fatorial para o cálculo do fatorial.

59. Elabore um programa, em linguagem C, para ler 10 números e armazená-los em uma variávelcomposta unidimensional (vetor) e determinar o menor número.

60 Elabore um programa, em linguagem C, para ler as temperaturas máximas registradas nosúltmos 30 dias e imprimir:

a) a menor temperatura máxima registrada;b) a maior temperatura máxima registrada;c) a média das temperaturas máximas registradas nestes 30 dias;d) o número de dias em que a temperatura máxima foi superior à média das temperaturas

máximas registradas.

61. Elabore um programa, em linguagem C, para ler os nomes e os pesos de 20 judocas e armazená-los em vetores denominados NOME e PESO. O programa deve imprimir:

a) o maior peso;b) os nomes dos judocas que têm o maior peso;

62. Um armazém trabalha com 250 mercadorias diferentes identfcadas pelos números inteiros de1 a 250. O dono do armazém possui 3 tabelas, uma com o nome de cada mercadoria, outra com o preço decada mercadoria, e uma outra tabela com a quantdade de cada mercadoria vendida no mês.

Elabore um programa, em linguagem C, para ler o nome, o preço e a quantdade de mercadoriasvendidas e armazená-los em variáveis compostas unidimensionais (vetores) denominadas MERCADORIA,PRECO e QUANTIDADE e imprimir:

a) os nomes das mercadorias que possuem o maior preço;b) os nomes das mercadorias que não foram vendidas nenhuma unidade;c) o faturamento mensal do armazém.

63. Elabore um programa, em linguagem C, para ler o nome e a nota de 60 alunos e armazenar osnomes dos alunos aprovados (nota 5,0) no vetor denominado APROVADO e os nomes dos alunosreprovados no vetor denominado REPROVADO. No fnal o programa deve imprimir:

a) o número de alunos aprovados;b) a lista dos nomes dos alunos aprovados;c) o número de alunos reprovados;d) a lista dos nomes dos alunos reprovados.

Instituto de Química – UNESP – Araraquara

60

Page 64: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

64. Elabore um programa, em linguagem C, para ler o nome e a idade de um númeroindeterminado de candidatos de um concurso, sendo o fm de dados identfcado pelo nome = FIM. Oprograma deve imprimir:

a) a idade média dos candidatos;b) a porcentagem de candidatos com idade superior a 40 anos;c) a maior idade e os nomes dos candidatos com essa idade (usar vetor).

65. Elabore um programa, em linguagem C, para imprimir o signo do zoduaco correspondente a umadata (dia e mês) lida. Coloque repetção no programa para que ao fnal de uma execução, o usuário possadecidir se deseja repetr o programa ou não.

A tabela abaixo mostra o últmo dia de cada mês e o signo correspondente.

mês últmo dia signo1 20 Capricórnio2 19 Aquário3 20 Peixes4 20 Áries5 20 Touro6 20 Gêmeos7 21 Câncer8 22 Leão9 22 Virgem

10 22 Libra11 21 Escorpião12 21 Sagitário

Obs: De 22/12 a 31/12 – Capricórnio

66. Elabore um programa, em linguagem C, para ler 10 números inteiros e armazená-los em umvetor e determinar e mostrar os números primos e as suas respectvas posições. Usar uma função (primo)que retorna 1 quando o número é primo e 0 quando não é primo.

67. Elabore um programa, em linguagem C, no qual o programa principal lê 8 números e imprime omaior e o menor deles. Os números maior e menor devem ser determinados através de funçõesdenominadas maior e menor, respectvamente.

68. Elabore um programa, em linguagem C, para ler o número do voo e a quantdade disponuvel devagas de 30 voos diários de uma companhia aérea e armazenar em vetores denominados VOO e VAGAS.Em seguida o programa deve ler o número do voo e o número de vagas a reservar neste voo, de umnúmero indeterminado de voos, sendo o fm dos dados identfcado pelo número do voo = 0. Para cadanúmero de voo, o programa deve atualizar o vetor VAGAS.

No fnal, o programa deve imprimir todos os números de voos e as respectvas vagas.

69. Elabore um programa, em linguagem C, para ler os elementos de uma matriz mxn e umnúmero. O programa deve imprimir:

a) a matriz original;b) a matriz resultante do produto entre o número lido e a matriz original.

70. Matriz diagonal é uma matriz quadrada cujos elementos que não pertencem à diagonal princi -pal são iguais a zero. Elabore um programa, em linguagem C, para ler os elementos de uma matriz nxn eimprimir:

a) a matriz;b) uma mensagem dizendo se a matriz é diagonal ou não.

Instituto de Química – UNESP – Araraquara

61

Page 65: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

71. Elabore um programa, em linguagem C, para ler os elementos de uma matriz mxn e imprimir:a) a matriz;b) a soma dos elementos de cada linha;c) a soma de todos os elementos da matriz.

72. Elabore um programa, em linguagem C, para ler os elementos de uma matriz nxn, verifcar se amatriz é simétrica (isto é, M[i][j]=M[j][i]) e imprimir:

a) a matriz;b) uma mensagem dizendo se a matriz é simétrica ou não.

73. Elabore um programa, em linguagem C, para ler os elementos de uma matriz A (mxn) e oselementos de uma matriz B (nxm) e imprimir:

a) a matriz A;b) a matriz B;c) a matriz produto A*B (mxm).

74. Uma matriz quadrada é dita matriz de permutação caso seus elementos sejam 0's ou 1's deforma que em cada linha e em cada coluna exista somente um elemento igual a 1. Exemplo:

[1 0 00 0 10 1 0]

Elabore um programa, em linguagem C, para ler os elementos de uma matriz nxn e verifcar se éuma matriz de permutação. O programa deve imprimir:

a) a matriz;b) uma mensagem dizendo se a matriz é de permutação ou não.

75. Elabore um programa, em linguagem C, para gerar a seguinte sauda, perguntando ao usuário onúmero máximo, que deve ser umpar e no máximo 9.

1 2 3 4 5 6 7 8 92 3 4 5 6 7 8

3 4 5 6 74 5 6

5

Instituto de Química – UNESP – Araraquara

62

Page 66: Julia Sawaki Tanaka Flávio Andrade Faria · 1. Classificação dos Computadores Os computadores podem ser classifcados segundo o porte e a fnalidade em algumas categorias mas estes

Introdução à Ciência da Computação

13. Bibliografia

[1] ASCENCIO, A.F.G.; CAMPOS, E.A.V. Fundamentos da Programação de Computadores. 3a ed.Longman do Brasil, 2012. 680 p.

[2] DEITEL, P.; DEITEL, H. C Como Programar. 6ª ed. Pearson Education - Br, 2011. 848 p.

[3] FARRER, H. et al. Algoritmos Estruturados. 3ª ed. LTC, 1999. 260 p.

[4] FEOFILOFF, P. Algoritmos em linguagem C. 1ª ed. Campus, 2008. 232 p.

[5] HOLLOWAY, J.P. Introdução à Programação para Engenharia. 1ª ed. LTC, 2006. 360 p.

[6] MIZRAHI, V.V. Treinamento em Linguagem C. 2ª ed. Pearson Education - Br, 2008. 423 p.

[7] PINHEIRO, F.A.C. Elementos de programação em C. 1ª ed. Booklman – Grupo A, 2012. 528 p. http://www.facp.pro.br/livroc/

[8] SCHILDT, H. C - Completo e Total. 3ª ed. Makron Books , 1997. 856 p.

Instituto de Química – UNESP – Araraquara

63