Você está na página 1de 72

FUNDAMENTOS DE

PROGRAMAÇÃO
Fundamentos de Programação – Parte I

SISTEMA DE ENSINO

Livro Eletrônico
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Sumário
Fundamentos de Programação – Parte I.............................................................................................................3
1. Fundamentos de Programação. . ...........................................................................................................................3
1.1. Tipos de Dados Primitivos.................................................................................................................................12
1.2. Declaração e Inicialização de Variáveis.....................................................................................................13
1.3. Utilização de Literais e Strings......................................................................................................................16
1.4. Categorias de Operadores e Precedência................................................................................................17
1.5. Controle de Fluxo de Programas e Repetição........................................................................................21
1.6. Sub-Rotinas...............................................................................................................................................................31
1.7. Mecanismos de Passagem de Parâmetros em Sub-Rotinas........................................................35
1.8. Variáveis Globais e Locais. . ..............................................................................................................................36
1.9. Recursividade (Recorrência). . .........................................................................................................................37
Resumo................................................................................................................................................................................38
Questões de Concurso................................................................................................................................................40
Gabarito...............................................................................................................................................................................50
Gabarito Comentado.....................................................................................................................................................51

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 2 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

FUNDAMENTOS DE PROGRAMAÇÃO – PARTE I


1. Fundamentos de Programação
Programar é o ato de ensinar uma máquina ou computador na execução de tarefas e na
tomada de decisões, por meio do processo de criação de conjuntos de instruções que formam
um algoritmo. Essas instruções são formadas por regras definidas para executar algo ou ge-
rar um resultado.
Programar também pode ser considerado o processo de escrita, teste e manutenção de
um programa de computador ou algoritmo. Diferentes partes de um programa podem ser es-
critas em diferentes linguagens. Mas afinal, o que é um algoritmo?
Algoritmo é uma “receita” que é utilizada para executar um conjunto predeterminado de
tarefas ou resolver algum problema com um número finito de passos.
Conforme essa definição de algoritmo, percebemos que, de forma inconsciente, executamos
diversos algoritmos em nosso dia a dia. Observe alguns exemplos abaixo:
• Algoritmo 1 – Somar 3 (três) números:
− Instrução 1: receba os três números a serem somados.
− Instrução 2: some os três números.
− Instrução 3: informe qual é o resultado da soma.
• Algoritmo 2 – Ir para a escola:
− Instrução 1: acordar cedo.
− Instrução 2: ir ao banheiro para tomar banho.
− Instrução 3: ir ao guarda-roupa.
− Instrução 4: escolher a roupa.
− Instrução 5: vestir a roupa.
− Instrução 6: preparar o café.
− Instrução 7: pegar uma condução.
− Instrução 8: descer próximo à escola.
• Algoritmo 3 – Receita de bolo:
− Instrução 1: bata em uma batedeira a manteiga e o açúcar.
− Instrução 2: junte as gemas uma a uma até obter o creme homogêneo.
− Instrução 3: adicione o leito aos poucos.
− Instrução 4: desligue a batedeira e adicione farinha de trigo, o chocolate em pó e o fermento.
− Instrução 5: bata as claras em neve e junte-as à massa de chocolate misturando
delicadamente.
− Instrução 6: junte uma forma retangular pequena com manteiga e farinha.
− Instrução 7: leve para assar em forno médio pré-aquecido por aproximadamente
30 minutos.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 3 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Perceba que, em cada algoritmo acima, tentamos “solucionar um problema”, mas, para
isso, torna-se necessário seguir os passos sequencialmente e com um fim estabelecido e
finito. É com base na representação dos algoritmos que um software de computador, os apli-
cativos e jogos funcionam.
Obviamente, para que os computadores sigam as instruções do algoritmo, eles precisam de
uma linguagem própria que chamamos de Linguagem de Programação. Essa linguagem é uma
forma de abstrair a comunicação dos seres humanos e computadores, fazendo o uso de códi-
gos e comandos que possibilitem a máquina entender o que é necessário para ser executado.
Existem diversas linguagens de programação utilizadas no mundo, tais como Java, PHP,
Python, C# etc. Cada uma delas possui regras, requisitos mínimos e sintaxe limitada para sua
utilização, pois possibilita uma padronização e organização na execução dos passos a serem
seguidos nas instruções dos algoritmos. Observe abaixo, um exemplo de código utilizando a
linguagem de programação Java e C++:

class MeuPrimeiroProgramaJava {

public static void main() {

System.out.print("Olá, mundo");

// Meu primeiro programa em C++

#include <iostream.h>

main()
{
cout << "Olá, Mundo!" << endl;
return 0;
}

Como cada linguagem de programação acima possui suas próprias regras e sintaxes es-
pecíficas, utilizaremos aqui um tipo de pseudocódigo, chamado português estruturado, que
nada mais é que uma linguagem de programação cujos comandos estão em português, o que
facilita a compreensão da execução do nosso programa.
Pseudocódigo é uma técnica textual de representação de um algoritmo. Nele, os verbos
(ações) disponíveis para utilização são limitados e empregados no imperativo, deve-se evitar as
expressões excessivamente longas, com o objetivo de eliminar a possibilidade de ambiguidade.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 4 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

A técnica é baseada em uma PDL (Program Design Language), que é uma linguagem ge-
nérica na qual é possível representar um algoritmo de forma semelhante à das linguagens
de programação.
A estrutura de um algoritmo em pseudocódigo pode variar um pouco de acordo com o autor
ou com base na linguagem de programação que será utilizada posteriormente, mas essas varia-
ções ocorrem apenas na sintaxe, pois a semântica deve ser exatamente a mesma.
A estrutura empregada para a construção de nossos pseudocódigos será a seguinte:
Algoritmo <nome do algoritmo>
//tem o objetivo de identificar o algoritmo, deve-se utilizar um //nome o mais significativo
possível, para facilitar a //identificação.
Var
<declaração de variáveis>
//aqui são informadas quais variáveis e seus respectivos tipos //serão utilizadas no
algoritmo.
Início
<instrução 1>
<instrução 2>
...
<instrução n>
// aqui será escrito a sequência de comandos que deve ser //executada para solucionar o
programa em questão.
Se <condição> então
início
<demais instruções>
fim
Senão
início
<demais instruções>
fim
Fim-Se
Fim <marca o fim do algoritmo>
Observe um exemplo abaixo de pseudocódigo que recebe um valor inteiro, fornecido pelo
usuário, e retorna esse valor inteiro no monitor:
algoritmo “exemplo 1”
var x: inteiro
inicio
leia(x)
escreva(x)

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 5 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

fim
Agora, vamos pegar esse primeiro exemplo e adicionar uma nova instrução, vamos adicio-
nar duas unidades (somar com 2) ao número digitado. Observe:
algoritmo “exemplo 2”
var numero, resposta: inteiro
inicio
escreva(“Digite um número inteiro: “)
leia(numero)
resposta ← numero + 2
escreva(“Resultado (numero + 2): “, resposta)
fim
Além do português estruturado, é possível representar um algoritmo por meio de Fluxo-
grama, que é uma espécie de diagrama utilizado para documentar processos, facilitando a
visualização e possibilitando encontrar falhas ou problemas na eficiência.
A utilização de fluxogramas para explicar um algoritmo facilita o entendimento de uma
maneira visual. Enquanto o algoritmo realiza uma análise passo a passo de um processo, o
fluxograma ajuda a explicar os passos de um programa de maneira gráfica.
Fluxograma é um tipo de diagrama, e pode ser entendido como uma representação esque-
mática de um processo ou algoritmo, muitas vezes feito por meio de gráficos que ilustram de
forma descomplicada a transição de informações entre os elementos que o compõem, ou seja, é
a sequência operacional do desenvolvimento de um processo, o qual caracteriza: o trabalho que
está sendo realizado, o tempo necessário para sua realização, a distância percorrida pelos docu-
mentos, quem está realizando o trabalho e como ele flui entre os participantes deste processo.
Portanto um fluxograma representa graficamente um algoritmo com ajuda de diferentes
símbolos, formas e setas para demonstrar um processo ou programa. O objetivo principal de
usar um fluxograma é analisar diferentes métodos.
Observe um exemplo abaixo, com um fluxograma simples mostrando como lidar com uma
lâmpada que não funciona:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 6 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Os fluxogramas são muito utilizados em projetos de software para representar a lógica


interna dos programas, mas podem também ser usados para desenhar processos de negócio
e o workflow que envolve diversos atores corporativos no exercício de suas atribuições.
O fluxograma pode ser definido também como o gráfico em que se representa o percurso
ou caminho percorrido por certo elemento (por exemplo, um determinado documento), por meio
dos vários departamentos da organização, bem como o tratamento que cada um vai lhe dando.
Os principais símbolos de um fluxograma são:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 7 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Outro detalhe importante é que, diferente do português estruturado, a maioria das lingua-
gens de programação são baseadas na língua inglesa, ou seja, para a programação, esse é o
idioma utilizado para a sintaxe das linguagens e para a maioria das referências.
Note que, na representação acima do fluxograma, há uma estrutura e sintaxe específicas
que precisam ser seguidas para melhor entendimento de qual será o resultado do algoritmo.
Toda linguagem de programação tem uma sintaxe a ser seguida, que é um conjunto de pa-
lavras e regras que definem o formato das sentenças válidas. Algumas palavras são reserva-
das, pois fazem parte da sintaxe da linguagem e não podem ser usadas para outro propósito
em um algoritmo que não seja aquele previsto nas regras de sintaxe. Tais palavras, também
são chamadas de palavras chaves. Nos exemplos acima que trabalhamos, as palavras chaves
estão em negrito.
As palavras chaves têm um fim específico no programa e não devem ser usadas para qual-
quer outra coisa além daquilo que elas se propõem a fazer.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 8 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Todo programa possui uma estrutura básica que estabelece como os comandos e as ins-
truções devem ser incluídos em um algoritmo, estabelecendo um começo, um meio e um fim.
Quando escrevemos um programa, ele deve conter uma sequência que será seguida, conforme
exemplificado abaixo:
Algoritmo “MeuPrimeiroAlgoritmo”
início
imprima(“Olá, mundo!”)
fim
Observe no código acima que todo algoritmo/programa deve começar com a palavra re-
servada “algoritmo” seguida de “início”, uma ou mais funções e finalizar com a palavra “fim”.
Observem que acabamos de ver duas regras: uma para criar um programa e outra para chamar
uma instrução, e a isso chamamos de sintaxe.
As palavras reservadas são componentes da própria linguagem ou algoritmo e não podem
ser redefinidas, ou seja, denominar elementos criados pelo desenvolvedor. Por exemplo, a pa-
lavra “início”, palavra reservada que indica o início de um bloco de código, não pode ser nome
de rótulos, constantes, tipos ou quaisquer outros identificadores no programa.
Há situações em que erramos algo no nosso algoritmo/programa que fere as regras de
sintaxe da linguagem que estamos usando (português estruturado, no nosso caso). Esses er-
ros são chamados de erros de sintaxe, pois impedem a execução de um programa. Por exem-
plo, temos que colocar “apóstrofo” ao invés de “aspas” ao indicar a mensagem que você quer
que o computador exiba na tela, impedindo o correto funcionamento do programa.
Outra prática bastante recomendada e utilizada nos algoritmos e nas linguagens de pro-
gramação são os comentários em partes que necessitam de explicação e que são ignorados
pelas linguagens, pois eles servem apenas para detalhar determinadas instruções.
Na maioria das linguagens, para criação de um comentário em uma linha, basta colocar os
caracteres “//” seguido do texto que é o seu comentário ou, caso você precise escrever textos
muito longos, utilizamos o comentário multilinhas que é feito com a sintaxe: “/*” seguido do
texto que pode estar em várias linhas seguido de “*/”. Observe o exemplo a seguir:
/*
* Esse é o meu primeiro algoritmo.
* O resultado dele é a exibição na tela do texto “Olá, mundo!”
*/
algoritmo “OláMundo”
inicio // início do programa
imprima(“Olá, mundo!”)
// a função utilizada escreve uma mensagem na tela
fim /* fim do programa */

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 9 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Os programas de computador escritos em alguma linguagem de programação precisam


ser compilados ou interpretados a fim de que sejam executados por um “computador”. As
instruções escritas em determinada linguagem são convertidas para linguagem de máquina,
e esse processo chamamos de compilação.
O obtivo de se utilizar compilador é fazer com que um programa escrito em uma linguagem de
programação seja compreendido pelo computador e possa executar todas as instruções escritas.
Vale salientar que não trataremos aqui como os compiladores e os interpretadores fun-
cionam, mas precisamos conhecer a sintaxe da linguagem de programação a fim de que o
compilador possa traduzir para a linguagem que a máquina possa executar.

A imagem acima representa uma ideia de um compilador, em que há um programa fonte


escrito em determinada linguagem de programação de alto nível, por exemplo, a linguagem de
programação Java, o compilador que analisa o programa fonte e traduz para uma linguagem
de máquina que será executado pelo computador.
Quando há um erro de sintaxe, o compilador informa ao usuário. A maioria dos compilado-
res são amigáveis e possuem um tratamento de erros que informa ao usuário qual é o tipo de
erro e onde (qual linha do programa, por exemplo) o erro acontece.
Vale acrescentar que, quando dizemos que determinado programa é portável (portabili-
dade), significa que ele pode ser executado em diferentes plataformas, tais como Windows,
Linux, Mobile etc., ou seja, podemos dizer que o compilador consegue traduzir uma linguagem
fonte para diferentes linguagens de máquina.
Dentre as principais propriedades de um compilador, vale destacar:
• Geração do código objeto correto e independentemente do tamanho do programa fon-
te, desde que a quantidade disponível de memória permita.
• Deve exibir mensagens de erro de forma clara, informando o local exato do erro.

Vala salientar que, mesmo que um programa seja compilado corretamente, isso não ga-
rante que o resultado sairá de forma correta, pois alguns erros podem acontecer e envolvem a
semântica do programa.
Destaco também a utilização de compiladores em editores de texto, quando digitamos
um texto e/ou uma palavra em um editor e ele sublinha, significa que o processador utiliza um

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 10 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

compilador que, na medida em que o usuário está digitando, o compilador está verificando
erros ortográficos e gramaticais.
Por fim, para exemplificar, dentre alguns compiladores temos: GCC, pacote de programas
responsáveis por fazer a compilação do seu código em C, C++, Objective-C, Fortran, Ada, Go, and
D. Além disso, o NetBeans é uma Ambiente de Desenvolvimento Integrado (IDE) mas também
compilador de códigos em diversas linguagens, como C, C++ e PHP. Em resumo, muitas IDEs
possuem compiladores na sua estrutura de ferramentas e que provavelmente são utilizados.
Outro meio de traduzir um código de alto nível para um código que o computador com-
preenda, ou seja, linguagem de máquina, é por meio da utilização de um interpretador. Para
traduzir um programa escrito em uma linguagem de alto nível, o interpretador gera um novo
código, chamado de código objeto.
O interpretador trabalha interpretando o código linha por linha à medida em que ele
vai sendo executado e, dessa forma, dizemos que o programa é interpretado. Vejamos a
imagem abaixo:

Na imagem acima, é representado o funcionamento do interpretador, em que as entra-


das são os programas fontes e as entradas do usuário, sendo que o interpretador produz a
saída correspondente.
O interpretador não traduz, mas realiza a interpretação do código fonte e de sua respectiva
entrada. Dessa forma, a interpretação é um processo mais lento e frequentemente requer mais
espaço em memória.
Por exemplo, a linguagem Java, que ficou muito popular, tinha como principal crítica a
lentidão dos programas gerados. A linguagem Java não era apenas interpretada, era chama-
da de híbrida pois gerava um código intermediário, chamado de byte code, que facilitava o
processo de interpretação.
Quando um programa é interpretado, em vez de traduzir de uma vez todo o programa
fonte para então executar, são traduzidas apenas pequenas unidades básicas do programa
para imediatamente serem executadas. Este é um dos principais objetivos da interpretação,
por isso dizemos que não há tradução, pois o interpretador refere-se não só ao programa que
simula a execução do código intermediário, mas a todo o processo.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 11 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

1.1. Tipos de Dados Primitivos


Os programas de computador processam entradas e retornam saídas em seu resultado.
As entradas e saídas são dados que podem ser: numéricos, letras, texto, imagens etc. Em um
programa, os dados podem ser representados em duas formas:
• Constantes: representam dados que não são modificados durante sua execução. Por
exemplo, ao definirmos uma constante matemática, chamada PI com valor aproximado
de 3,14, a cada execução do programa a referida constante terá o mesmo valor.
• Variáveis: representam dados que são manipulados e/ou possuem seu valor altera-
do durante a execução. Por exemplo, ao definirmos uma variável chamada média, que
representa a média aritmética entre dois números, poderá assumir diferentes valores
dependendo da quantidade de valores de entrada no programa.

Os tipos de dados primitivos são utilizados para otimização da memória ao definirmos uma
variável. São tipos básicos que devem ser implementados por todas as linguagens de progra-
mação, tais como: números reais, inteiros, booleanos (lógicos), caracteres e strings. Por exem-
plo, podemos ter uma variável nome, que armazena textos, já a variável idade pode armazenar
apenas números inteiros, na variável sexo podemos armazenar apenas um caractere (“M” ou “F”).
Devemos especificar em nossos algoritmos o tipo de cada variável.
Existem duas categorias na qual podemos classificar: tipos de dados primitivos e os tipos
de dados customizados.
Existem quatro tipos de dados primitivos, e, de acordo com a capacidade de memória ne-
cessária para cada variável, as linguagens subdividem estes tipos de dados, mas, no geral, os
tipos primitivos são:
• Inteiro: para valores numéricos negativos ou positivos, sem casas decimais. Por exem-
plo, uma variável que irá armazenar a idade de algum usuário.
• Real: para valores numéricos negativos ou positivos, com inclusão de casas decimais.
Por exemplo, uma variável que irá armazenar informações de peso ou de altura.
• Lógico (ou booleano): assume somente dois valores, verdadeiro ou falso. Reserva um bit
na memória, em que o valor 1 representa “Verdadeiro” e o valor 0 representa “Falso”. Por
exemplo, uma variável que representa o estado de uma lâmpada, entre acesa ou apagada.
• Texto: para variáveis que armazenam textos. Por exemplo, uma variável que irá armaze-
nar o nome de uma pessoa. O tipo de dado texto consiste em um único símbolo ou de
uma concatenação (conexão) de símbolos do alfabeto utilizado pelo português estru-
turado. Este alfabeto inclui todas as letras do alfabeto romano, os dígitos, “0, 1,..., 9”, e
os caracteres de pontuação, tais como “?”, entre muitos outros símbolos. Os elementos
do conjunto de valores do tipo de dado texto devem ser escritos, nos algoritmos, entre
aspas duplas, como, “Jose da Silva”.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 12 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Vale acrescentar que, particularmente em algumas linguagens de programação, há uma di-


visão dos tipos primitivos de acordo com o espaço necessário para os valores daquela variável.
Na linguagem Java, por exemplo, o tipo de dados inteiro é dividido em 4 tipos primiti-
vos: byte, short, int e long. A capacidade de armazenamento de cada um deles é diferente,
conforme segue abaixo:
• byte: é capaz de armazenar valores entre -128 até 127.
• short: é capaz de armazenar valores entre – 32768 até 32767.
• int: é capaz de armazenar valores entre – 2147483648 até 2147483647.
• long:écapazdearmazenarvaloresentre – 9223372036854775808até9223372036854775807.

O principal objetivo dessa divisão é otimizar a utilização da memória, pois em algumas lingua-
gens não é necessário especificar o tipo de dados da variável, o que pode ocorrer dinamicamente.
Porém é necessário informar o tipo de dados de cada variável e/ou constante em algoritmos.

Constantes são dados que simplesmente não variam com o tempo, ou seja, elas possuem sem-
pre um valor fixo. Variáveis representam dados que são manipulados e/ou possuem seu valor
alterado durante a execução. Variáveis e constantes necessitam de espaços em memória do
computador a serem reservados para guardar informações ou dados. Variáveis estão associa-
das a posições na memória RAM, armazenando diversos tipos de dados. Variáveis e constantes
possuem um nome identificador que abstrai o nome do endereço na memória que ela ocupa.

1.2. Declaração e Inicialização de Variáveis


As linguagens de programação utilizam diferentes formas para declarar e inicializar variá-
veis, por isso, como não trataremos uma linguagem específica, será exemplificado utilizando-se
o português estruturado para facilitar o entendimento.
O conteúdo de uma variável pode ser alterado, consultado ou apagado diversas vezes
durante a execução de um programa, porém o valor apagado é perdido. Já as constantes são
fixas e não podem ser alteradas.
Vale destacar que, para atribuir valor a uma variável ou constante, é necessária uma no-
tação específica para associar um determinado valor, ou seja, para guardar o conteúdo no
endereço de memória específico. Vale lembrar que cada linguagem de programação adota
uma maneira de representá-la.
Como forma de demonstrar a inicialização de variáveis, iremos utilizar a notação de atri-
buição seta (←), muito utilizada no Português Estruturado. Observe um exemplo abaixo:
constante real pi ← 3,14;
constante inteiro meses ← 12;
variavel inteiro idade ← 18;

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 13 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

variavel real peso ← 23.14;


logico repetente;
texto nome ← “Antonio”, sobrenome ← “Sousa”;
As variáveis são o elemento básico de processamento. A sua declaração permite definir
que tipo de informação irá conter. A declaração de variáveis segue as seguintes regras:
• O nome tem de começar por uma letra ou pelo caractere sublinhado (_) e não pode ser
uma palavra reservada da linguagem.
• O valor de inicialização tem de ser compatível com tipo de variável definido.
• Se o valor de inicialização for omitido, a variável é inicializada com os valores por defeito.

• É possível definir mais que uma variável utilizando o caractere vírgula (,).
• É possível omitir a palavra variável.

As constantes seguem as mesmas regras que a declaração de variáveis, exceto que não é
possível omitir o valor de inicialização.
Na declaração de variáveis, podemos utilizar a palavra reservada “var”, de acordo com a
instrução abaixo:
var
<identificador 1>, < identificador 2>,..., <identificador n>: <tipo das variáveis>;
Em que <identificador 1> é o nome (identificador) de uma variável e <tipo das variáveis>
determina o tipo de valor que as variáveis poderão receber. Os identificadores das variáveis
são usados para referenciar as variáveis dentro do algoritmo. Devem ser claros e precisos,
dando uma ideia do “papel” da variável no algoritmo.
Existem regras básicas para formação dos identificadores, são elas:
• Os caracteres aceitos são números, letras maiúsculas, letras minúsculas e caractere
sublinhado (_).
• O primeiro caractere deve ser sempre letra ou sublinhado.
• Não é permitido espaços em branco ou caracteres especiais, tais como: @, +,$,%.
• Não podemos utilizar palavras reservadas como identificadores.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 14 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Exemplo de identificadores válidos:


• A
• A
• Nota
• NOTA
• X36
• IDADE
• _peso
• _nome

Exemplo de identificadores inválidos:


• 3a – não pode iniciar com número.
• If – não pode utilizar palavra reservada.
• Nota(3) – não pode utilizar parênteses.
• Nota 1 – não pode utilizar espaço em branco.

Para identificar uma variável ou uma constante, devemos utilizar um nome simbólico, po-
rém é importante lembrar que palavras-chaves não devem ser utilizadas para esse fim, ou
seja, palavras associadas a comandos e definições da linguagem (tais como if, for e int) são
reservadas, não podem ser utilizadas para o nome de variáveis e/ou constantes.
Utilizando o português estruturado, observe um exemplo de declaração de variáveis e constantes:
idade, numeroApartamento: inteiro;
nomePessoa, endereço: texto;
mediaSalario, altura: real;
Os nomes de variáveis podem ser de qualquer tamanho, sendo que usualmente nomes
significativos devem ser utilizados.

Algumas linguagens de programação fazem distinção entre caracteres maiúsculos e caracte-


res minúsculos, de forma que a variável Salariomedio é diferente de SalarioMedio, a constante
Pi é diferente de PI. A essas diferenças chamamos case sensitive, que significa que caracteres
em caixa alta e em caixa baixa são tratados de modo diferentes.

Conforme observado, diversas variáveis de um mesmo tipo podem ser declaradas em um


mesmo comando, sendo que o nome de cada variável deve ser separado por vírgulas. Além dis-
so, variáveis podem ser também inicializadas enquanto declaradas, observe o exemplo abaixo:
constante
inteiro NotaMaxima ← 100;

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 15 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

var
inteiro idade ← 0;
real altura ← 1,79;
logico statusLampada ← 0; (onde o valor 0 é apagada e 1 é acesa)
Texto nomePessoa ← “Jose da Silva”;
Uma variável cujo valor não será alterado pelo programa pode ser qualificada como cons-
tante. Vale ressaltar que a constante NotaMaxima não poderá ter seu valor alterado. Evidente-
mente, constantes deste tipo devem ser inicializadas no momento de sua declaração.

1.3. Utilização de Literais e Strings


Existem tipos de dados que podem ser decompostos, é o caso das literais ou strings. Elas
são utilizadas para armazenar caracteres agrupados, ou seja, caso seja necessário represen-
tar o nome de uma pessoa, como “JOAO”, é possível decompor em caracteres: “J”, “O”, “A”, “O”.
Alguns detalhes importantes sobre manipulação de strings:
• Sempre devemos utilizar aspas (“”):

texto ← “O nome é:”;


• Para representar o valor vazio para uma string, devemos seguir o exemplo abaixo:

texto ← “”;
• Quando comparamos duas strings, as diferenças entre maiúsculas e minúsculas são
desconsideradas, então:

se (“CASA” = “casa”) entao = Verdadeiro;


Muitas linguagens de programação, tais como Java, C#, PHP etc., possuem funções que
permitem a manipulação de strings (caracteres/literais) e isto facilita bastante a sua utiliza-
ção. Abaixo, segue um exemplo de um algoritmo com strings:
/*
* Esse é o meu primeiro algoritmo utilizando strings
* O resultado dele é a exibição na tela do texto “Olá, mundo!”
*/
Algoritmo “MeuExemploComStrings”
var
nome1: texto;
nome2: texto;
meutexto: texto;

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 16 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

inicio
meutexto ← “Resultado: “;
escreva(“Digite o nome 1:”);
leia(nome1);
escreva(“Digite o nome 2:”);
leia(nome2);
se (nome1 = nome2) entao
escreva(texto, “Iguais”);
senao
escreval(texto, “Diferentes”);
fimse
fim

1.4. Categorias de Operadores e Precedência


Para solucionar alguns problemas, os algoritmos utilizam expressões matemáticas, como
operadores de adição, subtração, multiplicação etc. Além disso, existem outros mais comple-
xas, como raízes, exponenciais, logaritmos.
Uma expressão que utiliza a operação de adição, representa uma soma entre dois núme-
ros que ao final produz um resultado. É nesse momento que entram os operadores nos algorit-
mos, pois eles possuem o objetivo de relacionar valores para resultar um outro valor. Existem
três tipos de operadores: aritméticos, lógicos e relacionais.
A representação de alguns operadores pode mudar de acordo com cada linguagem de pro-
gramação, mas geralmente todas utilizam o mesmo símbolo.

Operadores Aritméticos

Os operadores aritméticos definem as operações que podem ser realizadas sobre os nú-
meros inteiros e reais. Para os inteiros, as operações aritméticas são a adição, subtração,
multiplicação e resto da divisão. Já para os números reais, as operações aritméticas são a
adição, subtração, multiplicação e divisão.
Na linguagem do português estruturado, os operadores aritméticos correspondentes às
operações definidas sobre os inteiros são:
• + (adição).
• - (subtração ou menos unário).
• ∗ (multiplicação).
• \ (divisão inteira).
• % (resto, aplicado apenas aos valores inteiros).

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 17 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Com base nos operadores acima, podemos escrever expressões aritméticas que podem
envolver constantes e/ou variáveis inteiras. Como exemplo, suponha que idade1, idade2 e
idade3 sejam variáveis do tipo inteiro. Então, temos que:
nota1 + nota2 + nota3;
nota1 – Nota2 ∗ Nota3%2;
- 7 + 4 ∗ 8 \ 2;
Todas as expressões aritméticas acima são válidas na linguagem português estruturado.
A precedência de operadores determina a ordem em que os operadores são processados.
Aqueles com maior precedência são processados primeiro. Na expressão “5*3+2”, o operador
de multiplicação (*) tem maior precedência que o operador de adição (+). Podemos dizer que
o valor da expressão é igual a 17, se avaliarmos 5 * 3 primeiro e, depois, a expressão 15 + 2.
Da mesma forma que na matemática os operadores de multiplicação e divisão têm pre-
cedência de execução em relação aos operadores de soma e subtração. Vale destacar que, se
tiver parênteses na expressão, estes têm precedência ainda maior. Os operadores de mesma
prioridade são interpretados da esquerda para a direita.
Abaixo, listamos a procedência de operadores aritméticos:

Operador Símbolo Prioridade


Multiplicação * 2º
Divisão / 2º
Adição + 3º
Subtração - 3º
Exponenciação ^ 1º

A seguir, demonstraremos um algoritmo utilizando operadores aritméticos:


/*
* Esse algoritmo tem o objetivo de somar dois números inteiros;
*/
Algoritmo “Quadrado da soma de 2 inteiros”
var
a, b, quadrado: inteiro;
inicio
escreva(“Entre com o primeiro inteiro:”);
leia(a);
escreva(“Entre com o segundo inteiro:”);
leia(b);
quadrado ← (a+b)*(a+b);
escreva(“O quadrado da soma dos inteiros lidos e:”, quadrado );
fim
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 18 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Operadores Relacionais

São utilizados para comparar números e literais, retornando valores lógicos. Não existe
um tipo específico para a representação de valores lógicos (verdadeiro e falso). Entretanto
qualquer valor pode ser interpretado como um valor lógico.
Podemos definir que 0 (zero) representa falso e qualquer outro valor representa verdade.
Também é usual representar verdade com o valor 1 (um). Para produzir um valor lógico (ver-
dadeiro ou falso), usamos os operadores relacionais.
Dessa forma, podemos comparar dois valores e temos como resultado da avaliação de um
operador relacional 0, se a comparação é falsa, e 1, se a comparação é verdadeira.
Abaixo, listamos os operadores relacionais:

Operador Resultado
x=y Verdade se x for igual a y
x!=y ou x<>y Verdade se for diferente de y
x<y Verdade se x for menor de y
x>y Verdade se x for maior que y
x<=y Verdade se x for menor ou igual a y
x>=y Verdade se x for maior ou igual a y

Operadores Lógicos

Os operadores lógicos são “and”, “or” e “not”, que significam “e”, “ou” e “não”, sendo utilizados
respectivamente para conjunção, disjunção e negação. Algumas linguagens oferecem operado-
res lógicos que funcionam da mesma forma que os operadores da lógica matemática. A tabela
abaixo apresenta os operadores lógicos, considerando a linguagem do português estruturado:

Operador
E/And
Ou/Or
Não/Not

Os operadores lógicos utilizam dados lógicos ou booleanos, pois o objetivo continua o


mesmo: relacionar valores para resultar em um outro valor. Isso quer dizer que os operadores
lógicos podem relacionar os seguintes valores: verdadeiro/falso, 1/0, aceso/apagado, ligado/
desligado, true/false, e o resultado de uma expressão lógica também é outro valor lógico.
Abaixo, listamos as tabelas verdades dos operadores lógicos:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 19 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Tabela Tabela
Tabela Operador “E”
Operador “OU” Operador “NÃO”
V–eV=V V – ou V = V Não V = F
V–eF=F V – ou F = V Não F = V
FeV=F F ou V = V
FeF=F F ou F = F

Uma tabela verdade é um dispositivo utilizado no estudo da lógica matemática. Com o uso
dessa tabela, é possível definir o valor lógico de uma proposição, isto é, saber quando uma
sentença é verdadeira ou falsa.
Os operadores aritméticos, lógicos e relacionais devem seguir regras essenciais para a
correta avaliação de expressões:
• Observar a prioridade dos operadores, ou seja, operadores de maior prioridade devem
ser avaliados primeiro. Se houver empate com relação à precedência, então a avaliação
se faz da esquerda para a direita.
• As avaliações que estejam dentro de parênteses em expressões possuem o poder de
maior prioridade dos demais operadores, forçando a avaliação da subexpressão em seu
interior primeiro que as avaliações que estejam fora dos parênteses.

Entre a utilização desses três operadores (aritméticos, relacionais e lógicos), existe uma certa
prioridade de avaliação: os aritméticos devem ser avaliados primeiro; em seguida, são avalia-
das as subexpressões com operadores relacionais e, por último, os operadores lógicos.

Operador de Concatenação – quando precisamos juntar dois valores ou variáveis do tipo


texto, utilizamos esse operador. É muito utilizado para compor mensagens ao longo do progra-
ma. Na maioria das linguagens de programação, o símbolo usado para a concatenação é o mes-
mo da adição. Assim, a expressão “João da”+”Silva” teria como resultado o texto”João da Silva”.
A utilização do operador de concatenação é muito comum em expressões envolvendo variáveis
do tipo texto, caso contrário será necessário algum tipo de conversão a fim de torná-lo um texto.
Operador de Atribuição – este operador é usado para definição de valor de uma variável,
ou seja, é guardado na memória apontada pela variável com o valor posicionado do lado direi-
to do operador de atribuição. Em algoritmo, é representado pelo símbolo: “←” (seta). Em algu-
mas linguagens de programação é utilizado o símbolo “:” (dois pontos). A sintaxe do comando
de atribuição é: NomedaVariavel ← expressão. Por exemplo, media ← 6.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 20 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

1.5. Controle de Fluxo de Programas e Repetição


Este tópico permite interferir na sequência de instruções executadas dependendo de uma
condição de teste, ou seja, o algoritmo terá caminhos diferentes para decisões diferentes.
Os algoritmos possuem um fluxo de execução único, ou seja, as instruções que são execu-
tadas são as mesmas, independentemente dos valores de entrada, e irão produzir resultados
diferentes dependendo desses valores. Porém, na realidade, algumas vezes executamos de-
terminados procedimentos dependendo de uma série de situações ou condições.
Quando construímos um algoritmo, necessitamos determinar ações diferentes dependen-
do da avaliação de certas condições. O uso de condições ou comandos de decisão muda o
fluxo das instruções de um algoritmo ou programa, permitindo que diferentes instruções ou
comandos sejam executadas de acordo com a entrada do programa. Por exemplo:
se (media >= 6.0) entao
aluno = aprovado
Observe esse pequeno código representado por meio do uso de um fluxograma:

Em um programa que apresente a média escolar de um aluno, é necessário, além de


calcular a média de um aluno, apresentar se ele está aprovado ou reprovado segundo a con-
dição estabelecida para o valor da variável média, em nosso caso, se a média do aluno for
igual ou maior que 6.
O controle de fluxo de um algoritmo e/ou programa pode ser classificado de quatro for-
mas diferentes, sendo essa classificação baseada na organização lógica existente em cada
situação. Essa classificação diferencia uma estrutura de decisão como: decisão simples, de-
cisão composta, decisão encadeada e decisão de múltipla escolha.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 21 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Controle de Fluxo Simples ou Estrutura Condicional Simples

O comando Se...Fim_Se – nesse tipo de controle, uma instrução/comando ou um conjunto


de instruções é executado somente se a condição especificada retornar o valor verdadeiro.
Caso o resultado seja falso, nenhuma das instruções constantes na estrutura da seleção será
executada, e a execução das instruções será desviada para a instrução seguinte à estrutura de
seleção. Observe a estrutura meio do português estruturado:
se (<condição>) então
<instruções para a condição verdadeira>
fim_se
<instruções para a condição falsa ou após ser verdadeira>
Por exemplo:
Algoritmo media_de_numeros;
Var
media: real;
A: inteiro;
B: inteiro;
Inicio
leia(A);
leia(B);
media ← (A+B)/2;
se (media > 6.0) então
escreva(“Aluno aprovado”);
fim_se
escreva(“Fim do Algoritmo”)
Fim
Note que, no algoritmo acima, após a palavra reservada var, há a definição dos tipos de
variáveis. Em seguida, é solicitada a leitura dos valores para as variáveis A e B e, por fim, esses
valores são atribuídos à variável média, que realiza a operação desejada.
De acordo com o resultado calculado na variável média, há uma condição que permitirá
imprimir o resultado “aluno aprovado” caso esta seja maior que 6.0, e, não sendo, o programa
apenas imprime a mensagem “fim do algoritmo”, encerrando o programa sem apresentar a
média calculada, pois a condição estabelecida resultou em falso.

Estrutura Condicional Composta

O comando Se...Senão...Fim_Se – na estrutura de decisão composta, uma instrução ou


um conjunto de instruções é executado caso o teste condicional especificado retornar o valor
verdadeiro e, caso o resultado do teste seja falso, outra instrução ou um conjunto de instru-
ções é executado.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 22 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Assim, a condição composta permite desviar o fluxo para dois caminhos distintos. Obser-
ve a representação desta estrutura por meio do português estruturado:
se (<condição>) então
<instruções para a condição verdadeira>
senão
<instruções para a condição falsa>
fim_se
<continuação das instruções do algoritmo>
Por exemplo:
Algoritmo par_impar;
Var
X: inteiro;
Inicio
leia(X);
se (X mod 2) = 0 então
escreva(X, ‘é par’);
senão
escreva(X, ‘é ímpar’);
fim_se
escreva(‘Fim do Algoritmo’);
Fim
Note que, após a palavra reservada var, em que há uma definição do tipo da variável, é
solicitada a leitura do valor para a variável X. Em seguida é verificado o resto da divisão inteira
do valor de X por 2, ou seja, é realizada uma verificação se X é divisível por 2. Nessa condição,
dependendo do resultado da avaliação da expressão “X mod 2=0”, é mostrado o resultado “X é
par”, caso seja verdadeiro ou “X é ímpar” caso seja falso.
Observe esse pequeno código por meio do uso de um fluxograma:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 23 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Estruturas de Decisão Encadeadas

Uma instrução de condição pode ser inserida dentro de outra, formando uma estrutura de
condição, chamada de estrutura de decisão encadeada. O encadeamento dessas instruções
também é conhecido como aninhamento de instruções de condição.
O encadeamento de instruções permite tornar uma solução algorítmica ainda mais eficien-
te, uma vez que diminui testes condicionais desnecessários.
Observe o exemplo a seguir:
/*
* Esse algoritmo tem o objetivo de calcular a média de duas notas.
*/
Algoritmo media_de_notas;
Var
media: real;
Nota1: inteiro;
Nota2: inteiro;
Inicio
leia(Nota1);
leia(Nota2);
media ← (Nota1 + Nota2)/2;
se (Média >= 5.0) entao
se (Média >= 7.0) entao
escreva(“Aluno = Aprovado”);
senão
escreva(“Aluno = Recuperação”);
senão
escreva(“Aluno = Reprovado”);
fim_se
escreva(“Fim do algoritmo”);
Fim

Estruturas de Decisão de Múltipla Escolha

Há uma estrutura de decisão utilizada em avaliações de valores para uma variável, é a de-
cisão de múltipla escolha. Diferentemente das estruturas condicionais anteriores, nesse caso
o teste condicional não retorna um valor lógico, mas sim um valor inteiro, real ou caractere.
Outra diferença está no fato de que essa estrutura permite desviar o fluxo de execução
para caminhos variados, ou seja, é verificada a igualdade da expressão de decisão no teste

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 24 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

condicional com as opções definidas, resultando na execução de um bloco, ou de uma única


instrução específica, para cada opção.
O comando Caso – é adequado quando precisamos escolher uma entre várias alternati-
vas previamente definidas, por exemplo, em um menu ou paleta de cores. Para cada “caso”,
é verificada a constante cujo valor é igual à expressão, depois são executados todos os co-
mandos seguintes. Caso não haja o “caso”, então é executado o comando associado ao caso
padrão/contrário. Vejamos abaixo sua representação no português estruturado:
Caso <valor> seja:
<primeiro valor>: <bloco de instruções>
<segundo valor>: <bloco de instruções>
<terceiro valor>: <bloco de instruções>
<quarto valor>: <bloco de instruções>
...
<N valor>: <bloco de instruções>
<caso contrário/padrão (nenhuma das opções acima)>: <bloco de instruções>
Fim_Caso
Observe um exemplo utilizando essa estrutura:
Caso (Número):
Caso 1: Cor Vermelha;
Caso 2: Cor Verde;
Caso 3: Cor Azul;
Caso 4: Cor Amarela;
Caso 5: Cor Rosa;
Caso 6: Cor Preta;
Caso Outro: Cor inexistente;
Fim_Caso
Vejamos um exemplo com a utilização da linguagem português estruturado.
Algoritmo escreve_mes;
Var
NumerodoMes: inteiro;
Inicio
Leia (numerodomes);
Caso (numerodomes) seja:
1: escreva(“Janeiro”);
2: escreva(“Fevereiro”);
3: escreva(“Março”);
4: escreva(“Abril”);
5: escreva(“Maio”);
6: escreva(“Junho”);
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 25 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Caso Contrário:
escreva(“Mês inválido”);
Fim_Caso
Fim
Observe esse código por meio do uso de um fluxograma:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 26 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Vale destacar que a maioria das linguagens de programação de programação utiliza coman-
dos parecidos quanto às estruturas de decisão até aqui estudadas. O comando Se-Então-Senão
nas linguagens de programação utiliza If-Then-Else, no inglês.

Estruturas de Repetição

Diariamente, realizamos atividades na qual a repetição de procedimentos é necessária


para executar as tarefas do dia a dia, e, em alguns momentos, essas tarefas são repetidas
várias vezes e se encerram quando atingimos o objetivo pretendido.
Em algumas de nossas tarefas diárias, quando tentamos fechar a tampa de uma garrafa
pet, giramos a tampa várias vezes até que a garrafa feche completamente e fique apertado o
suficiente para não vazar líquido. Note que, durante esse processo, é verificado a cada volta, se
a tampa está bem apartada.
As estruturas de repetição são extremamente úteis para repetir uma série de operações seme-
lhantes que são executadas para todos os elementos de uma lista ou de uma tabela de dados, ou
simplesmente para repetir um mesmo processamento até que uma certa condição seja satisfeita.
De forma análoga, podemos perceber diversas atividades da nossa rotina são repetitivas.
Durante uma fila de banco, por exemplo, o caixa chama o próximo da filha enquanto não chegar
ao último da fila. Outras repetições podem ser qualificadas com antecedência.
Em algoritmos, essas estruturas tratam uma forma de executar blocos de comandos so-
mente sob determinadas condições, mas com a opção de repetir o mesmo bloco quantas
vezes for necessário.
As estruturas de repetição são um modo que temos para executar blocos de comandos
obedecendo determinadas condições, contando também com a opção de repetir este bloco
quantas vezes precisarmos.
Observe que as repetições têm uma característica em comum que se refere ao fato de que
existe a verificação de condição de repetição, que pode ser representada por um valor lógico,
determinando se a repetição (comando) deve ou não prosseguir. Isso serve de base para a
implementação dos comandos de repetição em algoritmos. Ao invés de escrever a mesma
instrução várias vezes, ou então, utilizar uma estrutura de condição simples (IF_THEN_ELSE)
várias vezes, podemos utilizar uma estrutura que indique que uma instrução será executada
quantas vezes forem necessárias. Observe o exemplo abaixo:
Algoritmo imprimir_de_1_ate_5;
Inicio
escreva (1);
escreva (2);
escreva (3);
escreva (4);
escreva (5);
Fim
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 27 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

No exemplo acima, utilizamos a instrução “escreva” repetidas vezes. Para o algoritmo aci-
ma, a quantidade de cinco instruções que utilizamos é bem viável e não nos dá tanto trabalho
para codificação, porém pense em um algoritmo que precise imprimir milhares de vezes uma
sequência de números, ou seja, teremos um trabalho tremendo repetindo comandos, além da
necessidade de escrever as sequências de números corretamente.
Em virtude dos problemas apresentados, as linguagens de programação possuem solu-
ções para o problema apresentado acima. A maioria das linguagens de programação utiliza
estruturas de repetição para evitar esses problemas: Para (For), Enquanto (While), Faça-En-
quanto (do-While).
O comando Para (For) – define uma estrutura (instruções) que será repetida por um núme-
ro determinado de vezes. Para que seja possível determinar quantas vezes precisamos execu-
tar as instruções, precisamos sempre definir um contador para o comando, isto é, podemos
implementar um loop pré-definido. Vejamos a sintaxe abaixo:
Para <variavel de controle> de <inicio> até <fim> [passo <incremento>]
<instruções>
Fim_Para
Observe que temos a separação do comando em três cláusulas:
• Preparação: <variável de controle> de <inicio>.
• Condição: <variável de controle> até <fim>.
• Incremento: passo <incremento>.

Vejamos os exemplos abaixo:


Algoritmo “UtilizandoComando_Para”;
Var
contador, soma: inteiro;
Inicio
soma:= 0;
Para contador de 1 até 100 faça:
soma:= soma + contador;
Fim_Para
escreva(“O somatório de 1 a 100 é: “, soma);
Fim
Vejamos uma representação de um algoritmo fazendo uso da estrutura de repetição com
o comando Para (For), utilizando fluxograma:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 28 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Observe outro exemplo:


Algoritmo Soma_Impares;
Var
num,soma: inteiro;
Inicio
soma ← 0;
Para (num de 1 até 100) faça:
Se (num mod 2 = 1) então:
soma ← soma+num;
Fim_Se
Fim_Para
escreva(“A soma dos números impares é:”soma);
Fim
O comando Enquanto (While) – esse comando de repetição se caracteriza por uma verifica-
ção de encerramento de atividades antes de se iniciar a execução de seu bloco de instruções.
Essa instrução é útil quando não sabemos ao certo a quantidade de repetições necessárias para
execução das instruções. Esta estrutura repete uma sequência de comandos enquanto uma de-
terminada condição (expressão lógica) for satisfeita. A sintaxe do comando segue abaixo:
Enquanto <expressão-lógica> faça:
<instruções>
Fim_Enquanto
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 29 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

A expressão-lógica é avaliada antes de cada repetição e, enquanto seu resultado for ver-
dadeiro, as instruções são executadas.
O comando Fim_Enquanto indica o fim das instruções que serão repetidas. Cada vez que a
execução atinge este ponto, retorna-se ao início do laço para que a expressão-lógica seja avaliada
novamente e assim sucessivamente, até que a condição seja falsa e o algoritmo seja finalizado.
Observe um exemplo do uso desse comando de repetição:
Algoritmo “UtilizandoComando_Enquanto”;
Var
contador, soma: inteiro;
Inicio
contador:= 1;
soma:= 0;
Enquanto contador < 1000 faça:
soma:= soma + contador;
contador:= contador + 1;
Fim_Enquanto
escreva(“O somatório de 1 a 100 é:”, soma);
Fim
Observe o algoritmo acima utilizando fluxograma:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 30 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

O comando Faça-Enquanto (Do-While) – a última estrutura de repetição que apresentaremos é


o comando Faça-Enquanto. O comando funciona de forma similar ao comando Enquanto, exceto
pelo fato de que a condição de controle só é testada após a execução do bloco de instruções, e
não antes, como é o caso do comando Enquanto. Outra diferença se refere aos comandos que são
repetidos pelo menos uma vez, já que a condição de parada se encontra ao final. Vejamos a
sintaxe abaixo:
Faça
<bloco de instruções>
Enquanto <condição booleana>
O comando Faça-Enquanto é utilizado sempre que tivermos certeza de que o bloco de ins-
truções será executado ao menos uma vez, sem a necessidade do teste na entrada do bloco.
Observe o exemplo abaixo.
Algoritmo Soma_Media;
Var
contador: inteiro;
valor, soma, media: real;
Inicio
contador ← 0;
soma ← 0;
Faça:
escreva(“Entre com um valor:”);
leia(valor);
soma ← soma + valor;
contador ← contador + 1;
Enquanto (contador >= 100);
media ← soma/contador;
escreva(“Soma:”, soma);
escreva(“Média:”, media);
Fim

1.6. Sub-Rotinas
A utilização de sub-rotinas em algoritmos/programas, conhecidas também por módulos ou
subprogramas, tem se tornado muito comum e bastante útil para organização de um algoritmo.
Uma rotina é um conjunto de instruções (algoritmo), já a sub-rotina, subprograma ou
módulo é uma parte menor desse conjunto de instruções que, em geral, será utilizado re-
petidamente em diferentes locais do sistema e que resolve um problema mais específico,
parte do problema maior.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 31 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Com o aumento da complexidade dos problemas a serem solucionados, os algoritmos es-


tão cada vez mais densos, e, como solução, surgiu a necessidade de dividir esses problemas
maiores em menores, com o objetivo de simplificar os algoritmos.
Uma sub-rotina é um algoritmo que, geralmente, encerra em si próprio uma parte da solu-
ção de um problema maior, que costuma ser o algoritmo a que essa sub-rotina está subordi-
nada. As sub-rotinas são importantes para:
• Subdividir algoritmos complexos e facilitar o entendimento.
• Melhor estruturação de algoritmos, facilitando a identificação de erros e documentação.
• Modularização, facilitando a manutenção e reutilização de sub-rotinas já implementadas.
• Redução de código duplicado.
• Decomposição de problemas grandes em pequenas partes.

Uma característica importante está na reutilização, pois tem sido adotada em soluções
por muitos grupos de desenvolvimento, pois diminui o retrabalho e gera economia de tempo.
Ao desenvolver de novo um sistema, devemos tentar ao máximo utilizar sub-rotinas já
existentes, como bibliotecas, de modo que a quantidade de software realmente novo que deve
ser desenvolvido seja minimizada.
Na maioria das vezes, as sub-rotinas são úteis para encerrar em si uma certa sequência
de comandos, pois, em algumas situações, esse subprograma é chamado várias vezes em um
algoritmo e, nestes casos, proporcionam uma redução do tamanho de algoritmos maiores.
Todo o código do algoritmo é dividido em algoritmo principal e diversos subprogramas.
O algoritmo principal é aquele por onde a execução do algoritmo sempre se inicia, sendo que
este pode eventualmente invocar as demais sub-rotinas.
Sub-rotinas são de instruções que realizam tarefas específicas, por isso segue algumas
características importantes:
• Carregado uma vez e pode ser executado quantas vezes for necessário.
• Podem ser usadas para economizar espaço e tempo de programação, já que podem ser
usadas várias vezes em um mesmo programa.

Observe a estrutura de uma sub-rotina:


Algoritmo <nome do algoritmo>
Var
<definição das variáveis globais>
<definições das sub-rotinas>
Inicio
<corpo do algoritmo principal>
Fim
Durante a execução do algoritmo principal, ao encontrar uma chamada de uma sub-roti-
na, a execução desse algoritmo é interrompida e, a partir daí, a execução é passada para os

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 32 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

comandos definidos no corpo dessa sub-rotina, que, ao término, retorna ao último ponto de
execução do algoritmo principal, local onde houve a interrupção e a invocação da sub-rotina,
prosseguindo para instrução imediatamente seguinte.
Vale destacar que as sub-rotinas podem ser uma função ou um procedimento, sendo que
a grande diferença é que no primeiro retorna‑se um valor e no segundo, não.

Funções

As funções são definidas como entidades separadas do algoritmo principal. Uma função
retorna um só valor, a partir de um determinado conjunto de argumentos.
São um tipo especial de procedimento em que, depois que a chamada é executada, o valor
calculado é retornado no nome da função que passa a ser uma variável da expressão.
Observe a sintaxe e estrutura de criação de uma função:
Funcao <nome> (<parâmetros> ) <tipo_de_dado>
Var
<variáveis locais>
Inicio
<instruções>
Fim
Temos que:
• <nome> nome simbólico pelo qual a função é invocada.
• <parâmetros> lista de parâmetros da função.
• <tipo de dado> tipo de dado da informação retornado pela função ao algoritmo chamador.
• <variáveis locais> definição das variáveis locais que são utilizadas somente pela função.
• <instruções> demais instruções do corpo da função.

No corpo do algoritmo principal, o comando de invocação de um subprograma do tipo fun-


ção sempre aparece dentro de uma expressão do mesmo tipo de dado que o valor retornado
pela função, que é chamada por meio do simples aparecimento do nome da função, seguido
pelos respectivos parâmetros entre parênteses.
Após o término da execução da função, o trecho do comando que realizou a chamada é
substituído pelo valor retornado pela função chamada dentro da expressão em que se encontra.
Além disso, no corpo da função, há o comando “retorne <expressão>”, que é usado para retor-
nar o valor calculado. Ao encontrar o comando retorne, a expressão entre parênteses é avaliada, a
execução da função é encerrada e o valor da expressão é retornado ao algoritmo principal.
Vale lembrar que uma expressão pode ser uma simples constante, uma variável ou uma
combinação das duas por meio de operadores. Essa expressão deve ser do mesmo tipo que o
valor retornado pela função.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 33 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

O algoritmo a seguir é um exemplo do emprego de uma função para calcular o valor de um


número elevado ao quadrado:
Algoritmo Exemplo_de_funcao;
Var
X, Y, Z: real;
funcao media(n1, n2: real): real
Var
med: real;
Inicio
med ← (n1+n2)/2;
retorne med;
Fim
Inicio
escreva(“Digite a nota 1”);
escreva(“Digite a nota 2”);
leia(X);
leia(Y);
Z ← Media(X,Y);
escreva (“A sua média é”, Z);
Fim

Procedimentos

O procedimento é um algoritmo que é executado, enquanto a função é um algoritmo que


será executado e irá produzir um resultado, ou seja, retornar um valor, que poderá ser usado
no algoritmo onde a função é chamada.
Vale ressaltar que a chamada de um procedimento nunca surge no meio de expressões,
como no caso de funções. A chamada de procedimentos só é feita em comandos isolados
dentro de um algoritmo, como as instruções de entrada (leia) e saída (escreva) de dados.
Além disso, são estruturas que agrupam um conjunto de comandos, que são executados
quando o procedimento é chamado.
Observe a sintaxe de um procedimento:
Procedimento <nome> ( <parâmetros> )
Var
<variáveis locais>
Inicio
<demais instruções>
Fim
Em que:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 34 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

• <nome> nome simbólico pelo qual o procedimento é chamado.


• <parâmetros> parâmetros do procedimento.
• <variáveis locais> definições das variáveis locais, análoga ao das variáveis em algoritmos.
• <instruções> conjunto de instruções do corpo do procedimento.

Observe um exemplo:
Algoritmo Soma_Dois_Numeros;
Procedimento soma (a, b: inteiro)
Inicio
result ← a + b;
Fim
// Programa principal
Var
x,y, result: inteiro
Inicio
escreva(“entre com dois números:”);
soma(x,y);
escreva(“Resultado:”, result)
Fim

1.7. Mecanismos de Passagem de Parâmetros em Sub-Rotinas


As sub-rotinas utilizam parâmetros que são repassados durante a invocação desse
subprograma. Quando o módulo principal chama uma função ou procedimento, ele passa al-
guns valores chamados argumentos de entrada.
Esses argumentos de entrada podem se dar segundo dois mecanismos distintos: passa-
gem por valor (ou por cópia) ou passagem por referência
Passagem de Parâmetros por Valor (ou Por Cópia) – o parâmetro é calculado e uma cópia
de seu valor é fornecida ao parâmetro formal, no ato da invocação da sub-rotina. A execução
da sub-rotina prossegue normalmente e todas as modificações feitas no parâmetro formal
não afetam o parâmetro real, pois trabalha-se apenas com uma cópia dele. Observe um exem-
plo de passagem de parâmetro por valor:
inteiro funcao Soma(inteiro: a, inteiro: b)
Os parâmetros a e b são passados por valores do tipo inteiro.
A função “soma” também pode ser escrita da seguinte maneira:
inteiro funcao Soma(inteiro: a,b)
Quando mais de um valor é do mesmo tipo, eles podem ser separados por vírgulas.
Passagem de Parâmetros por Referência – é realizada quando o espaço de memória ocu-
pado pelos parâmetros é compartilhado. Nessa situação, as eventuais modificações feitas

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 35 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

afetam os parâmetros. Uma mesma sub-rotina pode utilizar diferentes mecanismos de passa-
gem de parâmetros e para diferenciar uns dos outros, convencionou-se colocar a palavra re-
servada “var” antes da definição dos parâmetros passados por referência. Observe um exem-
plo de passagem de parâmetro por referência:
inteiro funcao Soma2(inteiro: var a, inteiro: b)
Observe que a é um parâmetro passado por referência e b é um parâmetro passado
por valor.
Significa que a passagem por referência irá receber ou armazenar um endereço de memória
relacionada a uma variável, e não o valor de uma variável.

1.8. Variáveis Globais e Locais


Com a utilização das sub-rotinas, surgiu o conceito de variáveis globais e variáveis locais.
As variáveis globais são aquelas declaradas no algoritmo principal e visíveis, isto é, podem
ser usadas no algoritmo principal e por todas as demais sub-rotinas. Já as variáveis locais
são definidas dentro de uma sub-rotina e somente visíveis nessa sub-rotina, ou seja, sem
acesso para demais partes do algoritmo.
Vale salientar que o escopo das variáveis globais e locais são a região do programa onde
a variável é reconhecida e pode ser utilizada. As variáveis locais são aquelas que só têm va-
lidade dentro da função/procedimento na qual foram declaradas, já as variáveis globais têm
validades para todas as funções/procedimentos do programa principal.
As variáveis locais são passadas como parâmetros ou declaradas no início de cada fun-
ção e são conhecidas como parâmetros formais, pois recebem cópias dos valores passados
para a função, e as alterações no valor dos parâmetros não serão percebidas pelo programa
que chamou a função.
As variáveis globais são declaradas antes de todas as funções do programa.

As variáveis globais podem ser alteradas por todas as funções do programa. Se uma função
tem uma variável local com o mesmo nome de uma variável global, para aquela função a va-
riável é local. Evitar ao máximo o uso de variáveis globais, pois elas ocupam a memória por
mais tempo e tornam o programa mais difícil de ser compreendido.

Observe a aplicação de variáveis locais e variáveis globais no exemplo a seguir:


Algoritmo exemplo_variáveis_locais_e_globais;
Var
X: real //variável global;
I: inteiro //variável global;
funcao func(): real;

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 36 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Var
X: vetor [1..5] de inteiro // variável local
Y: caractere[10] // variável local
Inicio
<demais instruções>
Fim
Inicio
<demais instruções>
Fim

1.9. Recursividade (Recorrência)


É uma maneira de solucionar um problema por meio da instanciação de instâncias menores
do mesmo problema, ou seja, recursão é uma técnica em que uma função chama a si mesma.
Também podemos dizer que recursividade é o mecanismo da programação no qual uma
definição de função refere-se a ela mesma, assim função recursiva é uma função que é defi-
nida em termos de si mesma.
Recursividade é o mecanismo básico para repetições nas linguagens de programação.
As funções recursivas são em sua maioria soluções mais simples, se comparadas a fun-
ções tradicionais, já que executam tarefas repetitivas sem utilizar nenhuma estrutura de re-
petição, como for ou while.
Porém, vale ressaltar que essa simplicidade têm um preço que requer muita atenção em
sua implementação. Trazendo a recursividade para o nosso cotidiano, um ótimo exemplo está
na ação de contar um saco de moedas, em que cada ato de retirar uma moeda do saco preci-
saria de uma função “contar dinheiro” que corresponde a identificar qual é o valor da moeda e
somar à quantia que ainda está no saco.
Para identificar a quantia que ainda está no saco basta chamar a mesma função “contar
dinheiro” novamente, porém dessa vez deve ser considerado que a moeda tirada anteriormen-
te não está mais lá. Este processo de retirar uma moeda, identificar seu valor e somar com o
restante do saco se repete até que o saco esteja vazio. Quando o ponto de parada for atingido
e a função retornar o valor zero, indica que não há mais moedas a serem contados no saco.
Existem vantagens e desvantagens quanto ao uso de funções recursivas, pois um progra-
ma recursivo é mais elegante e menor que a sua versão iterativa, além de exibir com maior
clareza o processo utilizado, desde que o problema ou os dados sejam naturalmente definidos
por meio de recorrência.
Por outro lado, um programa recursivo exige mais espaço de memória e é, na grande maio-
ria dos casos, mais lento do que a versão iterativa.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 37 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

RESUMO
Na nossa primeira aula, vimos alguns conceitos importantes de Fundamentos de Progra-
mação, dentre eles tratamos dos algoritmos, que são sequências de passos finitos para exe-
cutar determinada tarefa. Os algoritmos possuem duas principais formas de representação,
o pseudocódigo, que representamos por meio do português estruturado, e o fluxograma, que
utiliza uma forma visual para representar a sequência de execução.
Vimos também que as palavras reservadas são componentes de uma linguagem de pro-
gramação e que não podem ser utilizadas como identificadores de variáveis e constantes.
Além disso, apresentamos os conceitos entre compiladores, que têm a função de analisar
todo o código a fim de traduzi-lo de uma vez, e o interpretador, que tem a função de conver-
são/análise do código fonte aos poucos, ou seja, sempre que uma instrução é executada.
Quanto aos tipos primitivos de dados, aprendemos os tipos número real e inteiro, lógico
e texto. Vimos a importância dessas estruturas como entrada e saída para produção de um
resultado específico. Mostramos a forma de declaração e inicialização e o quanto isso é im-
portante no mundo da linguagem de programação.
Vale ressaltar que as variáveis e constantes possuem regras específicas e que não pode-
mos nomeá-las de forma inadequada para evitar problemas na compilação ou interpretação,
a depender da linguagem de programação utilizada. Tratamos também de uma dica importan-
tíssima, que é a distinção entre caracteres maiúsculos e caracteres minúsculos, conhecida
por muitas linguagens de case sensitive.
Quanto aos operadores, aprendemos os aritméticos, que definem as operações que po-
dem ser realizadas sobre os números inteiros e reais; os relacionais, que são utilizados para
comparar números e literais, retornando valores lógicos; os lógicos, que funcionam da mesma
forma que os operadores da lógica matemática e utilizam dados lógicos; os de concatenação,
que são utilizados para juntar dois valores ou variáveis do tipo texto; e os de atribuição, que
são usados para definição de valor de uma variável.
Tratamos também sobre o controle de fluxo de programas e repetição tão importantes para
conhecermos um pouco mais sobre comandos que podem interferir na sequência de instruções
de um programa. Aprendemos os comandos Se...Fim_Se, que é uma estrutura condicional sim-
ples, em que o que é executado somente se a condição especificada retornar o valor verdadeiro
e, caso seja falso, nenhuma das instruções constantes na estrutura da seleção será executada.
Temos a estrutura condicional composta representada pelo comando Se..Senão..Fim_Se,
que trata de situações em que uma instrução ou conjunto de instruções é executado caso o
teste condicional especificado retorne o valor verdadeiro e, caso o resultado do teste seja
falso, outra instrução ou um conjunto de instruções é executado. Além disso, temos as es-
truturas de decisão de múltipla escolha, utilizando o comando Caso, que utiliza avaliação de
valores possíveis em uma variável.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 38 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Dando continuidade, vimos as estruturas de repetição que proporcionam ao nosso algorit-


mo a execução das tarefas repetidas de um determinado programa. Essas estruturas tratam
uma forma de executar blocos de comandos somente sob determinadas condições, mas com
a opção de repetir o mesmo bloco quantas vezes for necessário. Conhecemos as estruturas
Para (For), Enquanto (While) e Faça-Enquanto (do-While).
Vimos que o comando Para (for) define uma estrutura (instruções) que será repetida por
um número determinado de vezes. A estrutura Enquanto (While), que se caracteriza por uma
verificação de encerramento de atividades antes de se iniciar a execução de seu bloco de ins-
truções e o comando Faça-Enquanto (Do-While), que funciona de forma similar ao comando
enquanto, exceto pelo fato de que a condição de controle só é testada após a execução do
bloco de instruções e não antes.
Entramos no universo das sub-rotinas/módulos/subprogramas, que se subdividem em
funções que retorna um só valor, a partir de um determinado conjunto de argumentos ou pa-
râmetros e os procedimentos que são blocos de instruções que realizam tarefas específicas
sem retorno de valor.
Por fim, vimos o conceito e a aplicação de recursividade (recorrência) como mecanismo
da programação, no qual uma definição de função se refere a ela mesma, como uma forma
básica para repetições nas linguagens de programação. As funções recursivas são em sua
maioria soluções mais simples, se comparadas a funções tradicionais, já que executam tare-
fas repetitivas sem utilizar nenhuma estrutura de repetição.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 39 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

QUESTÕES DE CONCURSO
001. (CETAP/SEPLAD-PA/TÉCNICO EM GESTÃO PÚBLICA – INFORMÁTICA/2021) Analise
as afirmativas sobre os conceitos de programação e marque a alternativa correta:
I – O Código fonte é uma série de comandos escritos em um processador de textos de acordo
com uma linguagem de programação.
II – Para criar código objeto, o código fonte passa por um programa conhecido como linkeditor
para que possa gerar este código em linguagem de máquina.
a) Ambas as afirmativas estão corretas.
b) Somente a afirmativa I está correta.
c) Somente a afirmativa Il está correta.
d) Nenhuma das afirmativas está correta.

002. (QUADRIX/CRP-MG/ASSISTENTE ESPECIALIZADO EM TECNOLOGIA DE INFORMA-


ÇÃO/2021) Nas questões que avaliem conhecimentos de informática, a menos que seja explicita-
mente informado o contrário, considere que: todos os programas mencionados estejam em con-
figuração-padrão, em português; o mouse esteja configurado para pessoas destras; expressões
como clicar, clique simples e clique duplo refiram-se a cliques com o botão esquerdo do mouse; e
teclar corresponda à operação de pressionar uma tecla e, rapidamente, liberá-la, acionando-a ape-
nas uma vez. Considere também que não haja restrições de proteção, de funcionamento e de uso
em relação aos programas, arquivos, diretórios, recursos e equipamentos mencionados.
Assinale a alternativa que apresenta os delimitadores de início e fim de um bloco, utilizados na
programação.
a) BEGIN e END
b) IMPUT e OUTPUT
c) IF e THEN
d) DO e WHILE
e) IF e ELSE

003. (VUNESP/SEMAE DE PIRACICABA-SP/PROGRAMADOR JUNIOR/2021) Ao analisar


um programa elaborado, o programador identificou que uma subrotina recebia um parâmetro
X passado por referência. Portanto, ao ser chamada essa subrotina,
a) o endereço da variável original será passado como parâmetro, possibilitando que, caso a
subrotina altere o valor de X, o valor da variável original também seja alterado.
b) o endereço da variável original será passado como parâmetro, o que impedirá que a subroti-
na altere o valor de X e, por consequência, o valor da variável original.
c) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina altere
o valor de X, o valor da variável original também será alterado.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 40 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

d) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina altere
o valor de X, o valor da variável original não será alterado.
e) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina tente
alterar o valor de X, uma exceção será gerada, e o programa será interrompido.

004. (CESPE/CEBRASPE/BANESE/TÉCNICO BANCÁRIO/ÁREA DE INFORMÁTICA/DESEN-


VOLVIMENTO/2021) A respeito de análise estática de código e interoperabilidade de siste-
mas, julgue o item seguinte.
Métodos ou funções devem ser pequenos e ter apenas um objetivo.

005. (INSTITUTO AOCP/ITEP-RN/PERITO CRIMINAL/COMPUTAÇÃO/2021) Códigos de


programas podem ser compilados ou interpretados. Referente à compilação e à interpretação
de código, assinale a alternativa correta.
a) Desenvolvedores de linguagens de alto nível utilizam somente linguagens compiladas.
b) A interpretação do código se caracteriza principalmente pela geração do arquivo executável.
c) Com uma linguagem interpretada, é necessário ter o código-fonte acessível para que o pro-
grama seja executado.
d) O interpretador converte o programa inteiro, de uma única vez, para linguagem de máquina.
e) Caso não seja desejável um código-objeto como saída, após o procedimento de tradução ou
interpretação da linguagem de alto nível, uma linguagem compilada seria indispensável.

006. (INSTITUTO AOCP/CÂMARA DE TERESINA-PI/ANALISTA DE INFORMÁTICA/2021)


Assinale a alternativa que apresenta uma motivação válida para a passagem de parâmetro por
valor para uma função.
a) Economia de memória.
b) Garantia de que o valor da variável original não será alterado.
c) Garantia do uso do valor mais atual.
d) Melhor desempenho.
e) Compartilhamento de memória.

007. (IBADE/PREFEITURA DE JARU-RO/TÉCNICO EM INFORMÁTICA/2019) Em algumas


linguagens de programação utiliza-se estruturas lógicas. Uma delas consiste em executar uma
função até que determinada condição seja atendida, dentro do conceito: verifica a condição, e
executa se não estiver atendida. Trata-se da seguinte estrutura:
a) sequence.
b) if, then, else.
c) do until.
d) do while.
e) go to.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 41 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

008. (IDIB/CREME-RJ/TÉCNICO EM INFORMÁTICA/2019) Em termos de linguagens de progra-


mação, no que tange ao processo de execução de um código fonte desenvolvido por um programa-
dor, existem duas grandes estratégias que dividem as linguagens de programação conhecidas no
mercado. Marque a alternativa que indica corretamente o nome dessas duas estratégias.
a) Compilação e Tradução.
b) Recursão e Interpretação.
c) Tradução e Recursão.
d) Interpretação e Compilação.

009. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
Um programa recursivo é aquele que pode ser chamado várias vezes durante a execução de
um programa principal.

010. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
Um subprograma, também conhecido por função, pode receber e enviar dados ao programa
principal por meio dos parâmetros de entrada e saída da função.

011. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
As estruturas de controle, como “se” e “enquanto”, podem ser encontradas em todas as lingua-
gens de programação e em todos os algoritmos dos computadores.

012. (CESPE/CEBRASPE/MPC-PA/ANALISTA MINISTERIAL/TECNOLOGIA DA INFORMA-


ÇÃO/2019) Na programação estruturada, as estruturas características da técnica de modula-
rização são
a) matriz e registro.
b) mensagem e herança.
c) método e classe.
d) seleção e iteração.
e) procedimento e função.

013. (CESPE/CEBRASPE/TJ-AM/ANALISTA JUDICIÁRIO/ANALISTA DE SISTEMAS/2019)


De acordo com Clean Code, julgue o item subsecutivo.
Independentemente da linguagem de programação, uma função deve executar todos os pro-
cedimentos que estão sintetizados no seu nome, gerando uma função com múltiplos passos.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 42 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

014. (FCC/AFAP/ANALISTA DE FOMENTO/TECNOLOGIA DA INFORMAÇÃO/2019) Em uma


linguagem de programação, uma variável de um determinado tipo de dado inteiro usa 2 bytes
de memória para armazenar valores decimais inteiros. Essa variável poderá conter números
decimais inteiros na faixa de
a) -32768 até 32767.
b) -65536 até 65535.
c) -32768 até 32768.
d) -65536 até 65536.
e) 0 até 65536.

015. (CESPE/CEBRASPE/IFF/PROFESSOR/ENGENHARIA DA COMPUTAÇÃO/2018) Se a ins-


trução if (a b) é utilizada em um programa computacional, então está sendo usada linguagem de
a) baixo nível.
b) médio nível.
c) alto nível.
d) máquina.
e) montagem.

016. (IBADE/IPM-JP/ANALISTA PREVIDENCIÁRIO/ANALISTA DE INFORMÁTICA/ANALIS-


TA DE SISTEMAS E PROGRAMAÇÃO/2018) A maioria das linguagens de programação pos-
sui um tipo de dados chamado lógico que é utilizado para armazenar valores verdadeiros ou
falsos. Este tipo de dados também é conhecido como:
a) gausiano.
b) literal.
c) americano.
d) real.
e) booleano.

017. (QUADRIX/CRM-PR/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2018) A respeito


de análise e desenvolvimento de sistemas, julgue o item subsequente.
Lógica de programação é o método de traduzir comandos escritos de uma linguagem humana
para a linguagem de máquina.

018. (FAURGS/BANRISUL/DESENVOLVIMENTO DE SISTEMAS/2018) Considere as afirma-


ções abaixo sobre subprogramas.
I – Um subprograma é ativo se, depois de ter sido chamado, iniciou a execução, mas ainda não
a concluiu.
II – Toda unidade de programa chamadora é suspensa durante a execução do programa cha-
mado, o que implica a existência de somente um subprograma em execução em qualquer
dado momento.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 43 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

III – O controle sempre retorna ao chamador quando a execução do subprograma se encerra.


Quais estão corretas?
a) Apenas I.
b) Apenas II.
c) Apenas III.
d) Apenas I e II.
e) I, II e III.

019. (CESPE/CEBRASPE/EBSERH/TÉCNICO EM INFORMÁTICA/2018) Acerca das caracte-


rísticas das principais linguagens de programação, julgue o item seguinte.
Linguagem de programação de alto nível consiste de um conjunto de símbolos, palavras e re-
gras próximo da linguagem humana, e que é fácil de escrever, depurar e manter.

020. (CESPE/CEBRASPE/EBSERH/TÉCNICO EM INFORMÁTICA/2018) Acerca das caracte-


rísticas das principais linguagens de programação, julgue o item seguinte.
Um computador executa, como instrução, uma sequência de baites, que consiste de coman-
dos, como, por exemplo, um algoritmo, a serem executados pelo processador.

021. (CESPE/CEBRASPE/ABIN/OFICIAL TÉCNICO DE INTELIGÊNCIA/ÁREA 6/2018) Com


relação a linguagens de programação e compiladores, julgue o item subsequente.
Um algoritmo computacional escrito em linguagem de programação pode ser completamente
executado sem gerar nenhuma saída.

022. (CESPE/CEBRASPE/ABIN/OFICIAL TÉCNICO DE INTELIGÊNCIA/ÁREA 8/2018) Jul-


gue o item subsequente, relativo à lógica de programação.
Na passagem de parâmetro por referência, é possível alterar o valor da variável que é apontada
por referência.

023. (COPERVE/UFSC/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2018) Para a ques-


tão, considere a existência de uma linguagem de programação fictícia, chamada “K”, que pos-
sui os seguintes comandos:
• comando de atribuição, que atribui um valor a uma variável. Por exemplo, na linha “v1 =
v2 + v3”, o comando está sendo usado para atribuir um valor para a variável v1, sendo
esse valor o resultado da soma dos valores das variáveis v2 e v3;
• comando de seleção, que executa um comando caso o valor de uma expressão seja
verdadeiro. Por exemplo, na linha “se (v1 == 5) {v2 = 7}”, o comando de atribuição será
executado somente se a expressão “v1 == 5” for verdadeira, ou seja, se o valor da variá-
vel v1 for igual a 5;

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 44 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

• comando de repetição, que executa um comando exatamente N vezes. Por exemplo, na


linha “repita 5 vezes {v1 = v1 + 3}”, o comando de atribuição será executado cinco vezes;
• comando de repetição, que executa um comando enquanto uma expressão for verdadeira.
Por exemplo, na linha “enquanto (v1 <= 6 E v2 == 3) {v1 = v1 - 3}”, o comando de atribuição
será executado enquanto as expressões “v1 <= 6” e “v2 == 3” forem verdadeiras, ou seja,
enquanto o valor da variável v1 for menor ou igual a 6 e o valor da variável v2 for igual a 3.
Considere o seguinte programa, escrito na linguagem K:
v1 = 1
v2 = 1
repita 3 vezes {
v3 = v1 + v2
v1 = v2
v2 = v3
}
v4 = v3
Qual será o valor da variável v4?
a) 6
b) 4
c) 5
d) 8
e) 3

024. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o


item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
Ao encontrar o comando while inserido no código de um sistema, o programador saberá que
se trata de um comando de seleção.

025. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o item


que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
Tanto as variáveis quanto as constantes são elementos importantes para o desenvolvimento
de sistemas.

026. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o


item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
O portugol é uma das formas de se representar um algoritmo.

027. (IESES/CEGÁS/ANALISTA DE GESTÃO/ECONOMISTA/2017) O programa que analisa e tra-


duz um código de alto nível, para a linguagem do computador (máquina) e que roda o código-fonte
escrito como sendo o código objeto, traduzindo o programa linha a linha, sendo que o programa vai
sendo utilizado na medida em que vai sendo traduzido, é denominado de:
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 45 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

a) Compilador.
b) Interpretador.
c) Editor de texto.
d) Depurador.

028. (CONSULPLAN/TRF – 2ª REGIÃO/TÉCNICO JUDICIÁRIO/INFORMÁTICA/2017) Um


algoritmo e, posteriormente, um programa recebem dados que precisam ser armazenados no
computador para serem utilizados no processamento. Esse armazenamento é feito na memó-
ria. Todo computador possui uma tabela que contém os seguintes itens que compõem uma
variável, EXCETO:
a) Tipo da variável.
b) Nome da variável.
c) Conteúdo da variável.
d) Identificador da variável.

029. (CESPE/SEDF/PROFESSOR DE EDUCAÇÃO BÁSICA/INFORMÁTICA/2017) Acerca de


linguagens de programação e J2EE e portais corporativos, julgue o seguinte item.
Em linguagem de programação, uma chamada de função é considerada uma abstração de
processo se não fornecer os detalhes para o chamador de como a execução será realizada.

030. (IF-CE/IF-CE/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2017) Em lógica de pro-


gramação, existe um artifício que, geralmente, economiza linhas de código com uma solução
elegante e eficaz de reúso do código, o qual faz uma chamada a si mesmo. Este artifício algo-
rítmico é denominado de
a) reusabilidade.
b) recursividade.
c) multitarefa.
d) multithreading.
e) fibonacci.

031. (INSTITUTO AOCP/CASAN/TÉCNICO DE ELETRÔNICA/2016) Quanto à linguagem de


texto estruturado, utilizada em linguagens de programação, é correto afirmar que
a) o comando de atribuição escolhe um ou um grupo de seus comandos componentes para
execução, com base em uma condição especificada.
b) um comando de seleção substitui o valor corrente de uma variável simples ou multi-elemen-
to pelo resultado da avaliação de uma expressão.
c) expressões são compostas de operadores e operandos, sendo que um operando pode ser:
um literal, uma variável, uma invocação de função ou outra expressão.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 46 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

d) comandos de controle de função e blocos de função especificam que o grupo de comandos


associado deve ser executado repetidamente.
e) comandos iterativos consistem de mecanismos para invocar blocos de função e para contro-
lar o retorno da entidade de invocação, antes do fim físico de uma função ou bloco de função.

032. (OBJETIVA/PREFEITURA DE CAXIAS DO SUL-RS/ASSISTENTE DE INFORMÁTICA/2016)


Dentro de uma linguagem de programação, o desenvolvedor ou programador necessita utilizar-se
de um recurso em que é possível guardar as informações, ou seja, armazenar os dados ou valores
para manipulá-los futuramente, com isso é possível agilizar e facilitar o trabalho do programador
no momento do desenvolvimento de um sistema. Esse recurso de armazenamento dentro de uma
linguagem de programação chama-se:
a) Métodos.
b) Chaves.
c) Flechas.
d) Variáveis.
e) Pontos.

033. (OBJETIVA/PREFEITURA DE CAXIAS DO SUL-RS/ASSISTENTE DE INFORMÁTI-


CA/2016) Assinalar a alternativa que preenche a lacuna abaixo CORRETAMENTE:
Uma linguagem de programação é case ___________ quando uma letra em caixa alta (maiúscu-
la) tem significado diferente da mesma letra em caixa baixa (minúscula).
a) simple
b) sensitive
c) cenary
d) double
e) bool

034. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) Quando um erro de


sintaxe ocorre é porque:
a) O programador não escreveu corretamente o comando.
b) O usuário não fez o que o programa pediu.
c) O programador não conhecia a semântica do comando escrito por ele.
d) A lógica do programa está errada.
e) A linguagem de programação usada não era adequada à solução do problema.

035. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) Em programação de


computadores uma sub-rotina pode ser uma função ou um procedimento. Sobre funções e
procedimentos, pode-se afirmar:

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 47 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

a) Que as funções retornam um único valor e procedimentos não retornam valores.


b) Que funções não retornam um único valor e procedimentos retornam valores.
c) Nem função nem procedimento retornam valores.
d) Funções sempre retornam valor do mesmo tipo recebido e procedimentos não.
e) Procedimentos retornam valores do mesmo tipo recebido e função nunca retornam tipo.

036. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) O programador de


computadores conta com diversas técnicas para melhorar os programas, tornando-os cada
vez melhores e mais simples, criando rotinas que podem ser chamadas por elas mesmas.
Marque a alternativa que possui o nome que é dado para esse tipo de rotina.
a) Recursiva
b) Modular
c) Orientada a objeto
d) Associativa
e) Comutadora

037. (FAFIPA/UFFS/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2014) Na programação


de computadores, variáveis são abstrações de endereços de memória. A variável que geral-
mente é declarada logo após o cabeçalho do programa, antes do início do programa principal,
que se torna VISÍVEL EM TODO O PROGRAMA, é conhecida como:
a) Variável transversal.
b) Variável global.
c) Variável unit.
d) Variável private.
e) Variável encapsulada.

038. (FUNDATEC/BRDE/ANALISTA DE SISTEMAS/DESENVOLVIMENTO DE SISTEMAS/2015)


Considere o trecho de código abaixo:
a = -1;
b = -2;
if ( a > b ) {
a = a + b;
} else {
b = a + b;
}
if ( a > b ) {
a = a + b;
} else {
b = a + b;
}
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 48 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Após a execução desse trecho de código, qual o valor das variáveis a e b, respectivamente?
a) -1 e -4
b) -3 e -5
c) -4 e -3
d) -5 e -2
e) 1 e 4.

039. (VUNESP/EMPLASA/ANALISTA DE GEOMÁTICA/ENGENHARIA DA COMPUTA-


ÇÃO/2014) Existem várias formas de se passarem parâmetros para uma sub-rotina. Na cha-
mada por referência, é passada para a sub-rotina uma
a) cópia do valor da variável, sendo possível alterar o conteúdo da variável original.
b) cópia do valor da variável, não sendo possível alterar o conteúdo da variável original.
c) informação de redundância a respeito das variáveis passadas, visando à confiabilidade
do processo.
d) referência para a variável, sendo possível alterar o conteúdo da variável original.
e) referência para a variável, não sendo possível alterar o conteúdo da variável original.

040. (CESPE/CEBRASPE/POLÍCIA CIENTÍFICA-PE/PERITO CRIMINAL/CIÊNCIA DA COM-


PUTAÇÃO/2016) Na linguagem de programação, a sintaxe é
a) a tradução de um programa de uma linguagem textual para uma linguagem de máquina.
b) a verificação de tipos, de fluxos de controle e da unicidade da declaração de variáveis.
c) a análise do código já otimizado e a produção de um código objeto definitivo para uma
máquina-alvo.
d) a produção de um código de testes para verificar se cada método funciona da forma prevista.
e) um conjunto de regras que define quais sequências de símbolos são consideradas expres-
sões válidas na linguagem.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 49 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

GABARITO
1. b 37. b
2. a 38. b
3. a 39. d
4. C 40. e
5. c
6. b
7. d
8. d
9. E
10. C
11. C
12. e
13. E
14. a
15. c
16. e
17. E
18. e
19. C
20. E
21. E
22. C
23. c
24. E
25. C
26. C
27. b
28. c
29. C
30. b
31. c
32. d
33. b
34. a
35. a
36. a

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 50 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

GABARITO COMENTADO
001. (CETAP/SEPLAD-PA/TÉCNICO EM GESTÃO PÚBLICA – INFORMÁTICA/2021) Analise
as afirmativas sobre os conceitos de programação e marque a alternativa correta:
I – O Código fonte é uma série de comandos escritos em um processador de textos de acordo
com uma linguagem de programação.
II – Para criar código objeto, o código fonte passa por um programa conhecido como linkeditor
para que possa gerar este código em linguagem de máquina.
a) Ambas as afirmativas estão corretas.
b) Somente a afirmativa I está correta.
c) Somente a afirmativa Il está correta.
d) Nenhuma das afirmativas está correta.

I – Certa. De fato, o código fonte é o código do programa que será gerado, por isso tem uma
série de comandos escritos em um processador. Os códigos fontes são desenvolvidos a gosto
dos programadores na linguagem de alto nível que eles julguem mais adequada ou que tenham
mais afinidade. Resumindo, é o conjunto de instruções e declarações escritas por um progra-
mador usando uma linguagem de programação de computador. Esse código é traduzido para
a linguagem de máquina por um compilador quando este estiver ativo.
II – Errada. Quem cria código objeto é o compilador, e não o ligador. O ligador entra depois,
adicionando bibliotecas e criando o programa executável. Se o programa contiver chamadas a
funções das bibliotecas (função cosseno, por exemplo) o ligador junta o programa-objeto com
a(s) respectiva(s) biblioteca(s) e gera um código-executável (ou programa-executável).
Letra b.

002. (QUADRIX/CRP-MG/ASSISTENTE ESPECIALIZADO EM TECNOLOGIA DE INFORMA-


ÇÃO/2021) Nas questões que avaliem conhecimentos de informática, a menos que seja ex-
plicitamente informado o contrário, considere que: todos os programas mencionados estejam
em configuração-padrão, em português; o mouse esteja configurado para pessoas destras; ex-
pressões como clicar, clique simples e clique duplo refiram-se a cliques com o botão esquerdo
do mouse; e teclar corresponda à operação de pressionar uma tecla e, rapidamente, liberá-la,
acionando-a apenas uma vez. Considere também que não haja restrições de proteção, de fun-
cionamento e de uso em relação aos programas, arquivos, diretórios, recursos e equipamentos
mencionados.
Assinale a alternativa que apresenta os delimitadores de início e fim de um bloco, utilizados na
programação.
a) BEGIN e END
b) IMPUT e OUTPUT
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 51 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

c) IF e THEN
d) DO e WHILE
e) IF e ELSE

O bloco de comandos começa com a palavra reservada BEGIN e termina com a palavra reser-
vada END. Pode conter procedimentos e funções.
Letra a.

003. (VUNESP/SEMAE DE PIRACICABA-SP/PROGRAMADOR JUNIOR/2021) Ao analisar


um programa elaborado, o programador identificou que uma subrotina recebia um parâmetro
X passado por referência. Portanto, ao ser chamada essa subrotina,
a) o endereço da variável original será passado como parâmetro, possibilitando que, caso a
subrotina altere o valor de X, o valor da variável original também seja alterado.
b) o endereço da variável original será passado como parâmetro, o que impedirá que a subroti-
na altere o valor de X e, por consequência, o valor da variável original.
c) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina altere
o valor de X, o valor da variável original também será alterado.
d) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina altere
o valor de X, o valor da variável original não será alterado.
e) uma cópia do valor da variável original é passada como parâmetro e, caso a subrotina tente
alterar o valor de X, uma exceção será gerada, e o programa será interrompido.

Quando um parâmetro é passado por referência, o endereço de memória da variável é utilizado


para passar para a função. As manipulações/alterações efetuadas nos parâmetros dentro das
funções afetam diretamente as variáveis usadas nas chamadas.
Letra a.

004. (CESPE/CEBRASPE/BANESE/TÉCNICO BANCÁRIO/ÁREA DE INFORMÁTICA/DESEN-


VOLVIMENTO/2021) A respeito de análise estática de código e interoperabilidade de siste-
mas, julgue o item seguinte.
Métodos ou funções devem ser pequenos e ter apenas um objetivo.

Um dos propósitos da análise estática de código é enfatizar a construção de um código limpo


(chamado também de clean code), e uma das boas práticas do clean code é exatamente a de

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 52 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

que métodos ou funções devem ser pequenos (tanto no tamanho do nome de cada método
quanto no tamanho do corpo do método) e devem ter apenas um objetivo (evitar construir mé-
todos com mais de um objetivo).
Certo.

005. (INSTITUTO AOCP/ITEP-RN/PERITO CRIMINAL/COMPUTAÇÃO/2021) Códigos de


programas podem ser compilados ou interpretados. Referente à compilação e à interpretação
de código, assinale a alternativa correta.
a) Desenvolvedores de linguagens de alto nível utilizam somente linguagens compiladas.
b) A interpretação do código se caracteriza principalmente pela geração do arquivo executável.
c) Com uma linguagem interpretada, é necessário ter o código-fonte acessível para que o pro-
grama seja executado.
d) O interpretador converte o programa inteiro, de uma única vez, para linguagem de máquina.
e) Caso não seja desejável um código-objeto como saída, após o procedimento de tradução ou
interpretação da linguagem de alto nível, uma linguagem compilada seria indispensável.

Os códigos de programas podem ser compilados ou interpretados a depender da linguagem de


programação utilizada. Inclusive, em algumas delas, esses dois conceitos são unidos. Compi-
ladores, montadores, depuradores e interpretadores são programas para auxiliar o desenvol-
vedor na sua tarefa de criar um projeto, adaptar ou ainda transformar de uma linguagem de
programação para outra.
A função de compiladores e interpretadores é deixar mais fácil a conversão dessas lingua-
gens de programação para a linguagem de máquina, que é a que de fato será rodada pelo
computador.
a) Errada. Como dito, em muitas linguagens, existem as duas características. Não existe essa
relação proposta pela questão, já que uma coisa não tem relação com a outra. O alto nível pode
usar tanto linguagem interpretada como compilada, a depender do desenvolvedor e de suas
habilidades.
b) Errada. Essa é uma característica da linguagem compilada.
c) Certa. Com a linguagem interpretada, é necessário o código-fonte, já que o programa precisa
acessá-lo para fazer a interpretação e depois rodá-lo no processador.
d) Errada. Essa é a característica do compilador, e não do interpretador, o qual faz esse proces-
so passo a passo.
e) Errada. O erro da questão é o não. O código-objeto é característica do compilador. Também
é chamado de módulo objeto.
Letra c.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 53 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

006. (INSTITUTO AOCP/CÂMARA DE TERESINA-PI/ANALISTA DE INFORMÁTICA/2021)


Assinale a alternativa que apresenta uma motivação válida para a passagem de parâmetro por
valor para uma função.
a) Economia de memória.
b) Garantia de que o valor da variável original não será alterado.
c) Garantia do uso do valor mais atual.
d) Melhor desempenho.
e) Compartilhamento de memória.

Na passagem de parâmetro por valor, uma cópia do valor de um argumento é feita no parâme-
tro da função (aqueles entre os parênteses). Ao fazer essa cópia do valor, qualquer alteração
feita no parâmetro não terá nenhum efeito nas variáveis usadas para chamá-la.
Na passagem de parâmetro por referência, passamos todo o endereço do argumento para o
parâmetro. Devido a isso, qualquer alteração feita no parâmetro afeta a variável usada para
chamar a função, pois dentro da função é usado o endereço real do argumento para acessá-lo
na hora da chamada da função.
Letra b.

007. (IBADE/PREFEITURA DE JARU-RO/TÉCNICO EM INFORMÁTICA/2019) Em algumas


linguagens de programação utiliza-se estruturas lógicas. Uma delas consiste em executar uma
função até que determinada condição seja atendida, dentro do conceito: verifica a condição, e
executa se não estiver atendida. Trata-se da seguinte estrutura:
a) sequence.
b) if, then, else.
c) do until.
d) do while.
e) go to.

Comentando primeiro o gabarito da prova, a banca deu como resposta o comando “do while”.
O comando “do while” irá executar um bloco de comandos, pelo menos uma vez, para em se-
guida testar a condição. Isso significa que ele executa a primeira vez sem fazer teste algum,
porém depois da primeira execução ele faz um teste e caso a condição seja verdadeira ele
continua executando, e, consequentemente, se a condição testada for falsa, a execução do
programa é encerrada. A primeira parte do comando (do) é imperativa, ou seja, faça isso (o
que está dentro do bloco de comandos) e não se preocupe com nada. A segunda parte (while)
é condicional e só será executada se a condição que está ali dentro do while for verdadeira.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 54 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Perceba que a questão pede que primeiro seja verificada uma condição para depois a instru-
ção ser executada, apenas se a condição for satisfeita. Dessa forma, o comando “do while” não
atende aos requisitos solicitados pela questão.
Diante disso, acredito que a questão deveria ter sido anulada, pois o comando “do while” pri-
meiro executa a instrução para depois verificar se a condição será atendida.
O comando “sequence” é utilizado quando se quer usar números sequenciais em uma tabela.
O comando “if...then...else” é um comando de seleção. Testa uma condição inicial (if), caso
seja verdadeira executa o bloco de comandos (then); caso seja falsa, ele irá executar outras
instruções (else).
O comando “do until” repete uma instrução até que ela se torne verdadeira.
O comando “go to” é um comando praticamente banido que direciona para algum lugar pré-de-
finido da aplicação. Em português, significa vá para.
Letra d.

008. (IDIB/CREME-RJ/TÉCNICO EM INFORMÁTICA/2019) Em termos de linguagens de pro-


gramação, no que tange ao processo de execução de um código fonte desenvolvido por um
programador, existem duas grandes estratégias que dividem as linguagens de programação
conhecidas no mercado. Marque a alternativa que indica corretamente o nome dessas duas
estratégias.
a) Compilação e Tradução.
b) Recursão e Interpretação.
c) Tradução e Recursão.
d) Interpretação e Compilação.

Em termos de linguagens de programação, no que tange ao processo de execução de um código fon-


te desenvolvido por um programador, existem duas grandes estratégias que dividem as linguagens
de programação conhecidas no mercado, que são as linguagens compiladas e as interpretadas.
Linguagem compilada é uma linguagem de programação em que o código fonte, nessa linguagem,
é executado diretamente pelo sistema operacional ou pelo processador, após ser traduzido por
meio de um processo chamado compilação, usando um programa de computador chamado com-
pilador, para uma linguagem de baixo nível, como linguagem de montagem ou código de máquina.
Linguagem interpretada é uma linguagem de programação em que o código fonte, nessa lingua-
gem, é executado por um programa de computador chamado interpretador, que, em seguida, é
executado pelo sistema operacional ou processador. Mesmo que um código em uma linguagem
passe pelo processo de compilação, a linguagem pode ser considerada interpretada se o programa
resultante não for executado diretamente pelo sistema operacional ou processador. Este processo
de interpretação da linguagem intermediária durante a execução do programa, consiste na tra-
dução dos comandos da linguagem intermediária para linguagem de máquina. Sendo assim, em

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 55 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

tempo de execução, o código intermediário pode ser encarado como um “código fonte” que será
compilado dinamicamente pelo interpretador da linguagem em código de máquina.
Letra d.

009. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
Um programa recursivo é aquele que pode ser chamado várias vezes durante a execução de
um programa principal.

A questão apresenta o conceito da recursividade, mas erra por não ter sido claro como ocorre
a chamada, já que existem várias formas de fazer chamadas no código, como as estruturas de
repetição. O programa recursivo chama a si mesmo durante a execução do programa, compor-
tando-se como uma pilha de tarefas que se repetem.
A recursividade é nada mais nada menos do que uma função dentro da outra, e ela deve ser
pensada como uma pilha (estrutura de dados em que o último a entrar, deve ser o primeiro a
sair). A estrutura dela consiste em descer até a base fazendo os cálculos ou as rotinas de cada
instrução, e então da base até o topo da pilha são empilhados os resultados de cada instrução
e, no final, o topo contém o resultado que é retornado.
Errado.

010. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
Um subprograma, também conhecido por função, pode receber e enviar dados ao programa
principal por meio dos parâmetros de entrada e saída da função.

Subprograma é um programa que auxilia o programa principal por meio da realização de uma
determinada subtarefa. Também costuma receber os nomes de sub-rotina, procedimento,
método ou módulo. Os subprogramas são chamados dentro do corpo do programa principal
como se fossem comandos. Subprograma é gênero que contém as espécies funções e pro-
cedimentos. Temos os programas principais e dentro deles os subprogramas para fazer uma
tarefa específica. Os subprogramas realmente servem para auxiliar o programa principal, de
forma a administrar as entradas e saídas.
Certo.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 56 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

011. (QUADRIX/CREA-TO/ANALISTA DE SISTEMAS/2019) Quanto aos conceitos e às técni-


cas de programação de computadores, julgue o item.
As estruturas de controle, como “se” e “enquanto”, podem ser encontradas em todas as lingua-
gens de programação e em todos os algoritmos dos computadores.

É difícil afirmar que todos os algoritmos irão fazer de uma estrutura condicional ou de repeti-
ção, podemos criar algoritmos que executem uma sequência de instruções sem a necessidade
de controlar o fluxo ou o caminho que as instruções podem tomar. É uma afirmação muito
genérica, e entendo que o gabarito está incorreto.
Certo.

012. (CESPE/CEBRASPE/MPC-PA/ANALISTA MINISTERIAL/TECNOLOGIA DA INFORMA-


ÇÃO/2019) Na programação estruturada, as estruturas características da técnica de modula-
rização são
a) matriz e registro.
b) mensagem e herança.
c) método e classe.
d) seleção e iteração.
e) procedimento e função.

As linguagens estruturadas reduzem qualquer programa a três estruturas principais: sequên-


cia, seleção e repetição.
Sequencial, porque possui uma ordem de execução; seletiva, porque seleciona um trecho de código
dentre diversas opções de fluxo; e repetitiva, porque realiza a iteração de diversos trechos de código.
Além desses, há outro conceito fundamental quando se fala no paradigma estruturado: a mo-
dularidade. A modularidade permite que um programa seja mais legível com uma melhor ma-
nutenção e melhor desempenho por meio da programação estruturada.
Um módulo pode ser definido como um grupo de comandos, constituindo um trecho de algoritmo,
com uma função bem definida e o mais independente possível em relação ao resto do algoritmo.
A entrada de dados do módulo é conhecida como argumento, já a saída de dados é conhecida
como valor de retorno.
Os dois principais tipos de módulo são: função e procedimento. Em geral, a maior diferença
entre ambos é que a função sempre retorna algum valor, e o procedimento não retorna nenhum
valor, apenas executa alguma ação.
Letra e.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 57 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

013. (CESPE/CEBRASPE/TJ-AM/ANALISTA JUDICIÁRIO/ANALISTA DE SISTEMAS/2019)


De acordo com Clean Code, julgue o item subsecutivo.
Independentemente da linguagem de programação, uma função deve executar todos os pro-
cedimentos que estão sintetizados no seu nome, gerando uma função com múltiplos passos.

Clean Code é uma filosofia de desenvolvimento cujo principal objetivo é aplicar técnicas sim-
ples que visam a facilitar a escrita e leitura de um código, tornando-o de fácil compreensão e
revelando a sua real intenção.
Uma dessas boas práticas afirma que, para estruturar um código limpo, é necessário criar
funções simples, pequenas e claras. As funções devem ter apenas uma tarefa e, assim, saber
cumpri-la da maneira mais simples possível. Isso possibilita que um método seja reutilizado
diversas vezes em seu código, facilitando sua manutenção à longo prazo.
Errado.

014. (FCC/AFAP/ANALISTA DE FOMENTO/TECNOLOGIA DA INFORMAÇÃO/2019) Em uma


linguagem de programação, uma variável de um determinado tipo de dado inteiro usa 2 bytes
de memória para armazenar valores decimais inteiros. Essa variável poderá conter números
decimais inteiros na faixa de
a) -32768 até 32767.
b) -65536 até 65535.
c) -32768 até 32768.
d) -65536 até 65536.
e) 0 até 65536.

Se dissermos que 2 bytes representam inteiros, poderemos utilizar as 65536 combinações,


pois 2 bytes representam 16bits, dessa forma temos 216 = 65536. Assim, se quisermos apenas
os positivos com o zero, temos de [0, 65535].
Se quisermos ter números negativos e positivos, podemos dividir esse valor ao meio e dá
32768 para cada lado positivo e negativo, mas, como temos de ter o zero, vamos roubar um
valor ao lado positivo e então ficamos com o intervalo [-32768, 32767]. E ficamos com as mes-
mas 65536 combinações.
Letra a.

015. (CESPE/CEBRASPE/IFF/PROFESSOR/ENGENHARIA DA COMPUTAÇÃO/2018) Se a ins-


trução if (a b) é utilizada em um programa computacional, então está sendo usada linguagem de
a) baixo nível.
b) médio nível.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 58 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

c) alto nível.
d) máquina.
e) montagem.

As linguagens de alto nível possuem uma estrutura e palavras-chave que são mais próximas
da linguagem humana. Tornando os programas mais fáceis de serem lidos e escritos. Esta é a
sua principal vantagem sobre as linguagens de nível mais baixo. Os programas escritos nessas
linguagens são convertidos para a linguagem de baixo nível por meio de um programa denomi-
nado compilador ou de um interpretador.
Uma instrução típica de uma linguagem de alto nível é: if (A>10) then A:=A-7;.
Letra c.

016. (IBADE/IPM-JP/ANALISTA PREVIDENCIÁRIO/ANALISTA DE INFORMÁTICA/ANALIS-


TA DE SISTEMAS E PROGRAMAÇÃO/2018) A maioria das linguagens de programação pos-
sui um tipo de dados chamado lógico que é utilizado para armazenar valores verdadeiros ou
falsos. Este tipo de dados também é conhecido como:
a) gausiano.
b) literal.
c) americano.
d) real.
e) booleano.

Uma variável que recebe valores TRUE (Verdadeiro) ou FALSE (Falso) é do tipo booleano.
Letra e.

017. (QUADRIX/CRM-PR/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2018) A respeito


de análise e desenvolvimento de sistemas, julgue o item subsequente.
Lógica de programação é o método de traduzir comandos escritos de uma linguagem humana
para a linguagem de máquina.

Lógica de programação é a técnica de desenvolver algoritmos (sequências lógicas) para atin-


gir determinados objetivos dentro de certas regras baseadas na lógica matemática e em ou-
tras teorias básicas da ciência da computação, que depois são adaptadas para a linguagem de
programação utilizada pelo programador para construir seu software.
Errado.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 59 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

018. (FAURGS/BANRISUL/DESENVOLVIMENTO DE SISTEMAS/2018) Considere as afirma-


ções abaixo sobre subprogramas.
I – Um subprograma é ativo se, depois de ter sido chamado, iniciou a execução, mas ainda não
a concluiu.
II – Toda unidade de programa chamadora é suspensa durante a execução do programa cha-
mado, o que implica a existência de somente um subprograma em execução em qualquer
dado momento.
III – O controle sempre retorna ao chamador quando a execução do subprograma se encerra.
Quais estão corretas?
a) Apenas I.
b) Apenas II.
c) Apenas III.
d) Apenas I e II.
e) I, II e III.

Subprogramas são programas que auxiliam o programa principal e realizam tarefas específi-
cas. Podem ser chamados diretamente pelo programa principal ou indiretamente. São chama-
dos também de sub-rotinas, podendo implementar a recursividade na realização de tarefas.
Podem ainda ser usados para implementar funções trabalhando em conjunto com variáveis
globais e locais.
Subprograma é um programa que auxilia o programa principal por meio da realização de uma
determinada subtarefa. Também costuma receber os nomes de sub-rotina, procedimento,
método ou módulo. Os subprogramas são chamados dentro do corpo do programa principal
como se fossem comandos. Após seu término, a execução continua a partir do ponto onde foi
chamado. É importante compreender que a chamada de um subprograma simplesmente gera
um desvio provisório no fluxo de execução.
Há um caso particular de subprograma que recebe o nome de função. Uma função, além de
executar uma determinada tarefa, retorna um valor para quem a chamou, que é o resultado
da sua execução. Por este motivo, a chamada de uma função aparece no corpo do programa
principal como uma expressão, e não como um comando.
Cada subprograma, além de ter acesso às variáveis do programa que o chamou (são as vari-
áveis globais), pode ter suas próprias variáveis (são as variáveis locais), que existem apenas
durante sua chamada.
Ao se chamar um subprograma, também é possível passar determinadas informações que
recebem o nome de parâmetros (são valores que, na linha de chamada, ficam entre os parênte-
ses e que estão separados por vírgulas). A quantidade dos parâmetros, sua sequência e seus
respectivos tipos não podem mudar, devem estar de acordo com o que foi especificado na sua
correspondente declaração.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 60 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

I – Certa. Enquanto estiver realizando a sua tarefa, o subprograma é denominado ativo.


II – Certa. Cada subprograma tem apenas um único ponto de entrada, sendo assim, a unidade
chamadora é suspensa durante a execução do programa chamado.
III – Certa. O chamador é comandado pelo programa principal, dessa forma como o subpro-
grama é auxiliar, o controle volta ao chamador para que ele possa dar prosseguimento as ati-
vidades do código.
Letra e.

019. (CESPE/CEBRASPE/EBSERH/TÉCNICO EM INFORMÁTICA/2018) Acerca das caracte-


rísticas das principais linguagens de programação, julgue o item seguinte.
Linguagem de programação de alto nível consiste de um conjunto de símbolos, palavras e re-
gras próximo da linguagem humana, e que é fácil de escrever, depurar e manter.

Uma linguagem de alto nível possui uma estrutura e palavras-chave que são mais próximas da
linguagem humana, tornando os programas mais fáceis de serem lidos e escritos. Esta é a sua
principal vantagem sobre as linguagens de nível mais baixo. Os programas escritos nessas
linguagens são convertidos para a linguagem de baixo nível por meio de um programa, deno-
minado compilador ou de um interpretador.
Certo.

020. (CESPE/CEBRASPE/EBSERH/TÉCNICO EM INFORMÁTICA/2018) Acerca das caracte-


rísticas das principais linguagens de programação, julgue o item seguinte.
Um computador executa, como instrução, uma sequência de baites, que consiste de coman-
dos, como, por exemplo, um algoritmo, a serem executados pelo processador.

Na linguagem de máquina, a representação dos dados e das operações (instruções) que cons-
tituem um programa é baseada no sistema binário, que é a forma compreendida e executada
pelo hardware do sistema. Cada instrução é representada por uma sequência de bits.
Errado.

021. (CESPE/CEBRASPE/ABIN/OFICIAL TÉCNICO DE INTELIGÊNCIA/ÁREA 6/2018) Com


relação a linguagens de programação e compiladores, julgue o item subsequente.
Um algoritmo computacional escrito em linguagem de programação pode ser completamente
executado sem gerar nenhuma saída.

Um algoritmo tem que possuir os seguintes requisitos:


Finitude: um algoritmo deve sempre terminar após um número finito de etapas.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 61 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Definição: cada passo de um algoritmo deve ser definido com precisão; as ações a serem exe-
cutadas deverão ser especificadas rigorosamente e sem ambiguidades para cada caso.
Entrada: valores que são dados ao algoritmo antes que ele inicie. Essas entradas são tomadas
a partir de conjuntos de objetos especificados.
Saída: os valores resultantes das ações do algoritmo relacionadas com as estradas especificadas.
Eficácia: todas as operações a serem realizadas no algoritmo devem ser suficientemente bási-
cas, que podem, em princípio, ser feitas com precisão e em um período de tempo finito por um
homem usando papel e lápis.
Errado.

022. (CESPE/CEBRASPE/ABIN/OFICIAL TÉCNICO DE INTELIGÊNCIA/ÁREA 8/2018) Julgue


o item subsequente, relativo à lógica de programação.
Na passagem de parâmetro por referência, é possível alterar o valor da variável que é apontada
por referência.

Na passagem por referência, as variáveis interna e externa apontam para o mesmo endereço,
portanto alterações no valor da variável interna serão refletidas na variável externa. Na passa-
gem por valor, uma cópia do valor da variável externa é feita para outra posição de memória,
que será referenciada pela variável interna. Portanto, no caso de passagem por valor, se a vari-
ável interna é alterada, essa alteração não é refletida na variável externa.
Certo.

023. (COPERVE/UFSC/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2018) Para a ques-


tão, considere a existência de uma linguagem de programação fictícia, chamada “K”, que pos-
sui os seguintes comandos:
• comando de atribuição, que atribui um valor a uma variável. Por exemplo, na linha “v1 =
v2 + v3”, o comando está sendo usado para atribuir um valor para a variável v1, sendo
esse valor o resultado da soma dos valores das variáveis v2 e v3;
• comando de seleção, que executa um comando caso o valor de uma expressão seja
verdadeiro. Por exemplo, na linha “se (v1 == 5) {v2 = 7}”, o comando de atribuição será
executado somente se a expressão “v1 == 5” for verdadeira, ou seja, se o valor da variá-
vel v1 for igual a 5;
• comando de repetição, que executa um comando exatamente N vezes. Por exemplo, na
linha “repita 5 vezes {v1 = v1 + 3}”, o comando de atribuição será executado cinco vezes;
• comando de repetição, que executa um comando enquanto uma expressão for verdadeira.
Por exemplo, na linha “enquanto (v1 <= 6 E v2 == 3) {v1 = v1 - 3}”, o comando de atribuição
será executado enquanto as expressões “v1 <= 6” e “v2 == 3” forem verdadeiras, ou seja,
enquanto o valor da variável v1 for menor ou igual a 6 e o valor da variável v2 for igual a 3.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 62 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Considere o seguinte programa, escrito na linguagem K:


v1 = 1
v2 = 1
repita 3 vezes {
v3 = v1 + v2
v1 = v2
v2 = v3
}
v4 = v3
Qual será o valor da variável v4?
a) 6
b) 4
c) 5
d) 8
e) 3

Antes do laço de repetição, v1 = 1 e v2 = 1.


Na primeira iteração, v1 inicialmente vale 1, e v2 inicialmente vale 1. Logo v3 valerá 1 + 1 = 2.
v1 é atualizado com o valor atual de v2, logo v1 recebe 1. v2 é atualizado com o valor atual de
v3, logo v2 recebe 2.
Na segunda iteração, v1 inicialmente vale 1, e v2 inicialmente vale 2. Logo v3 valerá 1 + 2 = 3.
v1 é atualizado com o valor atual de v2, logo v1 recebe 2. v2 é atualizado com o valor atual de
v3, logo v2 recebe 3.
Na terceira iteração, v1 inicialmente vale 2, e v2 inicialmente vale 3. Logo v3 valerá 2 + 3 = 5. v1
é atualizado com o valor atual de v2, logo v1 recebe 3. v2 é atualizado com o valor atual de v3,
logo v2 recebe 5.
Após as três iterações, v4 é atualizado com o valor atual de v3, logo v4 recebe 5.
Letra c.

024. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o


item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
Ao encontrar o comando while inserido no código de um sistema, o programador saberá que
se trata de um comando de seleção.

O while não se trata de comando de seleção, mas sim de repetição.


Errado.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 63 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

025. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o


item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
Tanto as variáveis quanto as constantes são elementos importantes para o desenvolvimento
de sistemas.

Sem variáveis e constantes seria impossível criar um sistema computacional. Até o mais sim-
ples comando de somar dois números utiliza pelo menos uma variável.
Variável: é um objeto (uma posição, frequentemente localizada na memória) capaz de reter e
representar um valor ou expressão.
Constante: é um espaço reservado na memória para armazenar um valor que não muda com o
tempo (por exemplo, o valor de PI (3,1415)).
Certo.

026. (QUADRIX/CFO-DF/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2017) Julgue o


item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações.
O portugol é uma das formas de se representar um algoritmo.

O Portugol, ou pseudocódigo, é a forma mais comum de representar um algoritmo. Nela, escre-


ve-se um código “genérico”, que é fácil de ser adaptado a qualquer linguagem de programação.
Certo.

027. (IESES/CEGÁS/ANALISTA DE GESTÃO/ECONOMISTA/2017) O programa que analisa e


traduz um código de alto nível, para a linguagem do computador (máquina) e que roda o códi-
go-fonte escrito como sendo o código objeto, traduzindo o programa linha a linha, sendo que o
programa vai sendo utilizado na medida em que vai sendo traduzido, é denominado de:
a) Compilador.
b) Interpretador.
c) Editor de texto.
d) Depurador.

O interpretador pega uma instrução em linguagem de alto nível e a transforma em um tipo


de código intermediário (não de máquina, ainda). Somente quando o programa é chamado,
o interpretador de sua linguagem traduzirá a instrução do código intermediário em código de
máquina, ou seja, o computador precisa traduzir em tempo real para código de máquina. Já o
compilador traduz o programa inteiro em código de máquina de uma só vez e então o executa,
criando um arquivo que pode ser rodado (no Windows é chamado de executável). Durante a

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 64 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

tradução, ele gera um relatório de erros, caso existam, enquanto o interpretador interrompe a
tradução para código de máquina somente quando encontra o primeiro erro.
Letra b.

028. (CONSULPLAN/TRF – 2ª REGIÃO/TÉCNICO JUDICIÁRIO/INFORMÁTICA/2017) Um


algoritmo e, posteriormente, um programa recebem dados que precisam ser armazenados no
computador para serem utilizados no processamento. Esse armazenamento é feito na memó-
ria. Todo computador possui uma tabela que contém os seguintes itens que compõem uma
variável, EXCETO:
a) Tipo da variável.
b) Nome da variável.
c) Conteúdo da variável.
d) Identificador da variável.

Uma variável representa uma posição na memória, possuindo nome e tipo, cujo conteúdo pode
variar ao longo do tempo, durante a execução de um programa.
Letra c.

029. (CESPE/SEDF/PROFESSOR DE EDUCAÇÃO BÁSICA/INFORMÁTICA/2017) Acerca de


linguagens de programação e J2EE e portais corporativos, julgue o seguinte item.
Em linguagem de programação, uma chamada de função é considerada uma abstração de
processo se não fornecer os detalhes para o chamador de como a execução será realizada.

A abstração é um processo em que instâncias de elementos de um programa são formas de


acesso mais simples em termos de manipulação de dados que reduzem a complexidade na
manipulação destes elementos do programa. Uma sub-rotina pode ser uma abstração de da-
dos, pois isola seu funcionamento do programa principal para simplificar o código.
Certo.

030. (IF-CE/IF-CE/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2017) Em lógica de pro-


gramação, existe um artifício que, geralmente, economiza linhas de código com uma solução
elegante e eficaz de reúso do código, o qual faz uma chamada a si mesmo. Este artifício algo-
rítmico é denominado de
a) reusabilidade.
b) recursividade.
c) multitarefa.
d) multithreading.
e) fibonacci.
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 65 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Em programação, a recursividade é um mecanismo útil e poderoso que permite a uma função


chamar a si mesma direta ou indiretamente, ou seja, uma função é dita recursiva se ela contém
pelo menos uma chamada explícita ou implícita a si própria.
Letra b.

031. (INSTITUTO AOCP/CASAN/TÉCNICO DE ELETRÔNICA/2016) Quanto à linguagem de


texto estruturado, utilizada em linguagens de programação, é correto afirmar que
a) o comando de atribuição escolhe um ou um grupo de seus comandos componentes para
execução, com base em uma condição especificada.
b) um comando de seleção substitui o valor corrente de uma variável simples ou multi-elemen-
to pelo resultado da avaliação de uma expressão.
c) expressões são compostas de operadores e operandos, sendo que um operando pode ser:
um literal, uma variável, uma invocação de função ou outra expressão.
d) comandos de controle de função e blocos de função especificam que o grupo de comandos
associado deve ser executado repetidamente.
e) comandos iterativos consistem de mecanismos para invocar blocos de função e para contro-
lar o retorno da entidade de invocação, antes do fim físico de uma função ou bloco de função.

a) Errada. O comando de atribuição define ou redefine o valor armazenado no local de armaze-


namento indicado por um nome de variável. Na maioria das linguagens de programação impe-
rativas, o comando de atribuição é uma das declarações básicas. Quando falamos em esco-
lher ou controlar o fluxo de execução de um algoritmo, estamos nos referindo a operações de
seleção. A seleção é baseada no valor de uma expressão de controle, geralmente sendo uma
comparação de uma variável com um determinado valor. Os principais comandos de seleção
são Se...Fim-Se e Se...Senão...Fim_Se.
b) Errada. Aqui, temos a inversão dos conceitos de comandos de seleção e comandos de atri-
buição que acabamos de ver.
c) Certa. Expressões executam ações específicas, baseadas em um operador com um ou dois
operandos. Um operando pode ser uma constante, uma variável ou um resultado de função. Os
operadores são aritméticos, lógicos e relacionais.
d) Errada. Quando falamos em executar um conjunto de instruções de forma repetida, deve-
mos fazer uso das estruturas de repetição. As estruturas de repetição são usadas para repetir
uma série de operações semelhantes que são executadas para todos os elementos de uma
lista ou de uma tabela de dados, ou simplesmente para repetir um mesmo processamento até
que uma certa condição seja satisfeita.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 66 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

e) Errada. A ideia básica da iteração é fazer com que uma série de comandos seja repetida
enquanto uma determinada condição for verdadeira; quando a condição se tornar falsa, a re-
petição termina. Quando falamos em invocar blocos de instruções, estamos nos referindo a
sub-programas, como funções e procedimentos.
Letra c.

032. (OBJETIVA/PREFEITURA DE CAXIAS DO SUL-RS/ASSISTENTE DE INFORMÁTI-


CA/2016) Dentro de uma linguagem de programação, o desenvolvedor ou programador neces-
sita utilizar-se de um recurso em que é possível guardar as informações, ou seja, armazenar
os dados ou valores para manipulá-los futuramente, com isso é possível agilizar e facilitar o
trabalho do programador no momento do desenvolvimento de um sistema. Esse recurso de
armazenamento dentro de uma linguagem de programação chama-se:
a) Métodos.
b) Chaves.
c) Flechas.
d) Variáveis.
e) Pontos.

Uma variável é um objeto (uma posição, frequentemente localizada na memória) capaz de


reter e representar um valor ou expressão. Uma variável está associada a uma posição de me-
mória, cujo conteúdo pode ser modificado durante a execução do programa.
Letra d.

033. (OBJETIVA/PREFEITURA DE CAXIAS DO SUL-RS/ASSISTENTE DE INFORMÁTI-


CA/2016) Assinalar a alternativa que preenche a lacuna abaixo CORRETAMENTE:
Uma linguagem de programação é case ___________ quando uma letra em caixa alta (maiúscu-
la) tem significado diferente da mesma letra em caixa baixa (minúscula).
a) simple
b) sensitive
c) cenary
d) double
e) bool

Case-sensitive significa que caracteres em caixa alta e em caixa baixa são tratados de modo
diferente. Por exemplo, as palavras sum e SUM são consideradas diferentes.
Letra b.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 67 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

034. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) Quando um erro de


sintaxe ocorre é porque:
a) O programador não escreveu corretamente o comando.
b) O usuário não fez o que o programa pediu.
c) O programador não conhecia a semântica do comando escrito por ele.
d) A lógica do programa está errada.
e) A linguagem de programação usada não era adequada à solução do problema.

Os erros de sintaxe são causados ​​por não seguir as regras de linguagens de programação
específicas. Pense em erros de sintaxe como uma analogia quando se utilizam verbos e subs-
tantivos incorretamente em uma frase escrita em inglês. Assim, como um falante de inglês não
será capaz de entender a frase, o compilador ou intérprete da linguagem de programação não
poderá processar um bloco de código sintaticamente incorreto.
Letra a.

035. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) Em programação de


computadores uma sub-rotina pode ser uma função ou um procedimento. Sobre funções e
procedimentos, pode-se afirmar:
a) Que as funções retornam um único valor e procedimentos não retornam valores.
b) Que funções não retornam um único valor e procedimentos retornam valores.
c) Nem função nem procedimento retornam valores.
d) Funções sempre retornam valor do mesmo tipo recebido e procedimentos não.
e) Procedimentos retornam valores do mesmo tipo recebido e função nunca retornam tipo.

Uma rotina é um conjunto de instruções (algoritmo), já a sub-rotina, subprograma ou módulo é


uma parte menor desse conjunto de instruções que, em geral, será utilizado repetidamente em
diferentes locais do sistema e que resolve um problema mais específico, parte do problema
maior. As funções são definidas como entidades separadas do algoritmo principal. Uma fun-
ção retorna um só valor, a partir de um determinado conjunto de argumentos. Os procedimen-
tos são blocos de instruções que realizam tarefas específicas sem retorno de valor.
Letra a.

036. (IF-PA/IF-PA/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2016) O programador de


computadores conta com diversas técnicas para melhorar os programas, tornando-os cada
vez melhores e mais simples, criando rotinas que podem ser chamadas por elas mesmas.
Marque a alternativa que possui o nome que é dado para esse tipo de rotina.
a) Recursiva
b) Modular
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 68 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

c) Orientada a objeto
d) Associativa
e) Comutadora

Ao mencionar que o programa é chamado por ele mesmo por várias vezes, estamos falando da
característica de recursividade.
Letra a.

037. (FAFIPA/UFFS/TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO/2014) Na programação


de computadores, variáveis são abstrações de endereços de memória. A variável que geral-
mente é declarada logo após o cabeçalho do programa, antes do início do programa principal,
que se torna VISÍVEL EM TODO O PROGRAMA, é conhecida como:
a) Variável transversal.
b) Variável global.
c) Variável unit.
d) Variável private.
e) Variável encapsulada.

Uma variável global é uma variável acessível em todos os escopos de um programa de compu-
tador. As variáveis globais são declaradas antes de todas as funções do programa. Podem ser
alteradas por todas as funções do programa.
Letra b.

038. (FUNDATEC/BRDE/ANALISTA DE SISTEMAS/DESENVOLVIMENTO DE SISTE-


MAS/2015) Considere o trecho de código abaixo:
a = -1;
b = -2;
if ( a > b ) {
a = a + b;
} else {
b = a + b;
}
if ( a > b ) {
a = a + b;
} else {
b = a + b;
}

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 69 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Após a execução desse trecho de código, qual o valor das variáveis a e b, respectivamente?
a) -1 e -4
b) -3 e -5
c) -4 e -3
d) -5 e -2
e) 1 e 4.

Se a é igual a -1 e b é igual a -2, então -1 é maior que -2, então o primeiro trecho de código exe-
cuta a primeira condição (a>b), tendo como resultado a = -3. No segundo trecho de código, a,
que agora é igual a -3, passa a ser menor que b, que é igual a -2, então é executada a segunda
condição, resultando em b = -5.
Letra b.

039. (VUNESP/EMPLASA/ANALISTA DE GEOMÁTICA/ENGENHARIA DA COMPUTAÇÃO/2014)


Existem várias formas de se passarem parâmetros para uma sub-rotina. Na chamada por referência,
é passada para a sub-rotina uma
a) cópia do valor da variável, sendo possível alterar o conteúdo da variável original.
b) cópia do valor da variável, não sendo possível alterar o conteúdo da variável original.
c) informação de redundância a respeito das variáveis passadas, visando à confiabilidade
do processo.
d) referência para a variável, sendo possível alterar o conteúdo da variável original.
e) referência para a variável, não sendo possível alterar o conteúdo da variável original.

Passagem de parâmetro por valor recebe uma cópia da variável original e qualquer alteração
não refletirá na variável original. Passagem de parâmetro por referência recebe uma referência
para a própria variável e qualquer alteração refletirá na variável original.
Letra d.

040. (CESPE/CEBRASPE/POLÍCIA CIENTÍFICA-PE/PERITO CRIMINAL/CIÊNCIA DA COM-


PUTAÇÃO/2016) Na linguagem de programação, a sintaxe é
a) a tradução de um programa de uma linguagem textual para uma linguagem de máquina.
b) a verificação de tipos, de fluxos de controle e da unicidade da declaração de variáveis.
c) a análise do código já otimizado e a produção de um código objeto definitivo para uma má-
quina-alvo.
d) a produção de um código de testes para verificar se cada método funciona da forma prevista.
e) um conjunto de regras que define quais sequências de símbolos são consideradas expres-
sões válidas na linguagem.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 70 de 72
FUNDAMENTOS DE PROGRAMAÇÃO
Fundamentos de Programação – Parte I
Sérgio Sierro

Na ciência da computação, o termo sintaxe refere-se às regras que regem a composição de textos
com significado em uma linguagem formal, tal como uma linguagem de programação, isto é, os
textos para os quais faz sentido definir a semântica ou o significado, ou fornecer uma interpretação.
Letra e.

Sérgio Sierro
Pós-Graduando em Business Intelligence pela Anhanguera, Engenheiro da Computação pelo Instituto de
Estudos Superiores da Amazônia-IESAM. Atualmente é Técnico Judiciário no Tribunal Regional Federal
da 1ª Região e professor no Gran Cursos Online. Certificado em diversos fabricantes, como Microsoft
(MTA e MCSA) e VMWare (VSP, VTSP e VCA). Trabalhou na Oi S.A. como Business Development Manager-
BDM, onde ficou responsável na disseminação e apresentação do portfólio de Soluções de TI e Segurança.
Experiência como Consultor de Projetos e Pré-Vendas de Solução de TI como Datacenter, Virtualização,
Armazenamento e Backup, apoiando as mais diversas empresas em sua Transformação Digital.

O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 71 de 72
O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

Você também pode gostar